版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、學 士 學 位 論 文基于android的電子相冊-功能模塊設(shè)計與實現(xiàn)Based on the electronic photo album AndroidFunctional module design and Implementation 指 導 老 師 : 姓 名 : 學 號 : 學 院 : 專 業(yè) : 完 成 時 間 : 摘要隨著智能手機的逐漸普及,手機已經(jīng)成為人們生活中不可缺少的一部分。而如今智能手機像個人電腦一樣,具有獨立的操作系統(tǒng)。我們可以享受智能手機給我們帶來的拍照,看電影,聽音樂等多媒體服務(wù)。當然智能手機上還必須要有的一個服務(wù)就是圖片瀏覽服務(wù),我們可以通過圖片來記錄下我們生活
2、中的美妙瞬間。本課題是在AndroidSDK2.2平臺下,實現(xiàn)了一個手機電子相冊。主要采用Android平臺的Framework層提供的接口,實現(xiàn)了圖片的文件夾路徑的顯示,圖片的查看、放大、縮小等基本功能,支持jpg、bmp、png和gif圖片格式,該程序是獨立的apk文件,可以安裝在Android2.2以上的系統(tǒng)版本的手機上。本文在分析討論Android手機軟件開發(fā)技術(shù)原理的基礎(chǔ)上,開發(fā)出能為用戶提供更好的基于Android平臺的圖片瀏覽器。以圖片瀏覽器的頁面為主線進行分析和研究的,進而研究了Android程序開發(fā)環(huán)境的搭建,Android工程文件中的各個文件的作用,程序界面的設(shè)計,程序數(shù)據(jù)
3、的處理,圖片的異步加載,防止程序的內(nèi)存溢出以及自定義控件的使用。關(guān)鍵字:Android;圖片瀏覽器;智能手機平臺;異步加載;內(nèi)存溢出AbstractWiththe popularity ofsmartmobile phone,mobile phonehas becomean indispensable part of peoples life.Now theintelligentmobile phonelike a personalcomputer,with an independent operating system.Wecan take pictures,enjoyintelligent
4、mobile phonebrings usto watch movies,listen to musicand other multimediaservices.Of course,the intelligentmobile phonealsomust have aservice is thepicture browsingservice,we canthrough the picture torecord ourlife in themoment.This topic isin the AndroidSDK2.2 platform,the realization of amobile pho
5、neelectronic photo album.Using Frameworkplatform Android layerprovides the interface,realize thepath of the folderimagedisplay,picture of the view,zoom,and other basic functions,support for JPG,BMP,PNG andGIF image format,the program is independent of theAPK files,system versioncan be installed in m
6、ore than Android2.2mobile phone.In this paper,based on analyzing theprinciple ofAndroidmobile phonesoftware development technologyonAndroid platform,developedbased on theimage browserto provide users with better.In thephoto browserpages as the main lineof analysis and research,and then studied theAn
7、droidprogram development environmentto buildtheAndroid project file,each filein therole,design of the procedure interface,dataprocessingprogram,asynchronousloading picture,prevent the programmemoryoverflowand the use ofa custom control.Key word: android; Photo browser; Smartphone platform; Asynchron
8、ous loading; Memory leak目錄第1章 緒論11.1 Android系統(tǒng)簡介11.2 Android系統(tǒng)架構(gòu)11.3 Android Java開發(fā)方向21.4 組織結(jié)構(gòu)2第2章 系統(tǒng)分析與設(shè)計32.1 功能分析32.2 性能分析32.3 界面設(shè)計42.3.1 用戶界面的設(shè)計42.3.2 功能的設(shè)計6第3章 Android開發(fā)環(huán)境的搭建83.1 開發(fā)環(huán)境搭建需要的軟件83.2 Android開發(fā)平臺的搭建83.2.1 JDK安裝83.2.2 Eclipse的安裝93.2.3 Android SDK 安裝103.2.4 ADT 安裝113.2.5 創(chuàng)建ADT12第4章 程序的實
9、現(xiàn)134.1 Android項目的總體架構(gòu)以及其用途134.2 功能的實現(xiàn)164.2.1 第一個界面-歡迎界面164.2.2 第二個界面-主界面184.2.3 第三個界面-GridView界面194.2.4 第四個界面-單張圖片顯示界面24第5章 總結(jié)30參考文獻31第1章 緒論1.1 Android系統(tǒng)簡介Android是一種以Linux為基礎(chǔ)的開放源的操作系統(tǒng),主要使用于便攜設(shè)備。目前尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安智”。Android操作系統(tǒng)最初由Andy Rubin開發(fā),最初主要支持手機。2005年由Google收購注資,并組建開放手機聯(lián)盟開發(fā)改良,逐漸擴展到平
10、板電腦及其他領(lǐng)域上。Android的主要競爭對手是蘋果公司的ISO以及RIM的Blackberry OS。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。 2012年2月數(shù)據(jù),Android占據(jù)全球智能手機操作系統(tǒng)市場52.5%的份額,中國市場占有率為68.4%。1.2 Android系統(tǒng)架構(gòu)Android的系統(tǒng)架構(gòu)和其它操作系統(tǒng)一樣,采用了分層的架構(gòu)。android分為四個層,從高層到低層分別是應用程序?qū)?、應用程序框架層、系統(tǒng)運行庫層和Linux核心層。Android是以Linux為核心的手機操作平臺,作為一款開放式的操作系統(tǒng),隨著Android的快速發(fā)展,
11、如今已允許開發(fā)者使用多種編程語言來開發(fā)Android應用程序,而不再是以前只能使用Java開發(fā)Android應用程序的單一局面,因而受到眾多開發(fā)者的歡迎,成為真正意義上的開放式操作系統(tǒng)。在Android中,開發(fā)者可以使用Java作為編程語言來開發(fā)應用程序,也可以通過NDK使用C/C+作為編程語言來開發(fā)應用程序,也可使用SL4A來使用其他各種腳本語言進行編程(如:python、lua、tcl、php等等),還有其他諸如:Qt(qt for android)、Mono(mono for android)等一些著名編程框架也開始支持Android編程,甚至通過MonoDroid,開發(fā)者還可以使用C#
12、作為編程語言來開發(fā)應用程序。另外,谷歌還在2009年特別發(fā)布了針對初學者的Android Simple語言,該語言類似Basic 語言。而在網(wǎng)頁編程語言方JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、phonegap等等都已經(jīng)支持Android開發(fā)。而在Android系統(tǒng)底層方面,Android使用C/C+作為開發(fā)語言。1.3 Android Java開發(fā)方向Android支持使用Java作為編程語言來開發(fā)應用程序,而Android的Java開發(fā)方面從接口到功能,都有層出不窮的變化??紤]到Java虛擬機的效率和資源占用,谷歌重新設(shè)計了Android
13、的Java,以便能提高效率和減少資源占用,因而與J2ME等不同。 其中Activity等同于J2ME的MIDlet,一個 Activity 類(Class)負責創(chuàng)建視窗(Windows),一個活動中的Activity就是在 foreground(前景)模式,背景運行的程序叫做Service。兩者之間通過由ServiceConnection和AIDL連結(jié),達到復數(shù)程序同時運行效果。如果運行中的 Activity 全部畫面被其他 Activity 取代時,該 Activity 便被停止(Stopped),甚至被系統(tǒng)清除(Kill)。View等同于J2ME的Displayable,程序人員可以通過
14、View 類與“XML layout”檔將UI放置在視窗上,Android 1.5的版本可以利用 View 打造出所謂的 Widgets,其實Widget只是View的一種,所以可以使用xml來設(shè)計layout,HTC的Android Hero手機即含有大量的widget。至于ViewGroup 是各種layout 的基礎(chǔ)抽象類(abstract class),ViewGroup之內(nèi)還可以有ViewGroup。View的構(gòu)造函數(shù)不需要再Activity中調(diào)用,但是Displayable的是必須的,在Activity 中,要通過findViewById()來從XML 中取得View,Androi
15、d的View類的顯示很大程度上是從XML中讀取的。View 與事件(event)息息相關(guān),兩者之間通過Listener 結(jié)合在一起,每一個View都可以注冊一個event listener,例如:當View要處理用戶觸碰(touch)的事件時,就要向Android框架注冊View.OnClickListener。另外還有BitMap等同于J2ME的Image。1.4 組織結(jié)構(gòu)通過本軟件的開發(fā),我們可以熟悉和掌握在Android平臺上的程序開發(fā)的環(huán)境的搭建,熟悉和掌握在Android平臺上的程序的設(shè)計開發(fā)流程,熟悉和掌握在Android平臺下編程常遇到的問題及解決辦法。第一章主要闡述了下Andr
16、oid的發(fā)展歷史,Android的系統(tǒng)框架以及其Java方向的開發(fā)方面的內(nèi)容。第二章主要是對系統(tǒng)做的功能分析,性能的分析和程序設(shè)計。第三章主要講述的是Android開發(fā)環(huán)境的搭建的相關(guān)問題。第四章主要描述的是本軟件開發(fā)過程中的一些要點和難點,并貼上源代碼來描述解決的一些方法。第五章是對開發(fā)該程序做一個系統(tǒng)性的總結(jié)。第2章 系統(tǒng)分析與設(shè)計2.1 功能分析如果您經(jīng)常用手機拍照,那么您的手機里一定保存著數(shù)量眾多的圖片文件,閑暇的時候打開來和好友分享,怎能少了手機電子相冊。本電子相冊是一個功能齊全的圖片瀏覽器,軟件主要由四個界面構(gòu)成:第一個界面:一個歡迎界面,并在其中讀取數(shù)據(jù),提高程序的效率。第二個界
17、面:顯示的是SD卡中所有包含了圖片文件的文件夾,且以該文件夾里面的第一張圖片作為該文件夾的圖標。第三個界面:當點擊第二個界面的文件夾圖標的時候進入第三個界面,并在其中顯示該文件夾里面的所有圖片。第四個界面:當點擊第三個界面里面的某個圖片的時候,進入第四個界面,顯示點擊的那張圖片,該界面實現(xiàn)了多點觸控圖片的放大和縮小功能,當往左滑時,跳轉(zhuǎn)到下一張圖片,當往右滑的時候跳轉(zhuǎn)到上一張圖片。本電子相冊不同于其他的軟件,界面做的很友好,有歡迎界面,有文件夾,對手機中的圖片進行歸類,而且在第二個界面我們可以看到圖片的物理地址,可以很快的找到圖片的儲存的文件目錄。程序的架構(gòu)包含三個模塊:模塊1:程序界面。模塊
18、2:后臺服務(wù),后臺數(shù)據(jù)處理。模塊3:處理界面的刷新。2.2 性能分析我認為本程序中的異步加載圖片和防止程序的內(nèi)存溢出是重點和難點所在。為了防止程序的內(nèi)存溢出,我把該程序設(shè)計成分頁瀏覽模式,假如說圖片的數(shù)量大于30張的話,程序只會加載當前你所需要瀏覽的那一頁的圖片,并把以前瀏覽的圖片所占的內(nèi)存給清理掉。而圖片的異步加載的目的就是為了提升用戶的體驗效果,假如把圖片的加載放入到主線程的話,勢必照成程序的響應時間變長,更有可能出現(xiàn)ANR(如果程序5秒鐘沒有反映的話,系統(tǒng)會彈出一個提示框),嚴重影響了用戶的體驗效果。做手機上的圖片瀏覽器需要面對的最大的問題是加載圖片的效率問題和瀏覽圖片時不會因為圖片過多
19、而造成內(nèi)存溢出,因為手機不同于電腦,手機的內(nèi)存是非常珍貴的,一旦內(nèi)存溢出的話程序就會造成異常退出,降低了用戶的體驗效果。同樣,當程序加載圖片的速度很慢,而且滑動的時候造成很卡的話同樣會降低了用戶的體驗效果。所以,當用戶瀏覽圖片的時候必須異步加載圖片,當用戶加載的圖片到達一定數(shù)量后,應該清理掉前面的圖片再繼續(xù)加載圖片,以防程序內(nèi)存溢出。2.3 界面設(shè)計2.3.1 用戶界面的設(shè)計在人和機器的互動過程(Human Machine Interaction)中,有一個層面,即我們所說的界面(interface)。從心理學意義來分,界面可分為感覺(視覺、觸覺、聽覺等)和情感兩個層次。用戶界面設(shè)計是屏幕產(chǎn)品
20、的重要組成部分。界面設(shè)計是一個復雜的有不同學科參與的工程,認知心理學、設(shè)計學、語言學等在此都扮演著重要的角色。用戶界面設(shè)計的三大原則是:置界面于用戶的控制之下;減少用戶的記憶負擔;保持界面的一致性。電子相冊的第一界面是一個歡迎界面,設(shè)計圖如圖2.1所示:圖2.1 第一個界面設(shè)計圖 這個界面有兩個功能,首先就是展現(xiàn)歡迎界面,給用戶一個友好的感覺,其次是為軟件讀取數(shù)據(jù)提供一個緩沖的時間,提高程序的運行效率。電子相冊的第二個界面是一個展現(xiàn)圖片所在文件夾的界面,設(shè)計圖如圖2.2所示:圖2.2 第二個界面設(shè)計圖在這個界面,我們可以看到手機中有多少圖片的文件夾,每個文件夾下有多少圖片,以及文件夾在手機中的
21、地址。電子相冊的第三個界面就是圖片的具體展現(xiàn),設(shè)計圖如圖2.3所示: 圖2.3 第三個頁面設(shè)計圖 此界面主要是對圖片展現(xiàn)的頁面布局,采用三列,可以下拉,每頁顯示的行數(shù)根據(jù)手機顯示屏的大小有所不一樣。電子相冊的第四個頁面就是每張圖片的具體的展示了,設(shè)計圖如圖2.4所示: 圖2.4 第四個頁面設(shè)計圖此界面在手機上實現(xiàn)了多點觸控,圖片可以放大和縮小,當往左滑時,跳轉(zhuǎn)到下一張圖片,當往右滑的時候跳轉(zhuǎn)到上一張圖片,當跳轉(zhuǎn)到第一張圖片,提示這已經(jīng)是第一張圖片,當跳轉(zhuǎn)到最后一張圖片時,提示這已經(jīng)是最后一張圖片。2.3.2 功能的設(shè)計功能設(shè)計就是按照產(chǎn)品定位的初步要求,在對用戶需求及現(xiàn)有產(chǎn)品進行功能調(diào)查分析的
22、基礎(chǔ)上,對所定位產(chǎn)品應具備的目標功能系統(tǒng)進行概念性構(gòu)建的創(chuàng)造活動。功能設(shè)計是功能創(chuàng)新和產(chǎn)品設(shè)計的早期工作,是設(shè)計調(diào)查、策劃、概念產(chǎn)生、概念定義的方法,也是產(chǎn)品開發(fā)定位及其實施環(huán)節(jié),體現(xiàn)了設(shè)計中市場導向作用。可以采用用戶設(shè)計和專業(yè)設(shè)計或二者結(jié)合的方式。是以消費者的潛在需求和功能成本規(guī)劃為依據(jù),設(shè)計產(chǎn)品的功能,經(jīng)過功能的成本核算后,由專業(yè)人員進行產(chǎn)品設(shè)計并生產(chǎn),通過定價,開展針對性的營銷,使企業(yè)跳出產(chǎn)品同質(zhì)化陷阱。功能設(shè)計的依據(jù)是市場細分和產(chǎn)品定位理論的深化,市場細分方法有好多種,但歸根結(jié)底都是以功能細分的。本程序主要就是由四個界面構(gòu)成,每個界面都有自己要實現(xiàn)的功能,針對每個界面設(shè)計功能流程圖如圖
23、2.5所示:圖2.5 功能設(shè)計流程圖從第一界面到第二個界面是不需要交互的,是程序運行的過度階段,這里主要實現(xiàn)遍歷SD卡中的圖片這個功能;第二個界面是主界面,這里要實現(xiàn)顯示包含圖片的文件夾的功能,并且能夠顯示出文件夾所在的路徑;第三個界面是查看文件夾中具體照片的界面,這里要實現(xiàn)異步加載的功能;第四個界面是單張圖片的顯示,這里要實現(xiàn)多點觸控、放大、縮小和切換圖片的功能;從此流程圖,我們不難發(fā)現(xiàn),本電子相冊是一個功能齊全的簡單易用的程序。第3章 Android開發(fā)環(huán)境的搭建3.1 開發(fā)環(huán)境搭建需要的軟件(1) jdk-6u18-windows-i586.exe(2) eclipse-standard
24、-kepler-R-win32.zip (3) android-sdk-windows-1.5_r1.zip (4) ADT插件(5)android系統(tǒng)手機一部(圖片瀏覽器中的多點觸控的功能不能在android模擬器上測試) 3.2 Android開發(fā)平臺的搭建3.2.1 JDK安裝如果你還沒有JDK的話,可以去這里下載,接下來的工作就是安裝提示一步一步走。設(shè)置環(huán)境變量步驟如下:我的電腦-屬性-高級-環(huán)境變量-系統(tǒng)變量中添加以下環(huán)境變量:JAVA_HOME值為:D:Program FilesJavajdk1.6.0_18(你安裝JDK的目錄)CLASSPATH值為:.;%JAVA_HOME%l
25、ibtools.jar;%JAVA_HOME%libdt.jar;%JAVA_HOME%bin;Path: 在開始追加 %JAVA_HOME%bin;NOTE:前面四步設(shè)置環(huán)境變量對搭建Android開發(fā)環(huán)境不是必須的,可以跳過。當然在安裝過程要注意一下,360安全衛(wèi)士可能會提示木馬防火墻,大家要選擇“允許程序的所有操作”,否則可能會造成JDK安裝不完整。JDK的環(huán)境變量經(jīng)配置完成后,可以通過打開命令提示符窗口,輸入命令“java version”, 看到Java版本的信息,來確定安裝是否成功。首先點擊“開始”,然后點擊“運行”,輸入“cmd”,按“Enter”鍵,然后會出現(xiàn)命令提示符窗口的輸
26、入界面,輸入命令“java version”。當出現(xiàn)類似如圖3.1的畫面表示安裝成功了:圖3.1 命令窗口3.2.2 Eclipse的安裝打開官網(wǎng),點擊菜單欄上面的download,選擇紅框里面的下載,如圖,若你的電腦是32位的則點第一個,64位的點第二個,進入下載頁面,一般點擊紅框里面的網(wǎng)址就可以下載了,下載完畢,你會在你保存的地方看到一個壓縮包文件,它就是eclipse。右鍵你下載的壓縮包,解壓,解壓完畢后即可使用,進入文件夾,就可以看到 eclipse的啟動程序,第一次打開要設(shè)置工作環(huán)境,你可以選擇在別的盤或者默認c盤,點擊ok,現(xiàn)在就成功的進入eclipse了?,F(xiàn)
27、在還不能進行Android的開發(fā),還要安裝其他的組件。圖3.2 eclipse首頁3.2.3 Android SDK 安裝在Android Developers下載android-sdk_r05-windows.zip,下載完成后解壓到任意路徑。運行SDK Setup.exe,點擊Available Packages。如果沒有出現(xiàn)可安裝的包,請點擊Settings,選中Misc中的Force https:/.這項,再點擊Available Packages 。選擇希望安裝的SDK及其文檔或者其它包,點擊Installation Selected、Accept All、Install Accep
28、ted,開始下載安裝所選包。在用戶變量中新建PATH值為:Android SDK中的tools絕對路徑(本機為D:AndroidDevelopandroid-sdk-windowstools)。圖3.3 設(shè)置Android SDK的環(huán)境變量“確定”后,重新啟動計算機。重啟計算機以后,進入cmd命令窗口,檢查SDK是不是安裝成功。運行 android h 如果出現(xiàn)類似如圖3.4所示的輸出,表明安裝成功:圖3.4 驗證Android SDK是否安裝成功3.2.4 ADT 安裝打開 Eclipse IDE,進入菜單中的 Help - Install New Software。點擊Add.按鈕,彈出對
29、話框要求輸入Name和Location:Name自己隨便取,Location輸入/android/eclipse。如圖3.5所示:圖3.5 安裝ADT確定返回后,在work with后的下拉列表中選擇我們剛才添加的ADT,我們會看到下面有Developer Tools,展開它會有Android DDMS和Android Development Tool,勾選他們。 如圖3.6所示:圖3.6 安裝ADT組件然后就是按提示一步一步next。完成之后,選擇Window Preferences.。在左邊的面板選擇Android,然后在右側(cè)點擊Browse.
30、并選中SDK路徑,本機為:D:AndroidDevelopandroid-sdk-windows。點擊Apply、OK,配置完成。3.2.5 創(chuàng)建ADT為使Android應用程序可以在模擬器上運行,必須創(chuàng)建AVD。1、在Eclipse中。選擇Windows Android SDK and AVD Manager2、點擊左側(cè)面板的Virtual Devices,再右側(cè)點擊New3、填入Name,選擇Target的API,SD Card大小任意,Skin隨便選,Hardware目前保持默認值4、點擊Create AVD即可完成創(chuàng)建AVD注意:如果你點擊左側(cè)面板的Virtual Devices,再右
31、側(cè)點擊New ,而target下拉列表沒有可選項時,這時候你:點擊左側(cè)面板的Available Packages在右側(cè)勾選/android/repository/repository.xml,如圖3.7所示:圖3.7 安裝ADT組件然后點擊Install Selected按鈕,接下來就是按提示做就行了,要做這兩步,原因是在Android SDK安裝中沒有安裝一些必要的可用包(Available Packages)。第4章 程序的實現(xiàn)4.1 Android項目的總體架構(gòu)以及其用途首先,用Eclipse新建一個Android項目,項目會自動生成一些目
32、錄及文件,如圖4.1所示:圖4.1 項目文件這些自動生成的目錄及文件是組成Android應用程序的必需部分,它們在應用程序中所起到的作用和主題功能如下:src:該目錄用來存放項目的源文件,當項目剛創(chuàng)建時,該文件夾中包含activity的源文件,以后用戶創(chuàng)建的所有源文件也都將存放在該文件夾中。gen:該文件夾中包含一個在創(chuàng)建項目時自動生成的R.java文件,該文件是只讀文件,不能手動修改。該文件中包含許多靜態(tài)的類,這些靜態(tài)類用來表示項目中所有資源的引用。assets:包含應用程序需要使用到的視頻與音頻文件。res:該文件是資源目錄,包含項目中的資源文件并將其編譯進應用程序。向些此目錄中添加資源文
33、件時,會被R.java自動記錄。該文件夾下會有5個子文件夾:drawabel-hdpi:應用程序中使用的圖標文件,高分辨率drawabel-ldpi::低分辨率drawabel-mdpi:中分辨率(系統(tǒng)會根據(jù)模擬器的分辨率自動到這幾個文件夾中去尋找對應的圖片)layout:界面布局文件values:包含字符串引用文件strings.xmlAndroidManifest.xml:項目的總配置文件,用來配置應用中所使用的各種組件,用來設(shè)置應用程序所提供的功能以及應用程序使用到的服務(wù)和Aperties:該文件負責記錄項目所需要的環(huán)境信息,如Android的版本信
34、息等。src里面包含的代碼即為項目中編寫的代碼,如圖4.2所示: 圖4.2 src包中文件com.iss.activity包中放的是程序視圖、監(jiān)聽器、狀態(tài)模式文件。com.picture.demo包中放的是程序四個主界面的應用程序組件(activity)等文件。com.util包中放的是程序遍歷、列表、自定義組件等文件。DadaAdapter包中放的是程序兩種基礎(chǔ)數(shù)據(jù)適配器文件。res里面包含的就是程序需要用到的資源文件(動畫,圖片,布局等),如圖4.3所示:圖4.3 res中文件drawabel-mdpi文件夾中放的是程序所要用到的背景圖片等一些圖片。layout文件夾中放的是程序的每個界面
35、的布局文件。其他文件的用途,如表4.1所示:表4.1 文件列表文件文件的用途gen文件夾里面的R.java文件里面包含了自動生成的資源的id(如圖片,布局,動畫,布局中的控件等資源)android2.2文件這就是android2.2系統(tǒng)的一個jar包assets文件夾存放一些如音樂文件,文本文件的資源,但是存在在這里的資源是沒有id的bin文件夾編譯后產(chǎn)生的一些文件以及程序的apk文件androidManifest.xml這個是項目的配置信息,比如android里面的4大組件就需要在這個xml里面注冊proguard.cfg這個是混淆器,增加反編譯你程序源代碼的難度per
36、ties項目的一些配置信息,如該程序是基于哪個android版本的4.2 功能的實現(xiàn)4.2.1 第一個界面-歡迎界面當一個Activity在PAUSE時,被kill之前,它可以調(diào)用onSaveInstanceState()來保存當前activity的狀態(tài)信息(在paused狀態(tài)時,要被KILLED的時候),setContentView就是設(shè)置一個Activity的顯示界面,Thread創(chuàng)建并控制線程,設(shè)置其優(yōu)先級并獲取其狀態(tài),findViewById是在尋找在xml中定義的指定id的對象。Overrideprotected void onCreate(Bundle ssavedInstance
37、State) super.onCreate(savedInstanceState);setContentView(R.layout.zzx_login);Thread thread = new Thread(this);thread.start();zzx_login_linearlayout = (LinearLayout)findViewById(R.id.zzx_login_linearlayout);zzx_login_linearlayout.startAnimation(getAnimation();開啟一個后臺線程來遍歷SD卡里面的圖片:Overridepublic void r
38、un() GetFileList getFileList = new GetFileList();list = getFileList.getFileList();public List getFileList() list = new ArrayList();list = getAllFileList(Environment.getExternalStorageDirectory();return list;以上getFileList()方法的作用就是遍歷SD里面的所有路徑,并返回一個存儲了數(shù)據(jù)的list。ArrayList就是傳說中的動態(tài)數(shù)組,getExternalStorageDirec
39、tory()來獲取外部存儲器的根目錄,return 返回的就是一個包含了所有包含圖片的文件夾的路徑的list。public List getAllFileList(File file) String fileName;if (file.isDirectory() & !file.isHidden() File fileList = file.listFiles();for (int i = 0; i fileList.length; i+) getAllFileList(fileListi); isDirectory()是檢查一個對象是否是文件夾isHidden()是檢查對象是否是隱藏值,ge
40、tAllFileList獲取所有文件。else fileName = file.toString();if (fileName.endsWith(.jpg) | fileName.endsWith(.bmp)|fileName.endsWith(.png) if (list.size() = 0) list.add(file.getParent(); else for (int i = 0; i list.size(); i+) if (file.getParent().equals(list.get(i) break; else while (i = list.size() - 1) lis
41、t.add(file.getParent(); return list;以上的代碼是判斷文件的格式是否是jpg、bmp或則png,如果是,獲取這些文件,并把這些文件返回到list中。功能實現(xiàn)的效果圖如圖4.4所示:圖4.4 首頁效果圖4.2.2 第二個界面-主界面為主界面的ListView設(shè)置適配器Adapter,并設(shè)置setOnItemClickListener點擊事件:Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layo
42、ut.main);ListView listView = (ListView) findViewById(R.id.main_listview);listView.setAdapter(new main_ListViewAdapter(this,zzx_loginActivity.list);listView.setOnItemClickListener(new OnItemClickListener() Overridepublic void onItemClick(AdapterView arg0, View arg1, int arg2,long arg3) arg1.setSelect
43、ed(true);TextView textView = (TextView) arg1.findViewById(R.id.file_name);String file_Name = textView.getText().toString();String file_Path = file_Name.split(-);Intent intent = new Intent(MainActivity.this,GridViewActivity.class);intent.putExtra(file_Path, file_Path0);startActivity(intent);list_pict
44、ure_path = new GetFileList().getPicturePath(file_Path0);以上代碼中Intent可以理解為不同組件通信的媒介或者信使,向Context.startActivity()或Activity.startActivityForResult()方法傳遞一個Intent對象,可以啟動一個activity,或使得一個已經(jīng)存在的activity去做一些新的事情。Listview的適配器的代碼如下:Overridepublic View getView(int position, View convertView, ViewGroup parent) MYH
45、older mHolder;if (convertView = null) convertView= layoutInflater.inflate(R.layout.main_listview_view,null);convertView.setSelected(true);mHolder = new MYHolder();mHolder.imageView=(ImageView)convertView.findViewById(R.id.image_file);mHolder.textView_fileName=(TextView)convertView.findViewById(R.id.
46、file_name); mHolder.textView_filePath=(TextView) convertView.findViewById(R.id.file_path);convertView.setTag(mHolder);以上代碼在getView()中實例化幾個convertView,當用戶滾動屏幕時,convertView是共用之前的,只是數(shù)據(jù)項被重新賦值了。public class MYHolder private ImageView imageView;private TextView textView_fileName;private TextView textView_
47、filePath;public Bitmap getImageBitMap(String picture_path) Bitmap bitmap = BitmapFactory.decodeFile(picture_path);return bitmap;以上convertView.getTag()包含了圖片的文件夾的路徑,get(position)為了獲得文件夾的父路徑,MYHolder是封裝類,包含了視圖的屬性。getImageBitMap是用于處理由像素數(shù)據(jù)定義的圖像的對象。功能實現(xiàn)效果圖如圖4.5所示:圖4.5 主界面效果圖4.2.3 第三個界面-GridView界面異步加載圖片(如果
48、不異步加載圖片的話,那么GridView的滑動速度就會相當慢,嚴重影響了用戶體驗效果):doInBackground方法和onPostExecute的參數(shù)必須對應,這兩個參數(shù)在AsyncTask聲明的泛型參數(shù)列表中指定,第一個為doInBackground接受的參數(shù),第二個為顯示進度的參數(shù),第三個為doInBackground返回和onPostExecute傳入的參數(shù)。將在onPreExecute 方法執(zhí)行后馬上執(zhí)行,該方法運行在后臺線程中。這里將主要負責執(zhí)行那些很耗時的后臺計算工作。可以調(diào)用 publishProgress方法來更新實時的任務(wù)進度。該方法是抽象方法,子類必須實現(xiàn): Overr
49、ideprotected Intent doInBackground(Integer. params) if (GridViewActivity.isToTop&GridViewActivity.isSureToTop) for (int i = params1; i params0; i-) String picture_Path = MainActivity.list_picture_path.get(i);Bitmap bitmap = getImageBitMap(picture_Path, new File(picture_Path);ImageBean imageBean = ne
50、w ImageBean(bitmap, i);publishProgress(imageBean);else for (int i = params0;i&file.length()60000&file.length() options = new Options();options.inSampleSize = 4;if (file.length()30000) options = new Options();options.inSampleSize = 2;Bitmap bitmap = BitmapFactory.decodeFile(picture_path,options);retu
51、rn bitmap;加載和顯示圖片是很消耗內(nèi)存的一件事,BitmapFactory.Options 類, 允許我們定義圖片以何種方式如何讀到內(nèi)存,當圖片太大,我們可以使圖片變成原來的1/5、1/4或則1/2。判斷GridView界面當中有多少圖片,當超過30張的時候加載前30張,當不超過30張的時候就加載現(xiàn)有的數(shù)目??刂茍D片的加載數(shù)量的代碼為:if (pictrue_number 30) startThreadToLoadImage(0, 30);isFullPage = true; else show_number = pictrue_number;startThreadToLoadImage(0, show_number);isFullPage = false;當該頁滑動到了底部的話就需要加載下一頁的圖片了,并且清理掉上一頁中的bitmap。檢測GridVi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 拆除工程安全施工方案示例
- 汽車服務(wù)企業(yè)售后管理規(guī)范
- 醫(yī)院藥品庫存管理規(guī)范及流程
- 部門績效考核流程與評分標準指引
- 二年級數(shù)學萬以內(nèi)數(shù)字認知測試題
- 三年級語文期末考試知識點大全
- 機動車年檢流程與操作規(guī)程解讀
- 中外學前教育發(fā)展史教學參考資料
- 智能制造裝備維護保養(yǎng)管理方案
- 幼教數(shù)學認知能力提升實踐方案
- 2024新能源集控中心儲能電站接入技術(shù)方案
- 綜合布線辦公樓布線方案
- 河南省信陽市2023-2024學年高二上學期期末教學質(zhì)量檢測數(shù)學試題(含答案解析)
- 北師大版七年級上冊數(shù)學 期末復習講義
- 零售行業(yè)的店面管理培訓資料
- 2023年初級經(jīng)濟師《初級人力資源專業(yè)知識與實務(wù)》歷年真題匯編(共270題)
- 培訓課件電氣接地保護培訓課件
- 污水管網(wǎng)工程監(jiān)理月報
- 安徽涵豐科技有限公司年產(chǎn)6000噸磷酸酯阻燃劑DOPO、4800噸磷酸酯阻燃劑DOPO衍生品、12000噸副產(chǎn)品鹽酸、38000噸聚合氯化鋁、20000噸固化劑項目環(huán)境影響報告書
- GB/T 17215.322-2008交流電測量設(shè)備特殊要求第22部分:靜止式有功電能表(0.2S級和0.5S級)
- 英語音標拼讀練習
評論
0/150
提交評論