版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、畢業(yè)設(shè)計設(shè)計題目: 系 別: 專業(yè)班級: 指導(dǎo)老師: 學(xué)生姓名: 2013年5月18日- 33 -四川工商職業(yè)技術(shù)學(xué)院摘要:在21世紀(jì)的今天,手機(jī)幾乎是每個人的必備品,特別是在高校的學(xué)生,不管是吃飯、睡覺、還是上課,手機(jī)總是不離手。而且手機(jī)更新?lián)Q代更是日新月異,然后在現(xiàn)在的手機(jī)市場中android系統(tǒng)的智能機(jī)成為主流。我們這款畫畫小軟件正是在android系統(tǒng)的平臺上進(jìn)行運(yùn)行。在日常生活中,我們畫畫只能在紙上的時代已經(jīng)過去,這款android小畫家畫畫軟件,可以進(jìn)行簡單的簡筆畫操作、上色。既節(jié)約了增加了我們平時的樂趣,也節(jié)約了資源。該軟件具有改變畫圖的形狀、改變畫筆的顏色、改變畫刷的寬度、改變
2、畫畫的風(fēng)格、以及保存、清除等功能。經(jīng)過測試,這是一款能為我們生活增加樂趣的軟件。關(guān)鍵字:手機(jī);android;畫畫軟件目錄第一章 引言- 1 -1.1發(fā)展情況- 1 -1.2研究現(xiàn)狀- 1 -1.3研究前景展望- 1 -1.4選題的目的及意義- 2 -第二章 系統(tǒng)可行性分析- 3 -2.1經(jīng)濟(jì)可行性分析- 3 -2.2操作可行性分析- 3 -2.3技術(shù)可行性分析- 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軟件概念結(jié)構(gòu)設(shè)計- 9 -第四章 軟件詳細(xì)設(shè)計- 12 -4.1軟件設(shè)計原理- 12 -4.2軟件模塊設(shè)計- 12 -第五章 軟件測試- 30 -總結(jié)- 31 -參考文獻(xiàn)- 32 -致謝- 33 -四川工商職業(yè)技術(shù)學(xué)院第一章 引言1.1發(fā)展情況 在現(xiàn)在這個手機(jī)普及的時代,各種手機(jī)軟件也是層出不窮,尤其是在這兩年的飛速發(fā)展,android軟件可以是說席卷各大手機(jī)軟件網(wǎng)站,為android軟件開發(fā)者既帶來了收入的回報,也提出了技術(shù)的挑戰(zhàn)。android系統(tǒng)這個平臺以成為智能手機(jī)系統(tǒng)的核心,也是it技術(shù)行業(yè)、智能手機(jī)制造行業(yè)高度重視的。隨著android
4、系統(tǒng)的不斷更新,現(xiàn)在功能各方面已經(jīng)非常強(qiáng)大,這不僅是一臺手機(jī)這么簡單,而是一個移動終端。各種軟件都有幾乎都有android系統(tǒng)的版本。同時用戶現(xiàn)在不僅要求手機(jī)有傳統(tǒng)手機(jī)的功能,現(xiàn)在必須更加具有娛樂性以及休閑性。抓住現(xiàn)在用戶的這個心理狀態(tài),于是android平臺上運(yùn)行的小畫家畫畫軟件就運(yùn)營而生了。1.2研究現(xiàn)狀就目前的android系統(tǒng)智能手機(jī)在市場的占有率來看,對android系統(tǒng)手機(jī)軟件的開發(fā)具有非常廣闊的前景。雖然在it行業(yè)中都處于一個飽和的狀態(tài),但是在android系統(tǒng)手機(jī)軟件開發(fā)這一方面又處于緊缺的狀態(tài),因為現(xiàn)在的手機(jī)用戶拿起手機(jī)不僅僅是只用來打打電話,發(fā)發(fā)短信這么簡單,用戶更加追求的
5、是手機(jī)的娛樂性和休閑性。說的更加簡單明了一點(diǎn)就是,用戶在無聊的時候可以用手機(jī)來消遣時間。android系統(tǒng)自2009年2月發(fā)布的android1.1開始已經(jīng)有4年的發(fā)展歷史。然而在這短短四年時間就可以成為智能手機(jī)市場的領(lǐng)頭羊,那么對于我們開發(fā)android系統(tǒng)手機(jī)的軟件,也是同樣具有廣闊的市場。1.3研究前景展望隨著android系統(tǒng)智能手機(jī)的誕生,android系統(tǒng)打破了前些年智能手機(jī)的壟斷的傳統(tǒng)市場。同時android系統(tǒng)的手機(jī)軟件占據(jù)的手機(jī)軟件市場的比例越來越大,那么我們開發(fā)的畫畫涂鴉軟件是基于android系統(tǒng)的,可以說是具有廣闊的發(fā)展前景。而且現(xiàn)在用戶對手機(jī)軟件是否具有娛樂性有非常強(qiáng)
6、的選擇性,用戶對于空閑時間的消遣,還有即時聊天需要發(fā)送一個手繪涂鴉圖片的需要,那么對我們這款軟件的選擇是非常有用的。對于小畫家手機(jī)軟件具有一下優(yōu)點(diǎn):(1)喜愛畫畫的用于,無論是在車上,還是站臺等車,都可以隨時隨地的進(jìn)行簡筆畫畫畫的操作。(2)可以將畫好的圖片保存通過即時聊天工具發(fā)給好朋友分享自己的作品。(3)在手機(jī)上畫可以節(jié)約資源,在環(huán)保的角度,起到節(jié)能減排的效果。1.4選題的目的及意義為了鞏固在大學(xué)三年所學(xué)的知識,達(dá)到學(xué)以并用的目的,作為四川工商職業(yè)技術(shù)學(xué)院信息工程系軟件班大三的畢業(yè)生,希望在離開自己母校的時候能夠把自己所學(xué)的知識能夠做一次全面的鞏固和提高,我的選題意義如下:隨著androi
7、d系統(tǒng)的不斷升級,android系統(tǒng)智能手機(jī)的各種軟件對各方面的影響越來越大,并且android系統(tǒng)成為以后移動智能客戶終端的可能性同時也越來越大,那么未來android系統(tǒng)主導(dǎo)智能手機(jī)市場也是必然的發(fā)展趨勢。那么我們開發(fā)的這款畫畫小軟件也是順應(yīng)時代發(fā)展的潮流,在傳統(tǒng)的按鍵手機(jī),我們不能做出這個靈活的畫畫涂鴉軟件,現(xiàn)在我們借助android系統(tǒng)這個平臺來實(shí)現(xiàn)了這一功能。這樣不僅提高圖片的趣味性;建立生動有趣的圖片處理平臺,而且還提高手機(jī)的利用率。何樂而不為呢。第二章 系統(tǒng)可行性分析可行性研究的目的就是用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決??尚行匝芯康哪康牟皇墙鉀Q問題,而是確定問題
8、是否值得去解決??尚行匝芯烤褪沁M(jìn)行一次大大壓縮簡化了的系統(tǒng)分析和軟件設(shè)計過程,也就是在較高層上以抽象的方式進(jìn)行系統(tǒng)分析和軟件設(shè)計過程。2.1經(jīng)濟(jì)可行性分析 在android系統(tǒng)各種手機(jī)軟件頻頻被開發(fā)出來的今天,那些軟件開放團(tuán)隊如何進(jìn)行軟件的開發(fā),以及開發(fā)出來的軟件有什么特色來吸引用戶,是越來越重要的問題。而我們這個小軟件內(nèi)容簡單,開發(fā)周期短,投資小。投入運(yùn)營后,提供免費(fèi)下載,然后在軟件中植入廣告成分,來獲取利潤。所以該軟件為開發(fā)團(tuán)隊所帶來的經(jīng)濟(jì)效益會遠(yuǎn)遠(yuǎn)高于前期投入的資金。2.2操作可行性分析本軟件的開發(fā)工具是eclipse-sdk-4.2.1版本,eclipse內(nèi)裝插件adt-21.0.0版
9、本以及android sdk 2.3.3。前端開發(fā)工具是java。這樣的eclipse就是一套完整的開發(fā)工具,用于生成后綴為apk的應(yīng)用程序。之后將生成的apk應(yīng)用程序安裝到手機(jī)就可以使用了。2.3技術(shù)可行性分析2.3.1 eclipse概述eclipse 是一個開放源代碼的、基于java的可擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,eclipse 附帶了一個標(biāo)準(zhǔn)的插件集,包括java開發(fā)工具(java development kit,jdk)。我們經(jīng)常將 eclipse 當(dāng)作 java 集成開發(fā)環(huán)境(ide)來使用,但 eclipse 的目
10、標(biāo)卻不僅限于此。eclipse 還包括插件開發(fā)環(huán)境(plug-in development environment,pde),這個組件主要針對希望擴(kuò)展 eclipse 的軟件開發(fā)人員,因為它允許他們構(gòu)建與 eclipse 環(huán)境無縫集成的工具。由于 eclipse 中的每樣?xùn)|西都是插件,對于給 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可以提供調(diào)試設(shè)備時為設(shè)備截屏,查看線程及內(nèi)存信息、logcat、廣播信息、模擬呼叫、接收短消息、文件查看器等功能(該功能在安裝完adt之后,點(diǎn)擊eclipse工具欄右上角的那個帶箭頭的小窗口圖標(biāo)彈出菜單中打開)。 android developmen
12、t tools(adt)工具應(yīng)該是為eclipse支持android項目快速編程開發(fā)和調(diào)試插件而已。2.3.3 android sdk概述sdk:(software development kit)軟件開發(fā)工具包。被軟件開發(fā)工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合。因此,android sdk 指的是android專屬的軟件開發(fā)工具包。下載好android sdk后,開始安裝,android sdk采用了java語言,所以需要先安裝jdk 5.0及以上版本。直接下載jdk安裝文件安裝更為方便。android sdk不用直接安裝,下載后,直接解壓即可,
13、 將下載后的sdk的壓縮包解壓到適當(dāng)?shù)奈恢?,就這么簡單;sdk安裝ok。2.3.4 java概述java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言,是由sun microsystems公司于1995年5月推出的java程序設(shè)計語言和java平臺(即javase, javaee, javame)的總稱。java 技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應(yīng)用于個人pc、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計算機(jī)、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,java更具備了顯著優(yōu)勢和廣闊前景。第三章 需求分析本設(shè)計為android系統(tǒng)手
14、機(jī)上的一個畫畫小軟件,該軟件主要是在eclipse開發(fā)工具上用java語言編寫的一個結(jié)果。eclipse 是一個開放源代碼的、基于java的可擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。而java語言具有卓越的通用性、高效性、平臺移植性和安全性。eclipse編輯器引入了編輯環(huán)境方面的一些增強(qiáng)功能,諸如單詞補(bǔ)齊,增量搜索,代碼凸顯,縮進(jìn)文本,標(biāo)記行號,彩色打印,和快捷方式。eclipse編輯器還提供了許多為特定語言設(shè)計的功能,比如在你輸入原型和函數(shù)調(diào)用的時候它能夠自動完成這些字符串的輸入。生成的應(yīng)用程序安裝到手機(jī)后,直接點(diǎn)擊打開,操作簡單明了,軟件具有形
15、狀的選擇、畫筆寬度的調(diào)整、畫筆顏色的改變、繪畫風(fēng)格的改變、整屏清除以及保存等功能。3.1軟件功能描述小畫家畫畫軟件主要是提供給使用android系統(tǒng)智能手機(jī)的用戶,增加業(yè)余時間的趣味性。本軟件主要有簡筆畫畫、上色、保存等功能。(1) 形狀選擇,打開軟件,選擇菜單鍵,就會彈出菜單里面的功能,選擇形狀功能就可以自由的選擇需要的形狀,形狀有軌跡線、直線、矩形、橢圓形、圓形、點(diǎn)、還有橡皮擦等不同的形狀。(2) 清除,打開軟件,選擇菜單鍵,就會彈出菜單里面的功能,清除功能就是將所繪制的整張畫布全部清除。(3) 保存,打開軟件,選擇菜單鍵,就會彈出菜單里面的功能,如果繪畫好一張滿意的畫,選擇保存就可以將圖
16、保存在手機(jī)里面,以供自己以后欣賞或者與朋友分享。(4) 設(shè)置,打開軟件,選擇菜單鍵,就會彈出菜單里面的功能,選擇設(shè)置,就可以進(jìn)入到設(shè)置畫面,設(shè)置里面有畫刷寬度的調(diào)節(jié)、畫筆顏色的選擇、畫畫風(fēng)格的選擇、是否是全屏模式、目前所使用的版本、以及可以看到最后調(diào)試的時間與快捷鍵和對開發(fā)者的建議。3.2系統(tǒng)功能分析根據(jù)軟件的使用情況和面向?qū)ο?,本軟件具備一下功能模塊以及操作方式:功能功能類別子功能用戶管理模塊setdrawing設(shè)置形狀clearcanvas清屏savetosdcard保存settingsactivity設(shè)置顏色管理模塊(color)colorpickerdialog顏色選擇畫刷大小管理模塊
17、(size)brush設(shè)置畫刷大小菜單用戶模塊功能描述用戶進(jìn)入軟件并選擇操作操作序列1,點(diǎn)擊“形狀”選擇要形狀,默認(rèn)軌跡線。2,點(diǎn)擊“清除”抹掉整張畫布的所有線條。3,點(diǎn)擊“保存”保存當(dāng)前的所畫的畫。4,點(diǎn)擊“設(shè)置”進(jìn)入更多的設(shè)置畫面。形狀形狀管理模塊功能描述用戶選擇圖形形狀操作序列1, 點(diǎn)擊menu按鈕,屏幕下方顯示菜單。2, 點(diǎn)擊“形狀”進(jìn)入形狀設(shè)置。3, 選擇需要的形狀就可以了。清除清除管理模塊功能描述用戶需要清除整個畫布操作序列1, 點(diǎn)擊menu按鈕,屏幕下方顯示菜單。2, 點(diǎn)擊“清除”就把整張畫布清除了。保存保存管理模塊功能描述用戶需要保存所畫的畫操作序列3, 點(diǎn)擊menu按鈕,屏幕
18、下方顯示菜單。4, 點(diǎn)擊“保存”就將所畫的畫保存下來了。顏色顏色管理模塊功能描述用戶選擇畫刷顏色操作序列1, 點(diǎn)擊menu按鈕,屏幕下方顯示菜單。2, 點(diǎn)擊“設(shè)置”進(jìn)入設(shè)置畫面。3, 點(diǎn)擊“顏色”就可以選擇自己喜歡的顏色了。畫刷大小畫刷大小管理模塊功能描述用戶選擇畫刷的大小操作序列1, 點(diǎn)擊menu按鈕,屏幕下方顯示菜單。2, 點(diǎn)擊“設(shè)置”進(jìn)入設(shè)置畫面。3, 點(diǎn)擊“畫刷寬度”就可以設(shè)置合適的畫刷寬度了。風(fēng)格畫畫風(fēng)格管理模塊功能描述用戶選擇畫畫的風(fēng)格操作序列1, 點(diǎn)擊menu按鈕,屏幕下方顯示菜單。2, 點(diǎn)擊“設(shè)置”進(jìn)入設(shè)置畫面。3, 點(diǎn)擊“風(fēng)格”就可以設(shè)置畫畫的風(fēng)格了。模式畫圖模式管理模塊功能
19、描述用戶選擇畫圖的模式操作序列1, 點(diǎn)擊menu按鈕,屏幕下方顯示菜單。2, 點(diǎn)擊“設(shè)置”進(jìn)入設(shè)置畫面。3, 點(diǎn)擊“全屏模式”就可以設(shè)置畫圖的模式了。3.3軟件需求分析隨著社會的發(fā)展,時代的進(jìn)步,人們對生活品質(zhì)的不斷提高,對生活的享受心理也越來越強(qiáng),越來越注重休閑娛樂。只有抓住現(xiàn)在人們的心理需要才能在現(xiàn)在有得一席之地。同樣在手機(jī)軟件方面也是一樣的,現(xiàn)在的大多數(shù)人的手機(jī)里面占據(jù)一大部分內(nèi)存的都是休閑娛樂的游戲,就是在無聊的時候打發(fā)時間的。而我們這款android小畫家畫圖軟件就是提供給那些愛畫簡筆畫的畫圖愛好者,所以,既然現(xiàn)在有這個需求,我們就可以滿足用戶的這個需要,開發(fā)這么一款畫圖的軟件。3.
20、4軟件概念結(jié)構(gòu)設(shè)計這一設(shè)計階段是在需求分析的基礎(chǔ)上而進(jìn)行的,設(shè)計出能夠滿足用戶需求的各種實(shí)體,以及它們之間的關(guān)系,為后面的邏輯設(shè)計打下基礎(chǔ)。概念結(jié)構(gòu)的主要特點(diǎn)是:(1) 能真實(shí)、充分地反映現(xiàn)實(shí)世界,包括事物和事物之間的聯(lián)系,能滿足用戶對軟件功能的要求。(2) 易于理解,從而可以用它和不熟悉使用手機(jī)的用戶交換意見,用戶的積極參與是軟件開發(fā)設(shè)計成功的關(guān)鍵。(3) 易于更改,當(dāng)應(yīng)用環(huán)境和應(yīng)用要求改變時,容易對概念模型修改和擴(kuò)充。軟件開發(fā)在小畫家軟件開發(fā)中存在系統(tǒng)用例、開發(fā)人員與用戶、數(shù)據(jù)流程處理、數(shù)據(jù)表述等幾個對象的關(guān)系,具體描述如下面各圖所示。用戶管理開發(fā)維護(hù)后臺數(shù)據(jù)維護(hù)軟件更新開發(fā)人員系統(tǒng)用例圖
21、用戶小畫家軟件開發(fā)人員用戶信息軟件下載軟件信息用戶情況軟件升級建議反饋總體流程圖軟件管理用戶軟件信息軟件信息軟件下載條件 軟件情況開發(fā)人員下載信息軟件信息軟件信息下載條件軟件信息表用戶下載信息表用戶下載情況用戶信息下載量信息軟件信息下載信息下載量信息下載管理用戶管理下載量信息用戶信息開發(fā)人員用戶信息 用戶信息下載量信息用戶管理表數(shù)據(jù)流圖處理圖下載情況軟件卸載信息表軟件信息表用戶信息表開發(fā)團(tuán)信息表下載信息表用戶排行表數(shù)據(jù)表述e-r圖 第四章 軟件詳細(xì)設(shè)計4.1軟件設(shè)計原理本軟件基于android系統(tǒng)智能手機(jī),在android系統(tǒng)設(shè)備上運(yùn)行,就像打開手機(jī)播放器一樣簡單打開軟件就可以操作。它是隨著a
22、ndroid系統(tǒng)手機(jī)的興起,借助android系統(tǒng)平臺開發(fā)的一個軟件。主要是利用不斷成熟的android系統(tǒng),結(jié)合java語言與xml而產(chǎn)生的軟件。java 語言具有卓越的通用性、高效性、平臺移植性和安全性,而可擴(kuò)展標(biāo)記語言xml是用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言,可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標(biāo)記語言進(jìn)行定義的源語言。這樣開發(fā)的軟件不僅在界面上比較美觀,而且可以在android系統(tǒng)平臺上穩(wěn)定運(yùn)行。4.2軟件模塊設(shè)計打開軟件即可進(jìn)入到畫畫操作界面,也可以選擇各種各樣的功能,利用目前有的功能可以隨心所欲的畫出想要的簡筆畫,在選擇各種各樣的功能的時候也有界面的跳轉(zhuǎn)彈
23、出和菜單功能的選擇。因為現(xiàn)在是測試版本,不存在與互聯(lián)網(wǎng)連接的情況,這樣對用戶的私人隱私也具有絕對的安全保密,因為只是一款畫圖的軟件,所以我們不會訪問用戶的手機(jī)聯(lián)系人、短信、以及地理位置信息,同時也不需要獲得手機(jī)的任何權(quán)限,只是能夠運(yùn)行和使用就可以了,這樣給開發(fā)團(tuán)隊的建議也只能發(fā)在開發(fā)團(tuán)隊的郵箱中。下面是軟件各種界面的截圖以及部分代碼。打開軟件,就如同打開音樂播放器一樣簡單,打開之后,就進(jìn)入軟件的主界面,這就是一張畫布,可以在上面隨意畫自己喜歡的線條。這是軟件最基本,也是最重要的部分,在軟件中首先要創(chuàng)建這樣一個activity,才能展開其他的功能。首先要在手機(jī)界面創(chuàng)建一個這樣的畫布,這是我們最重
24、要的起步,創(chuàng)建一個界面activity,才能進(jìn)行下一步的操作,用public公有類,因為主要是主界面activity涉及的其他很多方法的訪問,設(shè)置各種功能方法的類型、初始值。就如下所示,/* *主要視圖類 */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、以及設(shè)置用setdrawing方法,設(shè)置繪畫背景色的狀態(tài)為初始默認(rèn)狀態(tài)、繪畫形狀的當(dāng)前狀態(tài)參數(shù)為默認(rèn)空、屏幕上此時的信息為默認(rèn)初始狀態(tài)。/* *設(shè)置繪畫形狀 * param drawing * 當(dāng)前繪畫形狀參數(shù) */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);/設(shè)置背景顏色paper.drawcolor(getresources().getcolor(r.color.color_default_bg);this.ismoving = false;手指在屏幕上觸動的時候,用private 私人方法fingermove,會記錄
27、下所運(yùn)動的軌跡或者方法所規(guī)定的形狀,處理手指的動作,這是讓手指在畫布activity的界面處理手指所留下的坐標(biāo),將所有坐標(biāo)的點(diǎn)組成的線就是所畫出來的圖形。private void redraw()invalidate();/* * 處理手指的動作。 * param x * x坐標(biāo) * param y * y坐標(biāo) */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);如果處理好一張圖,需要保存,調(diào)用公用public方法saveb
29、itmap,對畫好的圖進(jìn)行保存,這個時候,軟件會檢測是否有保存的介質(zhì)存在,如果不存在,就保存不了,有可能還會引起軟件的崩潰;如果檢測到存在保存介質(zhì),編輯圖片名字進(jìn)行保存就可以,如果沒有名字,軟件默認(rèn)給一個名字,進(jìn)行保存。 /* *檢查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();當(dāng)檢查到儲存介質(zhì)是存在的,即私人的private 方法savetosdcard來執(zhí)行,在sd卡中創(chuàng)建屬于軟件的保存文件夾,訪問路徑由“/”符號來分開,保存時間為系統(tǒng)時間,保存的圖片格式為".png"格式,最后就是將圖片進(jìn)行儲存。/* * 保存位圖在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夢只有畫畫遠(yuǎn)遠(yuǎn)不是我們要的要的功能,當(dāng)然還有幾乎所有軟件都具備的一個功能,設(shè)置。菜單中含有形狀、清除、保存、設(shè)置。進(jìn)入設(shè)置,有很多關(guān)于畫畫的各種功能。畫筆的寬度pen_width為默認(rèn)初始寬度,畫筆的顏色pen_color為默認(rèn)顏色,畫布的顏色為空即是白色,畫畫的風(fēng)格為初始默認(rèn)狀態(tài),以下是進(jìn)入設(shè)置的部分代碼。圖4是菜單現(xiàn)實(shí)設(shè)置的界面。圖5是進(jìn)入設(shè)置之后的界面,有畫刷寬度、顏色等功能的選擇。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;/* *當(dāng)用戶選擇設(shè)置按鈕,就跳轉(zhuǎn)到這個activity。 *當(dāng)用戶點(diǎn)擊的時候、實(shí)現(xiàn)onpreferenceclicklisten
38、er接口。 *優(yōu)先調(diào)用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的虛擬設(shè)置 */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)先權(quán) */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();/* *當(dāng)畫刷顏色改變時,這個方法將
47、被調(diào)用。 */public void colorchanged(int color)brush pen = brush.getpen();pen.setcolor(color);圖4,打開菜單鍵圖5,打開菜單中的設(shè)置當(dāng)在菜單中選擇形狀之后,就會彈出形狀的界面,在形狀界面有很多形狀供選擇,下面可以有幾個形狀的源代碼。當(dāng)選擇需要形狀之后就進(jìn)入到畫布,畫出的圖形就會是選擇到的形狀。直線代碼如下: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;/* *跟蹤手指在屏幕上運(yùn)動。 */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,打開菜單中的形狀功能在設(shè)置中就可以進(jìn)行顏色選擇,顏色的設(shè)置用public公有類colorpickerdialog進(jìn)行設(shè)置,定義顏色改變的方法colorchanged,下面是顏色設(shè)置的代碼,圖7是進(jìn)入到顏色設(shè)置的界面。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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 濟(jì)南2025年度房屋買賣合同風(fēng)險防范策略3篇
- 二零二五年度煤炭節(jié)能減排居間合作協(xié)議4篇
- 2025年度企業(yè)間保密技術(shù)合作合同2篇
- 2025年攤位柜臺經(jīng)營管理權(quán)轉(zhuǎn)讓合同樣本3篇
- 2025年度旅游大巴租賃與旅游咨詢服務(wù)合同范本4篇
- 2025年洗車店租賃合同全新升級版3篇
- 2025年度飛機(jī)零部件買賣合同附帶安裝與維護(hù)服務(wù)合同4篇
- 個性化房地產(chǎn)顧問服務(wù)協(xié)議2024版版
- 二零二五年度高科技產(chǎn)業(yè)園區(qū)招標(biāo)文件編制及論文創(chuàng)新協(xié)議3篇
- 二零二五年度零食店收銀員顧客滿意度提升服務(wù)合同4篇
- 上海紐約大學(xué)自主招生面試試題綜合素質(zhì)答案技巧
- 辦公家具項目實(shí)施方案、供貨方案
- 2022年物流服務(wù)師職業(yè)技能競賽理論題庫(含答案)
- ?;钒踩僮饕?guī)程
- 連鎖遺傳和遺傳作圖
- DB63∕T 1885-2020 青海省城鎮(zhèn)老舊小區(qū)綜合改造技術(shù)規(guī)程
- 高邊坡施工危險源辨識及分析
- 中海地產(chǎn)設(shè)計管理程序
- 簡譜視唱15942
- 《城鎮(zhèn)燃?xì)庠O(shè)施運(yùn)行、維護(hù)和搶修安全技術(shù)規(guī)程》(CJJ51-2006)
- 項目付款審核流程(visio流程圖)
評論
0/150
提交評論