android小畫家畫畫軟件畢業(yè)設計_第1頁
android小畫家畫畫軟件畢業(yè)設計_第2頁
android小畫家畫畫軟件畢業(yè)設計_第3頁
android小畫家畫畫軟件畢業(yè)設計_第4頁
android小畫家畫畫軟件畢業(yè)設計_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、畢業(yè)設計設計題目: 系 別: 專業(yè)班級: 指導老師: 學生姓名: 2013年5月18日- 33 -四川工商職業(yè)技術學院摘要:在21世紀的今天,手機幾乎是每個人的必備品,特別是在高校的學生,不管是吃飯、睡覺、還是上課,手機總是不離手。而且手機更新換代更是日新月異,然后在現在的手機市場中android系統(tǒng)的智能機成為主流。我們這款畫畫小軟件正是在android系統(tǒng)的平臺上進行運行。在日常生活中,我們畫畫只能在紙上的時代已經過去,這款android小畫家畫畫軟件,可以進行簡單的簡筆畫操作、上色。既節(jié)約了增加了我們平時的樂趣,也節(jié)約了資源。該軟件具有改變畫圖的形狀、改變畫筆的顏色、改變畫刷的寬度、改變

2、畫畫的風格、以及保存、清除等功能。經過測試,這是一款能為我們生活增加樂趣的軟件。關鍵字:手機;android;畫畫軟件目錄第一章 引言- 1 -1.1發(fā)展情況- 1 -1.2研究現狀- 1 -1.3研究前景展望- 1 -1.4選題的目的及意義- 2 -第二章 系統(tǒng)可行性分析- 3 -2.1經濟可行性分析- 3 -2.2操作可行性分析- 3 -2.3技術可行性分析- 3 -2.3.1 eclipse概述- 3 -2.3.2 adt 概述- 4 -2.3.3 android sdk概述- 4 -2.3.4 java概述- 5 -第三章 需求分析- 6 -3.1軟件功能描述- 6 -3.2系統(tǒng)功能分

3、析- 7 -3.3軟件需求分析- 9 -3.4軟件概念結構設計- 9 -第四章 軟件詳細設計- 12 -4.1軟件設計原理- 12 -4.2軟件模塊設計- 12 -第五章 軟件測試- 30 -總結- 31 -參考文獻- 32 -致謝- 33 -四川工商職業(yè)技術學院第一章 引言1.1發(fā)展情況 在現在這個手機普及的時代,各種手機軟件也是層出不窮,尤其是在這兩年的飛速發(fā)展,android軟件可以是說席卷各大手機軟件網站,為android軟件開發(fā)者既帶來了收入的回報,也提出了技術的挑戰(zhàn)。android系統(tǒng)這個平臺以成為智能手機系統(tǒng)的核心,也是it技術行業(yè)、智能手機制造行業(yè)高度重視的。隨著android

4、系統(tǒng)的不斷更新,現在功能各方面已經非常強大,這不僅是一臺手機這么簡單,而是一個移動終端。各種軟件都有幾乎都有android系統(tǒng)的版本。同時用戶現在不僅要求手機有傳統(tǒng)手機的功能,現在必須更加具有娛樂性以及休閑性。抓住現在用戶的這個心理狀態(tài),于是android平臺上運行的小畫家畫畫軟件就運營而生了。1.2研究現狀就目前的android系統(tǒng)智能手機在市場的占有率來看,對android系統(tǒng)手機軟件的開發(fā)具有非常廣闊的前景。雖然在it行業(yè)中都處于一個飽和的狀態(tài),但是在android系統(tǒng)手機軟件開發(fā)這一方面又處于緊缺的狀態(tài),因為現在的手機用戶拿起手機不僅僅是只用來打打電話,發(fā)發(fā)短信這么簡單,用戶更加追求的

5、是手機的娛樂性和休閑性。說的更加簡單明了一點就是,用戶在無聊的時候可以用手機來消遣時間。android系統(tǒng)自2009年2月發(fā)布的android1.1開始已經有4年的發(fā)展歷史。然而在這短短四年時間就可以成為智能手機市場的領頭羊,那么對于我們開發(fā)android系統(tǒng)手機的軟件,也是同樣具有廣闊的市場。1.3研究前景展望隨著android系統(tǒng)智能手機的誕生,android系統(tǒng)打破了前些年智能手機的壟斷的傳統(tǒng)市場。同時android系統(tǒng)的手機軟件占據的手機軟件市場的比例越來越大,那么我們開發(fā)的畫畫涂鴉軟件是基于android系統(tǒng)的,可以說是具有廣闊的發(fā)展前景。而且現在用戶對手機軟件是否具有娛樂性有非常強

6、的選擇性,用戶對于空閑時間的消遣,還有即時聊天需要發(fā)送一個手繪涂鴉圖片的需要,那么對我們這款軟件的選擇是非常有用的。對于小畫家手機軟件具有一下優(yōu)點:(1)喜愛畫畫的用于,無論是在車上,還是站臺等車,都可以隨時隨地的進行簡筆畫畫畫的操作。(2)可以將畫好的圖片保存通過即時聊天工具發(fā)給好朋友分享自己的作品。(3)在手機上畫可以節(jié)約資源,在環(huán)保的角度,起到節(jié)能減排的效果。1.4選題的目的及意義為了鞏固在大學三年所學的知識,達到學以并用的目的,作為四川工商職業(yè)技術學院信息工程系軟件班大三的畢業(yè)生,希望在離開自己母校的時候能夠把自己所學的知識能夠做一次全面的鞏固和提高,我的選題意義如下:隨著androi

7、d系統(tǒng)的不斷升級,android系統(tǒng)智能手機的各種軟件對各方面的影響越來越大,并且android系統(tǒng)成為以后移動智能客戶終端的可能性同時也越來越大,那么未來android系統(tǒng)主導智能手機市場也是必然的發(fā)展趨勢。那么我們開發(fā)的這款畫畫小軟件也是順應時代發(fā)展的潮流,在傳統(tǒng)的按鍵手機,我們不能做出這個靈活的畫畫涂鴉軟件,現在我們借助android系統(tǒng)這個平臺來實現了這一功能。這樣不僅提高圖片的趣味性;建立生動有趣的圖片處理平臺,而且還提高手機的利用率。何樂而不為呢。第二章 系統(tǒng)可行性分析可行性研究的目的就是用最小的代價在盡可能短的時間內確定問題是否能夠解決??尚行匝芯康哪康牟皇墙鉀Q問題,而是確定問題

8、是否值得去解決??尚行匝芯烤褪沁M行一次大大壓縮簡化了的系統(tǒng)分析和軟件設計過程,也就是在較高層上以抽象的方式進行系統(tǒng)分析和軟件設計過程。2.1經濟可行性分析 在android系統(tǒng)各種手機軟件頻頻被開發(fā)出來的今天,那些軟件開放團隊如何進行軟件的開發(fā),以及開發(fā)出來的軟件有什么特色來吸引用戶,是越來越重要的問題。而我們這個小軟件內容簡單,開發(fā)周期短,投資小。投入運營后,提供免費下載,然后在軟件中植入廣告成分,來獲取利潤。所以該軟件為開發(fā)團隊所帶來的經濟效益會遠遠高于前期投入的資金。2.2操作可行性分析本軟件的開發(fā)工具是eclipse-sdk-4.2.1版本,eclipse內裝插件adt-21.0.0版

9、本以及android sdk 2.3.3。前端開發(fā)工具是java。這樣的eclipse就是一套完整的開發(fā)工具,用于生成后綴為apk的應用程序。之后將生成的apk應用程序安裝到手機就可以使用了。2.3技術可行性分析2.3.1 eclipse概述eclipse 是一個開放源代碼的、基于java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境。幸運的是,eclipse 附帶了一個標準的插件集,包括java開發(fā)工具(java development kit,jdk)。我們經常將 eclipse 當作 java 集成開發(fā)環(huán)境(ide)來使用,但 eclipse 的目

10、標卻不僅限于此。eclipse 還包括插件開發(fā)環(huán)境(plug-in development environment,pde),這個組件主要針對希望擴展 eclipse 的軟件開發(fā)人員,因為它允許他們構建與 eclipse 環(huán)境無縫集成的工具。由于 eclipse 中的每樣東西都是插件,對于給 eclipse 提供插件,以及給軟件開發(fā)人員提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。2.3.2 adt 概述 android開發(fā)工具(adt),作為eclipse工具插件,讓其支持android快速入門和便捷開發(fā),可通過eclipse啟動菜單(啟動eclipse后

11、,選擇help->install new software)安裝。adt開發(fā)工具,包括android dalvik debug moniter server(android ddms)和android development tools(adt),還有hierarchy viewer和traceview兩個查看器,看名稱就知道功能了。ddms可以提供調試設備時為設備截屏,查看線程及內存信息、logcat、廣播信息、模擬呼叫、接收短消息、文件查看器等功能(該功能在安裝完adt之后,點擊eclipse工具欄右上角的那個帶箭頭的小窗口圖標彈出菜單中打開)。 android developmen

12、t tools(adt)工具應該是為eclipse支持android項目快速編程開發(fā)和調試插件而已。2.3.3 android sdk概述sdk:(software development kit)軟件開發(fā)工具包。被軟件開發(fā)工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應用軟件的開發(fā)工具的集合。因此,android sdk 指的是android專屬的軟件開發(fā)工具包。下載好android sdk后,開始安裝,android sdk采用了java語言,所以需要先安裝jdk 5.0及以上版本。直接下載jdk安裝文件安裝更為方便。android sdk不用直接安裝,下載后,直接解壓即可,

13、 將下載后的sdk的壓縮包解壓到適當的位置,就這么簡單;sdk安裝ok。2.3.4 java概述java是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言,是由sun microsystems公司于1995年5月推出的java程序設計語言和java平臺(即javase, javaee, javame)的總稱。java 技術具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用于個人pc、數據中心、游戲控制臺、科學超級計算機、移動電話和互聯網,同時擁有全球最大的開發(fā)者專業(yè)社群。在全球云計算和移動互聯網的產業(yè)環(huán)境下,java更具備了顯著優(yōu)勢和廣闊前景。第三章 需求分析本設計為android系統(tǒng)手

14、機上的一個畫畫小軟件,該軟件主要是在eclipse開發(fā)工具上用java語言編寫的一個結果。eclipse 是一個開放源代碼的、基于java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務,用于通過插件組件構建開發(fā)環(huán)境。而java語言具有卓越的通用性、高效性、平臺移植性和安全性。eclipse編輯器引入了編輯環(huán)境方面的一些增強功能,諸如單詞補齊,增量搜索,代碼凸顯,縮進文本,標記行號,彩色打印,和快捷方式。eclipse編輯器還提供了許多為特定語言設計的功能,比如在你輸入原型和函數調用的時候它能夠自動完成這些字符串的輸入。生成的應用程序安裝到手機后,直接點擊打開,操作簡單明了,軟件具有形

15、狀的選擇、畫筆寬度的調整、畫筆顏色的改變、繪畫風格的改變、整屏清除以及保存等功能。3.1軟件功能描述小畫家畫畫軟件主要是提供給使用android系統(tǒng)智能手機的用戶,增加業(yè)余時間的趣味性。本軟件主要有簡筆畫畫、上色、保存等功能。(1) 形狀選擇,打開軟件,選擇菜單鍵,就會彈出菜單里面的功能,選擇形狀功能就可以自由的選擇需要的形狀,形狀有軌跡線、直線、矩形、橢圓形、圓形、點、還有橡皮擦等不同的形狀。(2) 清除,打開軟件,選擇菜單鍵,就會彈出菜單里面的功能,清除功能就是將所繪制的整張畫布全部清除。(3) 保存,打開軟件,選擇菜單鍵,就會彈出菜單里面的功能,如果繪畫好一張滿意的畫,選擇保存就可以將圖

16、保存在手機里面,以供自己以后欣賞或者與朋友分享。(4) 設置,打開軟件,選擇菜單鍵,就會彈出菜單里面的功能,選擇設置,就可以進入到設置畫面,設置里面有畫刷寬度的調節(jié)、畫筆顏色的選擇、畫畫風格的選擇、是否是全屏模式、目前所使用的版本、以及可以看到最后調試的時間與快捷鍵和對開發(fā)者的建議。3.2系統(tǒng)功能分析根據軟件的使用情況和面向對象,本軟件具備一下功能模塊以及操作方式:功能功能類別子功能用戶管理模塊setdrawing設置形狀clearcanvas清屏savetosdcard保存settingsactivity設置顏色管理模塊(color)colorpickerdialog顏色選擇畫刷大小管理模塊

17、(size)brush設置畫刷大小菜單用戶模塊功能描述用戶進入軟件并選擇操作操作序列1,點擊“形狀”選擇要形狀,默認軌跡線。2,點擊“清除”抹掉整張畫布的所有線條。3,點擊“保存”保存當前的所畫的畫。4,點擊“設置”進入更多的設置畫面。形狀形狀管理模塊功能描述用戶選擇圖形形狀操作序列1, 點擊menu按鈕,屏幕下方顯示菜單。2, 點擊“形狀”進入形狀設置。3, 選擇需要的形狀就可以了。清除清除管理模塊功能描述用戶需要清除整個畫布操作序列1, 點擊menu按鈕,屏幕下方顯示菜單。2, 點擊“清除”就把整張畫布清除了。保存保存管理模塊功能描述用戶需要保存所畫的畫操作序列3, 點擊menu按鈕,屏幕

18、下方顯示菜單。4, 點擊“保存”就將所畫的畫保存下來了。顏色顏色管理模塊功能描述用戶選擇畫刷顏色操作序列1, 點擊menu按鈕,屏幕下方顯示菜單。2, 點擊“設置”進入設置畫面。3, 點擊“顏色”就可以選擇自己喜歡的顏色了。畫刷大小畫刷大小管理模塊功能描述用戶選擇畫刷的大小操作序列1, 點擊menu按鈕,屏幕下方顯示菜單。2, 點擊“設置”進入設置畫面。3, 點擊“畫刷寬度”就可以設置合適的畫刷寬度了。風格畫畫風格管理模塊功能描述用戶選擇畫畫的風格操作序列1, 點擊menu按鈕,屏幕下方顯示菜單。2, 點擊“設置”進入設置畫面。3, 點擊“風格”就可以設置畫畫的風格了。模式畫圖模式管理模塊功能

19、描述用戶選擇畫圖的模式操作序列1, 點擊menu按鈕,屏幕下方顯示菜單。2, 點擊“設置”進入設置畫面。3, 點擊“全屏模式”就可以設置畫圖的模式了。3.3軟件需求分析隨著社會的發(fā)展,時代的進步,人們對生活品質的不斷提高,對生活的享受心理也越來越強,越來越注重休閑娛樂。只有抓住現在人們的心理需要才能在現在有得一席之地。同樣在手機軟件方面也是一樣的,現在的大多數人的手機里面占據一大部分內存的都是休閑娛樂的游戲,就是在無聊的時候打發(fā)時間的。而我們這款android小畫家畫圖軟件就是提供給那些愛畫簡筆畫的畫圖愛好者,所以,既然現在有這個需求,我們就可以滿足用戶的這個需要,開發(fā)這么一款畫圖的軟件。3.

20、4軟件概念結構設計這一設計階段是在需求分析的基礎上而進行的,設計出能夠滿足用戶需求的各種實體,以及它們之間的關系,為后面的邏輯設計打下基礎。概念結構的主要特點是:(1) 能真實、充分地反映現實世界,包括事物和事物之間的聯系,能滿足用戶對軟件功能的要求。(2) 易于理解,從而可以用它和不熟悉使用手機的用戶交換意見,用戶的積極參與是軟件開發(fā)設計成功的關鍵。(3) 易于更改,當應用環(huán)境和應用要求改變時,容易對概念模型修改和擴充。軟件開發(fā)在小畫家軟件開發(fā)中存在系統(tǒng)用例、開發(fā)人員與用戶、數據流程處理、數據表述等幾個對象的關系,具體描述如下面各圖所示。用戶管理開發(fā)維護后臺數據維護軟件更新開發(fā)人員系統(tǒng)用例圖

21、用戶小畫家軟件開發(fā)人員用戶信息軟件下載軟件信息用戶情況軟件升級建議反饋總體流程圖軟件管理用戶軟件信息軟件信息軟件下載條件 軟件情況開發(fā)人員下載信息軟件信息軟件信息下載條件軟件信息表用戶下載信息表用戶下載情況用戶信息下載量信息軟件信息下載信息下載量信息下載管理用戶管理下載量信息用戶信息開發(fā)人員用戶信息 用戶信息下載量信息用戶管理表數據流圖處理圖下載情況軟件卸載信息表軟件信息表用戶信息表開發(fā)團信息表下載信息表用戶排行表數據表述e-r圖 第四章 軟件詳細設計4.1軟件設計原理本軟件基于android系統(tǒng)智能手機,在android系統(tǒng)設備上運行,就像打開手機播放器一樣簡單打開軟件就可以操作。它是隨著a

22、ndroid系統(tǒng)手機的興起,借助android系統(tǒng)平臺開發(fā)的一個軟件。主要是利用不斷成熟的android系統(tǒng),結合java語言與xml而產生的軟件。java 語言具有卓越的通用性、高效性、平臺移植性和安全性,而可擴展標記語言xml是用于標記電子文件使其具有結構性的標記語言,可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。這樣開發(fā)的軟件不僅在界面上比較美觀,而且可以在android系統(tǒng)平臺上穩(wěn)定運行。4.2軟件模塊設計打開軟件即可進入到畫畫操作界面,也可以選擇各種各樣的功能,利用目前有的功能可以隨心所欲的畫出想要的簡筆畫,在選擇各種各樣的功能的時候也有界面的跳轉彈

23、出和菜單功能的選擇。因為現在是測試版本,不存在與互聯網連接的情況,這樣對用戶的私人隱私也具有絕對的安全保密,因為只是一款畫圖的軟件,所以我們不會訪問用戶的手機聯系人、短信、以及地理位置信息,同時也不需要獲得手機的任何權限,只是能夠運行和使用就可以了,這樣給開發(fā)團隊的建議也只能發(fā)在開發(fā)團隊的郵箱中。下面是軟件各種界面的截圖以及部分代碼。打開軟件,就如同打開音樂播放器一樣簡單,打開之后,就進入軟件的主界面,這就是一張畫布,可以在上面隨意畫自己喜歡的線條。這是軟件最基本,也是最重要的部分,在軟件中首先要創(chuàng)建這樣一個activity,才能展開其他的功能。首先要在手機界面創(chuàng)建一個這樣的畫布,這是我們最重

24、要的起步,創(chuàng)建一個界面activity,才能進行下一步的操作,用public公有類,因為主要是主界面activity涉及的其他很多方法的訪問,設置各種功能方法的類型、初始值。就如下所示,/* *主要視圖類 */public class paintpad extends viewfloat tempx, tempy;private bitmap bitmap = null;private canvas paper = null;boolean ismoving = false;drawing drawing = null;int bgcolor;context context;然后添加不同的功能

25、以及設置用setdrawing方法,設置繪畫背景色的狀態(tài)為初始默認狀態(tài)、繪畫形狀的當前狀態(tài)參數為默認空、屏幕上此時的信息為默認初始狀態(tài)。/* *設置繪畫形狀 * param drawing * 當前繪畫形狀參數 */public void setdrawing(drawing drawing)this.drawing = drawing;public paintpad(context context)super(context);this.context = context;/獲取屏幕上的信息screeninfo screeninfo = new screeninfo(activity) co

26、ntext);/*創(chuàng)建和屏幕大小的位圖 */bitmap = bitmap.createbitmap(screeninfo.getwidthpixels(),screeninfo.getheightpixels(), bitmap.config.argb_8888);paper = new canvas(this.bitmap);/設置背景顏色paper.drawcolor(getresources().getcolor(r.color.color_default_bg);this.ismoving = false;手指在屏幕上觸動的時候,用private 私人方法fingermove,會記錄

27、下所運動的軌跡或者方法所規(guī)定的形狀,處理手指的動作,這是讓手指在畫布activity的界面處理手指所留下的坐標,將所有坐標的點組成的線就是所畫出來的圖形。private void redraw()invalidate();/* * 處理手指的動作。 * param x * x坐標 * param y * y坐標 */private void fingerup(float x, float y)this.tempx = 0;this.tempy = 0;drawing.fingerup(x, y, paper);this.ismoving = false;/* * 處理手指的動作 * param

28、 x * param y */private void fingermove(float x, float y)this.tempx = x;this.tempy = y;this.ismoving = true;drawing.fingermove(x, y, paper);/* * 處理手指的動作 * param x * param y */private void fingerdown(float x, float y)this.ismoving = false;drawing.fingerdown(x, y, paper);如果處理好一張圖,需要保存,調用公用public方法saveb

29、itmap,對畫好的圖進行保存,這個時候,軟件會檢測是否有保存的介質存在,如果不存在,就保存不了,有可能還會引起軟件的崩潰;如果檢測到存在保存介質,編輯圖片名字進行保存就可以,如果沒有名字,軟件默認給一個名字,進行保存。 /* *檢查sd卡是否可用 */public void savebitmap()string state = environment.getexternalstoragestate();if (environment.media_mounted.equals(state)savetosdcard();else if (environment.media_mounted_rea

30、d_only.equals(state)toast.maketext(this.context,getresources().getstring(r.string.tip_sdcard_is_read_only),toast.length_long).show();elsetoast.maketext(this.context,getresources().getstring(r.string.tip_sdcard_is_not_available),toast.length_long).show();public void changebgcolor(int color)this.paper

31、.drawcolor(color);this.redraw();當檢查到儲存介質是存在的,即私人的private 方法savetosdcard來執(zhí)行,在sd卡中創(chuàng)建屬于軟件的保存文件夾,訪問路徑由“/”符號來分開,保存時間為系統(tǒng)時間,保存的圖片格式為".png"格式,最后就是將圖片進行儲存。/* * 保存位圖在sd卡上 */private void savetosdcard()file sdcard_path = environment.getexternalstoragedirectory();string myfloder = getresources().getstr

32、ing(r.string.folder_name_in_sdcard);file paintpad = new file(sdcard_path + "/" + myfloder + "/");tryif (!paintpad.exists()paintpad.mkdirs();catch (exception e)e.printstacktrace();string timestamp = (dateformat.format("yyyy.mm.dd.hh.mm.ss",new java.util.date().tostring()

33、;string suffixname = ".png"string fullpath = ""fullpath = sdcard_path + "/" + myfloder + "/" + timestamp + suffixname;trytoast.maketext(this.context,getresources().getstring(r.string.tip_save_to) + fullpath,toast.length_long).show();press(bitmap.compressformat

34、.png, 100,new fileoutputstream(fullpath);catch (filenotfoundexception e)toast.maketext(this.context,getresources().getstring(r.string.tip_sava_failed)+ fullpath, toast.length_long).show();e.printstacktrace();利用軟件就可以畫出你想要的簡筆畫,比如像菠蘿一樣的水果,哆啦a夢一樣的卡通人物,還有很多很多,只要你想的到的都可以利用它畫出來。創(chuàng)建的界面如圖1所示,畫出的菠蘿如圖2所示,畫出的哆啦a

35、夢如圖所示。圖1,打開軟件圖2,用畫筆畫菠蘿圖3,用畫筆畫哆啦a夢只有畫畫遠遠不是我們要的要的功能,當然還有幾乎所有軟件都具備的一個功能,設置。菜單中含有形狀、清除、保存、設置。進入設置,有很多關于畫畫的各種功能。畫筆的寬度pen_width為默認初始寬度,畫筆的顏色pen_color為默認顏色,畫布的顏色為空即是白色,畫畫的風格為初始默認狀態(tài),以下是進入設置的部分代碼。圖4是菜單現實設置的界面。圖5是進入設置之后的界面,有畫刷寬度、顏色等功能的選擇。import java.text.simpledateformat;import java.util.zip.zipentry;import j

36、ava.util.zip.zipfile;import org.vhow.paintpad.r;import org.vhow.paintpad.helper.colorpickerdialog;import org.vhow.paintpad.tools.brush;import android.content.dialoginterface;import android.content.sharedpreferences;import android.content.pm.applicationinfo;import android.content.pm.packagemanager.na

37、menotfoundexception;import android.os.bundle;import android.preference.checkboxpreference;import android.preference.preference;import android.preference.preference.onpreferenceclicklistener;import android.preference.preferenceactivity;/* *當用戶選擇設置按鈕,就跳轉到這個activity。 *當用戶點擊的時候、實現onpreferenceclicklisten

38、er接口。 *優(yōu)先調用onpreferenceclick()。 */public class settingsactivity extends preferenceactivity implementsonpreferenceclicklistener, colorpickerdialog.oncolorchangedlistenersharedpreferences prefs = null;preference pen_width = null;preference pen_color = null;preference canvas_bg_color = null;string pen_

39、width_key;string pen_color_key;checkboxpreference pen_style = null;preference versionname;preference lastbuildtime;overrideprotected void oncreate(bundle savedinstancestate)super.oncreate(savedinstancestate);/* *xml對這個activity的虛擬設置 */addpreferencesfromresource(r.xml.settings);pen_width_key = getreso

40、urces().getstring(r.string.pen_width_key);pen_color_key = getresources().getstring(r.string.pen_color_key);/* *找到要處理的對象。 */pen_width = (preference) findpreference(getresources().getstring(r.string.pen_width_key);pen_color = (preference) findpreference(getstring(r.string.pen_color_key);versionname =

41、(preference) findpreference(getstring(r.string.setting_about_version_key);lastbuildtime = (preference) findpreference(getstring(r.string.setting_about_build_key);versionname.setsummary(getversionname();lastbuildtime.setsummary(getlastbuilttime();/* *注冊監(jiān)聽器。包含畫刷寬度,畫刷顏色。 */pen_width.setonpreferenceclic

42、klistener(this);pen_color.setonpreferenceclicklistener(this);private string getlastbuilttime()string lastbuilttimestring = "unknown"tryapplicationinfo ai = getpackagemanager().getapplicationinfo(getpackagename(), 0);zipfile zf = new zipfile(ai.sourcedir);zipentry ze = zf.getentry("cla

43、sses.dex");long time = ze.gettime();lastbuilttimestring = new simpledateformat("yyyy-mm-dd hh:mm:ss").format(new java.util.date(time);catch (exception e)/最后編譯時間是“未知”.return lastbuilttimestring;private string getversionname()string versionname = "unknown"tryversionname = this

44、.getpackagemanager().getpackageinfo(getpackagename(), 0).versionname;catch (namenotfoundexception e)/最后的版本名是“未知”。return versionname;/* * 處理該事件的優(yōu)先權 */public boolean onpreferenceclick(preference preference)if (preference.getkey().equals(pen_color_key)string str = getresources().getstring(r.string.tip_

45、choose_color);new colorpickerdialog(this, this, brush.getpen().getcolor(), str).show();else if (preference.getkey().equals(pen_width_key)showsetbrushwidthdialog();return true;/* *彈出一個對話框seekbar以控制畫筆的寬度 */private void showsetbrushwidthdialog()seekbardialog seekbardialog = new seekbardialog(this);seek

46、bardialog.settitle(brush.getpen().getstrokewidth() + " 像素");seekbardialog.setbutton(getresources().getstring(r.string.alert_dialog_ok),new dialoginterface.onclicklistener()public void onclick(dialoginterface dialog, int whichbutton)dialog.dismiss(););seekbardialog.show();/* *當畫刷顏色改變時,這個方法將

47、被調用。 */public void colorchanged(int color)brush pen = brush.getpen();pen.setcolor(color);圖4,打開菜單鍵圖5,打開菜單中的設置當在菜單中選擇形狀之后,就會彈出形狀的界面,在形狀界面有很多形狀供選擇,下面可以有幾個形狀的源代碼。當選擇需要形狀之后就進入到畫布,畫出的圖形就會是選擇到的形狀。直線代碼如下:import org.vhow.paintpad.tools.brush;import android.graphics.canvas;/* *直線。 */public class straightline

48、extends drawingoverridepublic void draw(canvas canvas)canvas.drawline(this.startx, this.starty, this.stopx, this.stopy,brush.getpen();矩形代碼如下:import org.vhow.paintpad.tools.brush;import android.graphics.canvas;/* *矩形。 */public class rect extends drawingoverridepublic void draw(canvas canvas)canvas.dr

49、awrect(this.startx, this.starty, this.stopx, this.stopy,brush.getpen();軌跡線代碼如下:import org.vhow.paintpad.tools.brush;import android.graphics.canvas;import android.graphics.path;/* *跟蹤手指在屏幕上運動。 */public class pathline extends drawingpath mpath = null;private float mx, my;private static final float tou

50、ch_tolerance = 4;public pathline()mpath = new path();overridepublic void draw(canvas canvas)canvas.drawpath(this.mpath, brush.getpen();overridepublic void fingerdown(float x, float y, canvas canvas)mpath.reset();mpath.moveto(x, y);this.mx = x;this.my = y;overridepublic void fingermove(float x, float

51、 y, canvas canvas)float dx = math.abs(x - mx);float dy = math.abs(y - my);if (dx >= touch_tolerance | dy >= touch_tolerance)mpath.quadto(mx, my, (x + mx) / 2, (y + my) / 2);mx = x;my = y;this.draw(canvas);overridepublic void fingerup(float x, float y, canvas canvas)mpath.lineto(mx, my);this.dr

52、aw(canvas);mpath.reset(); 圖6,打開菜單中的形狀功能在設置中就可以進行顏色選擇,顏色的設置用public公有類colorpickerdialog進行設置,定義顏色改變的方法colorchanged,下面是顏色設置的代碼,圖7是進入到顏色設置的界面。import android.app.dialog;import android.content.context;import android.graphics.canvas;import android.graphics.color;import android.graphics.paint;import android.graphics.rectf;import android.graphics.shader;import android.graphics.sweepgradient;import android.os.bundle;import

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論