2016Android應用開發入門教程_第1頁
2016Android應用開發入門教程_第2頁
2016Android應用開發入門教程_第3頁
2016Android應用開發入門教程_第4頁
2016Android應用開發入門教程_第5頁
已閱讀5頁,還剩137頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

Android應用開發入門教程PAGE2PAGE2PAGE11PAGE11目 錄第一篇Android系統結構和SDK使用 5第1章 Android的系統介紹 5系統介紹 5軟件結構和使用的工具 7第2章AndroidSDK的開發環境 10AndroidSDK的結構 10AndroidSDK環境安裝 安裝JDK基本Java環境。 安裝Eclipse 12獲得AndroidSDK 122.2.4(1).在Eclipse3.4(Ganymede)中安裝ADT 142.2.4(2).在Eclipse3.5(Galileo)中安裝ADT 172.2.5.在Eclipse中配置AndroidSDK 20Android中運行仿真器環境 21建立Android虛擬設備 21運行虛擬設備 22使用Android中的工具 23使用logcat 24使用仿真器控制 25命令行工具adb、mksdcard等 26使用設備控制 28Android中建立工程 29建立工程 29查看和編輯各個文件 31運行工程 33第二篇Android應用程序的概述和框架 36第3章Android應用層程序的開發方式 36應用程序開發的結構 36API參考文檔的使用 36第4章Android應用程序示例 40HelloActivity程序的運行 40HelloActivity的源文件結構 41Android.mk文件 41AndroidManifest.xml文件 42源代碼文件 42布局文件 43其他資源文件 43HelloActivity的編譯結構 43SkeletonApp的程序的運行 44SkeletonApp的源文件結構 44SkeletonApp的編譯結構 46第5章Android應用程序的內容 47Android應用程序的概念性描述 47應用程序的組成部分 47應用程序的生命周期 48應用程序包含的各個文件 50使用am工具啟動Android應用程序 51第三篇Android的UI系統實現 53第6章UI的基本外形和控制 53控件和基本事件的響應 53事件響應方法 54第二種響應方法 56第三種響應方法 57鍵盤事件的響應 57運動事件的處理 59屏幕間的跳轉和事件的傳遞 62跳轉的方法 62帶有返回值的跳轉 63菜單的使用 66彈出對話框 67提示信息和兩個按鈕的對話框 68提示信息和三個按鈕的對話框 69列表項對話框 70單選項和按鈕對話框 70復選項和按鈕對話框 71文本的按鍵對話框(使用布局文件) 72樣式的設置 74預定樣式對話框 74自定義樣式對話框 74窗口透明樣式示例 75第7章控件(Widget)的使用 78Android中控件的層次結構 78基本控件的使用 79普通按鈕 79圖像區域 80圖像按鈕 82進度條 83多種控件 85自定義的視圖 86第8章視圖組(ViewGroup)和布局(Layout)的使用 89Android的屏幕元素體系 89幾種獨立使用的視圖組 90網頁視圖 90旋轉按鈕 91文本切換器 93圖像切換器 94作為簡單容器使用的視圖組 95單選按鈕組 95使用滾動條 96布局(Layout) 99基本的布局內容 99線性布局(LinearLayout) 100相對布局(RelativeLayout) 101表單布局(TableLayout) 103網格(Grid)視圖組 103列表(List)視圖組 107使用Tab組織UI 109第9章2D圖形接口的使用 使用2D圖形接口的程序結構。 圖像、圖形、文本的基本繪制 文本的對齊方式 使用路徑效果(PathEffect) 剪裁效果 記錄繪制的過程 121動畫效果 123第10章OpenGL3D圖形的使用 125使用OpenGL圖形接口的程序結構。 125基本的繪制 126渲染器的實現 1273D動畫效果的實現 129第一篇Android系統結構和SDK使第1章 的系統介紹???????????系統介紹

???????????軟件結構和使用的工具系統介紹AndroidGoogleAndroidGoogleLinux平臺的、開源的、智能手機操作系件和應用程序,由于源代碼開放,Android可以被移植到不同的硬件平臺上。OHA(OpenHandsetAlliance,開放手機聯盟)Google33Android移動平臺系統的發展而組建的一個組織。HTCGoogleG2HeroNexusAndroid手機,如下圖所示:圖G1、G2、Hero和NexusOne手機GoogleAndroid可以基于仿真器環境。Android1.5以前的仿真環境,Android1.6以后的仿真器環境如下所示:圖Android1.5以前的仿真器環境圖Android1.6以后的仿真器環境作為一個手機平臺,Android在技術上的優勢主要有以下幾點:全開放智能手機平臺多硬件平臺的支持使用眾多的標準化技術核心技術完整,統一SDK和文檔完善的輔助開發工具Android的開發者可以在完備的開發環境中進行開發,Android的官方網站也提供了豐富的文檔、資料。這樣有利于Android系統的開發和運行在一個良好的生態環境中。軟件結構和使用的工具從宏觀的角度來看,Android是一個開放的軟件系統,它包含了眾多的源代碼。從下至上,Android系統分成4個層次:1層次:Linux操作系統及驅動;2層次:本地代碼(C/C++)框架;3層次:Java框架;4層次:Java應用程序。Android系統的架構如圖所示:PAGEPAGE10PAGE9PAGE9JavaJavaJavaJavaJavaLinux用戶空間C/C++<-->JAVA系統API圖Android系統的架構Android的第1層次由C語言實現,第2層次由C和/C++實現,第3、4層次主要由Java代碼實現。12Linux12、3、4層次運行于用戶空間。第2層次和第3層次之間,是本地代碼層和Java代碼層的接口。34AndroidAPIAndroid3層次以下API即可。AndroidJavaAndroidJava基本類組成。對于Android應用程序的開發,主要關注第3層次和第4層次之間的接口。除了軟件本身的代碼之外,Android還提供了一系列工具來輔助系統開發,這些主要的工具包括:aap(ndrodssetPakgigozp(zipjakassets。adb(dridebgBrige,ndoid調試橋adbkAndroid的調試器連接在一起。andodandodndrodirtulevices(。L(AndrodInterfaceDscipionLngugndrodL工具可以生成進程Service可能使用的接口。Devices,Android虛擬設備)用于配置模擬器,模擬出類似的設備效果(DalvikDeugniorServi,vkvk或者設備上管理進程并協助調試。可以使用它殺死進程,選擇某個特定的進程來調試,產生跟蹤數據,觀察堆(heap)和線程信息,截取模擬器或設備的屏幕畫面,還有更多的功能。dx:dx工具用于將.class字節碼(bytecode)Android字節碼(保存在.dex文件中)這個字節碼文件AndroidJava虛擬機運行用的。Draw9-patch:Draw9-patch(WYSIWYG)NinePatch圖形。Eulato(drod系統的運行,使用模擬器非常適合調試和測試應用程序。Hierarchy層級觀察器(view)的布局層次展現出來,此外,還給當前界面提供了一個具有像素柵格(grid)的放大鏡觀察器。ksdcard(dikiage(例如SD卡。Monkey:Monkey是在模擬器或設備上運行的一個小程序,它能夠產生隨機的用戶事件流,例如:點擊(cictucgesueMney給正在開發的程序做隨機的但可重復的壓力測試。sqlite3:sqlite3SQLitesqlite標準命令行工具。TraceviewAndroid應用程序產生的跟蹤日志(tracelog)轉換為圖形化的分析視圖。2章AndroidSDK的開發環境???????????AndroidSDK

???????????AndroidSDK的環境安裝Android中運行仿真器環境Android中建立中程AndroidSDKAndroidAndroidAPISDKEclipseIDE開發環境。AndroidSDK的結構運行仿真器AndroidSDK文檔示例代碼運行仿真器AndroidSDK文檔示例代碼底層映像安裝插件設置SDKADTEclipse開發環境Eclipse開發環境本機JAVA環境工具WindowsLinux圖Android系統的IDE開發環境AndroidSDKWindowsSDK中工具不同Android開發者的網站上SDK。Android的SDK命名規則為:android-sdk-{主機系統}_{體系結構}_{版本}例如,Android提供SDK的幾個文件包如下所示:android-sdk-windows-1.5_r2.zipandroid-sdk-linux_x86-1.5_r2.zipandroid-sdk-windows-1.6_r1.zipandroid-sdk-linux_x86-1.6_r1.zipSDK的目錄結構如下所示:add-ons:附加的包;docs:HTML格式的離線文檔;platforms:SDK核心內容;tools:工具。在platforms中包含了的各個AndroidSDK版本的目錄中,包含系統映像,工具、示例代碼等內容。data/:包含默認的字體、資源等內容;images/Android(Androidsystemimage),默認的用戶數據映像(userdataimage),默認的內存盤映像(ramdiskimage)等等,這些映像是仿真器運行的時候需要使用的;samples/Androidskins/:包含了幾個仿真器的皮膚,每個皮膚對應了一種屏幕尺寸;templates/SDK開發工具的模板;tools/Anydevelopmenttoolsthatarespecifictotheplatformversion.android.jar:AndroidAndroid應用程序的時候被使用。Android的發布版本API級別Android1.12Android1.53Android1.64Android2.05Android2.0.1Android的發布版本API級別Android1.12Android1.53Android1.64Android2.05Android2.0.16Android2.17AndroidSDKADTDevelopmentEclipse集成環境的一個插件。EclipseAndroid應用程序既容易又快速。AndroidSDK環境安裝Android的SDKWindows版本需要以下的內容:JDK1.5或者JDK1.6Eclipse集成開發環境ADT(AndroidDevelopment插件AndroidSDK其中ADT和AndroidSDK可以到Android開發者的網站去下載,或者在線安裝亦可,ADT的功能如下所示:EclipseIDEAndroid開發工具。例如,ADTEclipse訪問DDMS工具的很多功能——屏幕截圖、管理端口轉發g提供了一個新的項目向導wojtidndridAndroid應用程序的過程變得自動化,以及簡單易行。AndroidAndroidmanifestXML在Eclipse環境中使用AndroidSDK的步驟如下所示:安裝JDK基本Java環境。Eclipse的運行需要依賴JDK,因此需要下載使用JDK的包,并進行安裝。JDK1.6版本其文件為jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe,點擊直接進行安裝即可。安裝EclipseEclipse集成開發環境是開放的軟件,可以到Eclipse的網站上去下載:/downloads/Eclipse包含了以下的幾個版本Eclipse3.3(Europa)Eclipse3.4(Ganymede)Eclipse3.5(Galileo)在AndroidEclipse3.4和Eclipse3.5Eclipse3.3Android官方的驗證。如果使用Eclipse3.4,可以去下載eclipse-SDK-3.4-win32.zip包;如果使用Eclipse3.5,可以去下載eclipse-SDK-3.5.1-win32.zipeclipse.exe文件。獲得AndroidSDKAndroidSDKAndroidAndroidSDK,可能使用到兩種方式:AndroidSDK的包(Archives)通過軟件升級的方式(Setup)下載AndroidSDKAndroidSDK1.6AndroidSDK1.1AndroidSDK1.5AndroidSDK1.6可以直接從AndroidSDK包含LinuxWindowsMACWindowsWindows的版本,例如:android-sdk-windows-1.5_r2.zip,android-sdk-windows-1.6_r1.zip,這個M的大小。以這種方式下載的AndroidSDK,不需要安裝,直接解壓縮即可。目前Android系統推薦使用的方式軟件升級獲得Android包:android-sdk_r04-windows.zip從ndrdndrodSK的相關包aoid-sk_r4ino.zpndrd20MSetupSDK是通過這個可執行程序獲得的。解AndroidSDK的基本目錄結構,但是其中還沒有實際的內容。SDKSetup.exeAndroidSDK運行程序,AndroidSDK的,出現SDK的下載界面:圖AndroidSDK的安裝界面SettnsForce項,并且選擇保存(Saveadpl。圖設置安裝路徑回到InstalledPackages中,進行安裝,出現Android的各個版本的SDK、工具、文檔的安裝界面,如下所示:圖選擇要安裝的組件每個組件可以選擇,接受(Accept)表示安裝,拒絕(Reject)表示不安裝,接受全部(AcceptAll)表示安裝所有的內容。文檔一般安裝成最新的版本。選擇后,安裝程序將依次安裝各個組件。PAGE14PAGE14PAGE15PAGE15圖安裝界面tempzipAndroidSDK。2.2.4(1).在Eclipse3.4(Ganymede)中安裝ADT第一步:啟動Eclipse選擇“Help”>“SoftwareUpdates...”準備安裝插件。圖Eclipse3.4中選擇軟件升級第二步:在打開的對話框中點擊“AvailableSoftware”,出現Eclipse的現有軟件對話框。圖Eclipse3.4中選擇要安裝的插件點擊右側自上而下的第3個按鈕,“AddSite...”準備增加插件。圖增加ADT的路徑在“AddSite”對話框中,輸入Android插件的路徑:/android/eclipse/ArchiveADT(目前最新的版ADT-0.9.5.zip)。pluginURLDeveloperDeveloperTools”中,圖Eclipse3.4中選擇安裝Android的DDMS和ADT然后點擊“Install...”按鈕,繼續運行,如圖所示:圖Eclipse3.4中進行安裝Android的DDMS和ADT選擇Next將出現如圖的對話框:圖Eclipse3.4中選擇同意Android的協議選擇接受(accept)FinishAndroid組件的階段。安裝的過程要經過尋找依賴和安裝兩個階段,如圖所示:圖Eclipse3.4中解決依賴關系和安裝第四步:安裝完成,關閉并重新啟動Eclipse。再次進入Eclipse3.4后,將發現ADT已經被安裝。2.2.4(2).在Eclipse3.5(Galileo)中安裝ADT第一步:啟動Eclipse選擇“Help”>“InstallNewSoftware...”準備安裝插件。圖Eclipse3.5中選擇安裝新軟件第二步:出現軟件升級的對話框Eclipse3.5的軟件升級的對話框3個按鈕,“AddSite...”準備增加插件。圖Eclipse3.5中增加ADT插件的路徑在“AddSite”對話框中,輸入Android插件的路徑:/android/eclipse/另外的一種方式是點擊Archive…按鈕,這樣可以不使用網絡,直接指定磁盤中的ADT包(最新的版本是ADT-0.9.5.zip)。with/android/eclipse/,后面的列表變為了“DeveloperTools”,其中包含了兩個項目:AndroidDDMSAndroidDevelopment選擇繼續進行安裝:圖Eclipse3.5中選擇安裝Android的DDMS和ADT選中后,點擊Finish將出現安裝的詳細信息的對話框,如圖所示:圖Eclipse3.5中選擇安裝Android的插件選擇Next進行下一步的安裝。圖Eclipse3.5中選擇同意Android的協議20202121FinishAndroid圖Eclipse3.5中選擇進行Android的插件第五步:安裝完成,關閉并重新啟動Eclipse。再次進入Eclipse3.5后,將發現ADT已經被安裝。2.2.5.在Eclipse中配置AndroidSDK進入安裝ADT的Eclipse環境后,選擇“Window”>“Preference”,從左側的列表中選擇Android項:圖Eclipse中選擇AndroidSDK的路徑左側的Android選項是由于安裝了Android的SDK而出現的。在SDK設置SDKLocation中,點擊“Browse”…按鈕;選擇Android,SDK的目錄,點擊“OK”按鈕。中運行仿真器環境Android虛擬設備AndroidAndroidEclipseWindow”>“AndroidAVDManagerAndroidSDKandAVDDeviceManager圖AndroidSDK和AVD管理器AndroidNew選擇建立一個虛擬設備。建立新的Android虛擬設備的窗口為CreatenewAVD,如圖所示:圖建立新的AVDPAGE22PAGE22PAGE23PAGE23Android虛擬設備的建立包含了以下的一些選項:名字(ae目標(agK版本(KplatformK)SDSDSD卡映像文件,SDmksdcard工具建立的。皮膚(n:這里皮膚的含義其實是仿真器運行尺寸的大小,默認的尺寸有P(32x0,-L(480x320)等,也可以通過直接指定尺寸的方式制定屏幕的大小。屬性:可以由用戶指定仿真器運行的時候,Android系統中一些屬性運行虛擬設備AndroidSDKandAVDDeviceManagerAndroidHVGA-P(320x480)尺寸的運行結果如圖所示:圖使用仿真器的運行Android系統出現窗口的左側是運行的仿真器的屏幕,右側是模擬的鍵盤。設備啟動后,可以使用右側的鍵盤模擬真實設備的鍵盤操作,也可以用鼠標點擊(或者拖拽和長按)屏幕,模擬觸摸屏的操作。PC鍵按鍵之間的映射關系如下表所示:仿真器的虛擬按鍵鍵盤的按鍵HomeHOMEMenu(左軟按鍵)F2orupbuttonStar(右軟按鍵)Shift-F2orPageDownBackESCCall/dialbuttonF3Hangup/endcallbuttonF4SearchF5PowerbuttonF7AudiovolumeupbuttonKEYPAD_PLUS,Ctrl-5AudiovolumedownbuttonKEYPAD_MINUS,Ctrl-F6CamerabuttonCtrl-KEYPAD_5,Ctrl-F3切換到上一個布局方向(例如portrait和landscape)KEYPAD_7,Ctrl-F11切換到下一個布局方向(例如portrait和landscape)KEYPAD_9,Ctrl-F12切換Cell網絡的開關on/offF8切換CodeprofilingF9切換全屏模式Alt-Enter切換跟蹤球(trackball)模式F6臨時進入跟蹤球(trackball)模式(當長按按鍵的時候)DeleteDPadleft/up/right/downKEYPAD_4/8/6/2DPadcenterclickKEYPAD_5Onionalpha的增加和減少KEYPAD_MULTIPLY(*)/KEYPAD_DIVIDE(/)Android仿真器啟動虛擬設備之后,默認就可以使用主機的網絡作為自己的網絡、使用主機的音頻設備作為自己的聲音輸出。使用Android中的工具AndroidWindow->ShowViewOther選項,Android的各個工具。調用的過程如下圖所示:圖選擇Android的各個工具選擇Android工具的對話框如圖所示:圖選擇Android工具的對話框Device(設備控制EmulatorControl(仿真器控制FileExplore(文件瀏覽Heap(堆內存LogcatResourceExplore(資源瀏覽Threads(線程等使用logcatLogcatLogAndroid圖使用Logcat工具顯示LOGLogcatLinuxGUI的LogcatAndroid、ID(Pid)、標簽(tag)、Log內容(Message)等項目。#logcat[options][filterspecs]LogcatLog的過濾器(Filter)Log信息,屏蔽其他的信息。logcatsystem/bin目錄中,Logcat的使用方法如下所示:#logcat[options][filterspecs]logcat工具的選項如下所示:-s '*:s-f<filename> 輸出到文件,在默認情況下是標準輸出-rkbytes>] 循環log的字節數(16),需要–f-n<count> log4-v<format>設置log的打印格式,<format>是下面的一種:briefprocesstagthreadrawtimethreadtimelong-c log并退出-d log并退出(不阻塞)-g 得到環形緩沖區的大小并退出-b<buffer> 請求不同的環形緩沖區('main'(默認)、'radio'、'events')-B將log輸出到二進制文件中使用仿真器控制選擇EmulatorControl選項可以開啟仿真器的控制對話框,它的界面如下所示:圖Android仿真器控制界面它甚至可以模擬打電話,發短信的過程。例如在incomingnumber中輸入電話號碼,然后點擊Call按鈕。這是仿真器的運行界面如圖所示:圖Android仿真器接收來電接受電話的程序已經被調用起來,這里顯示的電話號碼1-234-56,也是在仿真器控制的窗口中設置的。模擬發送短信的界面顯示如下所示:圖Android仿真器接收短信命令行工具adb、mksdcard等AndroidWindows的開始->cmd并確adbmksdcardAndroidSDK的tools目錄中,使用命令行的窗口如圖所示:PAGEPAGE27PAGE28PAGE28#psUSERPID PPID#psUSERPID PPIDVSIZERSS WCHAN PCNAME圖在命令行中使用adbadb(AndroidDebugBridge,Android調試橋)AndroidUSB連adb進行調試,通常在命令行的界面中。shellAndroidLinuxshellshell提示符后執行Android系統提供的Linux命令。#ls-l使用ls命令查看Android系統根目錄:#ls-ldrwxrwxrwtrootroot2009-06-1502:17sqlite_stmt_journalsdrwxrwxsystemcache2009-06-1502:18cachedsystemsystem2009-06-1502:17sdcardlrwxrwxrwxrootroot2009-06-1502:17etc->/system/etcdrwxr-xr-xrootroot2009-05-2802:16systemdrwxr-xr-xrootroot1970-01-0100:00sysdrwxr-xrootroot1970-01-0100:00sbindr-xr-xr-xrootroot1970-01-0100:00proc-rwxr-xrootroot90751970-01-0100:00init.rc-rwxr-xrootroot16771970-01-0100:00init.goldfish.rc-rwxr-xrootroot1065681970-01-0100:00init-rw-r--r--rootroot1181970-01-0100:00pdrwxrwx--xsystemsystem2009-05-2802:49datadrwxrootroot1970-01-0100:00rootdrwxr-xr-xrootroot2009-06-1502:18devAndroidout/target/product/generic/rootetc、proc等Androidsystem映像被掛接到根data目錄中。使用ps命令可以查看Android系統的進程:root10280188c008de040000c74cS/initroot2000c004b33400000000Skthreaddroot3200c003cf6800000000Sksoftirqd/0root4200c00486b800000000Sevents/0root5200c00486b800000000Skhelperroot10200c00486b800000000Ssuspendroot42200c00486b800000000Skblockd/0root45200c00486b800000000Scqueueroot47200c016f13c00000000Skseriodroot51200c00486b800000000Skmmcdroot96200c0065c7c00000000Spdflushroot97200c0065c7c00000000Spdflushroot98200c006990c00000000Skswapd0root100200c00486b800000000Saio/0root269200c016c88400000000Smtdblockdroot304200c00486b800000000Srpciod/0root5401740328c003aa1cafe0d08cS/system/bin/shroot54517225620876c008e3f4afe0c584Szygotemedia5461174043496ffffffffafe0c45cS/system/bin/mediaserverbluetooth5471 1168568 c008de04afe0d25cS/system/bin/dbus-daemonroot5481800300c01f3b04afe0c1bcS/system/bin/installdroot5511840356c00ae7b0afe0d1dcS/system/bin/qemudroot55411268116ffffffff0000e8f4S/sbin/adbdsystem57054517565223972ffffffffafe0c45cSsystem_serverradio60954510570417584ffffffffafe0d3e4Scom.android.phoneapp_461154511338019492ffffffffafe0d3e4Scess.acoreapp_126325459539213228ffffffffafe0d3e4Scom.android.mmsapp_4645app_5 6559719212964ffffffffafe0d3e4Scom.android.inputmethod.lati545 9516413376ffffffffafe0d3e4Scess.mediaapp_76685459770014264ffffffffafe0d3e4Scom.android.calendarapp_116845459413212624ffffffffafe0d3e4Scom.android.alarmclockroot70254088834000000000afe0c1bcRpssystemrootrootradio5415425435441 808 264 c01654b4afe0c45cS/system/bin/servicemanager1118366685392364264684c008e3f4afe0c584S/system/bin/voldc0192c20afe0cdecS/system/bin/debuggerdffffffffafe0caccS/system/bin/rildsystemrootrootradio5415425435441 808 264 c01654b4afe0c45cS/system/bin/servicemanager1118366685392364264684c008e3f4afe0c584S/system/bin/voldc0192c20afe0cdecS/system/bin/debuggerdffffffffafe0caccS/system/bin/rildnZygote/system/bin/sh/system/bin/mediaserverinitinitcess.acore(Home)com.android.mmszygote。使用adb連接目標系統終端的方式如下所示:adbadbshell使用adb安裝應用程序的方法為:adbinstalladbinstallXXX.apk使用adb在主機和目標機之間傳送文件的方法為:adbpush{host_path}adbpush{host_path}{target_path}adbpull{target_path}{host_path}mksdcard是用來建立SD卡映像的工具,用來建立一個Fat32格式的磁盤映像,其使用方法如下所示:mksdcard[-llabel]<size><file>mksdcard[-llabel]<size><file>mksdcard的參數-l用于指定磁盤映像的標簽,size用于指定磁盤映像的大小,其后面可以跟K、M、G等參數,file是磁盤映像的文件名稱,這個文件也就是在仿真器運行過程中指定的文件。mksdcard128Msdcard.imgmksdcard128Msdcard.img這表示建立了一個大小為128M,名稱為sdcard.img的Fat32磁盤映像文件。使用設備控制Device工具可以用于進一步控制仿真器的運行狀況,在其中可以查看Heap(堆內存)、Threads(線程)的信息,還具有停止某個進程的運行,截取屏幕等功能。Device工具的窗口如圖所示:PAGE29PAGE29PAGE30PAGE30圖Android的設備工具點擊Device窗口工具欄最右側的ScreenCapture按鈕,可以打開截取屏幕的窗口,如上圖所示。Android中建立工程建立工程AndroidSDKSDK中建立工程并進行調試了。Android工程步驟如下:選擇“File”>“New”>“Project”選擇“Android”>“AndroidProject”,點擊“Next”按鈕:選擇thecontentsfortheproject。圖建立新的Android工程可以選擇新建工程或從源代碼建立工程,如果從源代碼建立工程,那么所指定的目錄中需要具有AndroidManifest.xml文件。圖使用已有的示例建立新工程SDKplatforms/android-XXX/samplesSDK自帶的示例程序,HelloActivity示例程序。圖選擇工程示例點擊“Finish”按鈕,工程將被建立。查看和編輯各個文件IDEAndroid具查看。查看AndroidManifest.xml文件的情況,如圖所示:圖查看和編輯AndroidManifest.xml文件AndroidManifest.xmlAndroidManifest.xml標簽將切換到文本模式,使用文本的形式查看和編輯AndroidManifest.xml中的內容。瀏覽布局文件,如圖所示:圖查看和編輯布局文件瀏覽布局文件是一個更有用的功能,可以直觀地查看程序的UI布局,點擊標簽(布局文件的名稱)可以切換到文本模式。利用IDE的布局查看器,可以在程序沒有運行的情況下直接查看和組織目標UI界面。查看各個value文件和建立數值,如圖所示:圖查看各個value文件和建立數值查看各個Java源代碼文件,如圖所示:PAGEPAGE37PAGE34PAGE34圖Java源代碼文件的編輯界面Java源代碼采用文本的方式,但是在右邊也列出了Java源代碼中類的層次結構。在IDE的源代碼環境開發JAVA程序,還具有自動修正、自動增加依賴包、類方法屬性查找等功能。運行工程AndroidRunDebug圖運行Android工程開始運行的時候,如果現在已經有連接到真實的設備或者仿真器設備上,將直接使用這個設備,否則將啟動一個新的仿真設備。[HelloActivity]AndroidLaunch![HelloActivity]adbisrunningnormally.[HelloActivity]Performingcom.example.android.helloactivity.HelloActivityactivitylaunch[HelloActivity]AutomaticTargetMode:usingexistingemulator[HelloActivity]AndroidLaunch![HelloActivity]adbisrunningnormally.[HelloActivity]Performingcom.example.android.helloactivity.HelloActivityactivitylaunch[HelloActivity]AutomaticTargetMode:usingexistingemulator'emulator-5554'runningcompatibleAVD'HVGA'[HelloActivity]WARNING:ApplicationdoesnotspecifyanAPIlevelrequirement![HelloActivity]DeviceAPIversionis4(Android1.6)[HelloActivity]UploadingHelloActivity.apkontodevice'emulator-5554'[HelloActivity]InstallingHelloActivity.apk...[HelloActivity]Success![HelloActivity]Startingactivitycom.example.android.helloactivity.HelloActivityondevice[HelloActivity]ActivityManager:Starting:Intent{cmp=com.example.android.helloactivity/.HelloActivity}圖運行HelloActivity程序在運行的一個仿真設備的時候,可以進一步通過選擇“RunAs”中的“RunConfigurations”進行進一步的配置。啟動后的界面如圖所示:圖選擇工程中運行的動作其中,在Android的標簽中可以選擇啟動的工程,啟動活動(LaunchAction)選項中可以選擇啟動的哪一個活動(Android的一個工程中可以包含多個活動)。在Target標簽中可以選擇啟動的時候使用的設備。第二篇應用程序的概述和框架3章應用層程序的開發方式???????????API參考文檔的使用應用程序開發的結構

???????????Android應用程序開發是Android開發中最上面的一個層次,它們構建在Android系統提供的API之上。Android應用程序的基礎是Android提供的各個Java類,這些類組成了Android系統級的API。應用程序Android預置自開發應用程序自開發應用程序自開發應用程序應用程序Android預置自開發應用程序自開發應用程序自開發應用程序系統APIAndroid框架層軟件硬件抽象層硬件抽象層Android手機 Android仿真器圖Android應用的開發結構Android應用程序可以基于兩種環境來開發:AndroidSDKAndroid源代碼。Android系統本身內置了一(也包括內容提供者(SDK環境和源代碼環境)用戶自行開發的應用程序和AndroidAndroid框架層的API來構建的,它們的區別僅僅在于他們是否被包含在默認的Android系統中。API參考文檔的使用在開發Android應用程序時可以參考SDK中提供的參考文檔(SDK\docs\index.html),其內容包含在Reference標簽中。ClassOverview(類的介紹)ClassOverview(類的介紹)PackgeIndx(包索引;ClassIndex(類索引。Android(也包括接口等內容根據包索引,每一個包中包含的主要內容大致如下所示:Interface接口類;Classes(;Enu(枚舉值;Exceptions(異常。每個包中包含的內容,基本上是Java語言中標準的內容。AndroidAndroidAPI的主要組成部分,主要參考的內容包括了以下的內容。根據類索引,每一個類中包含的主要內容大致如下所示:擴展和實現的內容;按包名的繼承(擴展)關系(可用于反向查找這個類所在的包;Overvie概覽;XMLAttribue(XML;Contat常量;Contrutor(構造方法;Methods(方法。JavaXML屬性AndroidpublicclassActivityextendsContextThemeWrapperimplementsComponentCallbacksKeyEvent.CallbackLayoutInflater.FactoryView.OnCreateContextMenuListenerWindow.Callbackjava.lang.ObjectpublicclassActivityextendsContextThemeWrapperimplementsComponentCallbacksKeyEvent.CallbackLayoutInflater.FactoryView.OnCreateContextMenuListenerWindow.Callbackjava.lang.Object?android.content.Context?android.content.ContextWrapper?android.view.ContextThemeWrapper?android.app.ActivityKnownDirectSubclassesActivityGroup,AliasActivity,ExpandableListActivity,ListActivityKnownIndirectSubclassesLauncherActivity,PreferenceActivity,TabActivity從Activity類中可以看出,類的幫助文檔主要包含以下一些內容:publicclass:表示只是一個公開的類; exends:標明了這個類繼承的父類(a只有一個唯一的父類,后面的內容表示這個類從祖先開始繼承的關系。這里的類使用的是包含了其所在包名稱的全名,因此在這里可以得知類及其祖先類屬于哪個包;Ipleents:標明了這個類實現的接口(可以有多個;KnownDirectSubclasses:這個類的直接繼承者;KnownIndirectSubclasses:這個類的間接繼承者。從中,可以看出Activity類在android.app包中,直接繼承了android.view.ContextThemeWrapper,并且被ActivityGroup,ListActivity等幾個類直接繼承。被LauncherActivity等幾個類間接繼承。類的介紹的主要內容在后面,主要部分是各個類的方法的說明,這些方法也是在類的使用過程中需要主要關注的內容。38383939SummarySummaryConstants(常量的列表)InheritedConstants(繼承的常量的列表,按照繼承類的順序)PublicConstructors(公共的構造函數)PublicMethods(公共方法的列表)ProtectedMethods(保護方法的列表)InheritedMethods(繼承方法的列表,按照繼承類的順序)(詳細的介紹)類的幫助中一般只列出了自己的常量、方法、XML屬性等,對于繼承得到的內容(包括方法和常量),JAVAUIXMLattributes(XML屬性)一類。publicclassButtonextendsTextViewjava.lang.Object?android.view.View?android.widget.TextView?android.widget.ButtonKnownDirectSubclassesCompoundButtonpublicclassButtonextendsTextViewjava.lang.Object?android.view.View?android.widget.TextView?android.widget.ButtonKnownDirectSubclassesCompoundButtonCompoundButtonAbuttonwithtwostates,checkedandunchecked.KnownIndirectSubclassesCheckBox,RadioButton,ToggleButtonXMLattributesSeeButtonAttributes,TextViewAttributes,ViewAttributesSummaryInheritedXMLAttributesFromclassandroid.widget.TextViewFromclassandroid.view.ViewInheritedConstantsPublicConstructorsInheritedMethodsButton類的頭部信息和普通的類基本相同,但是包含了XMLattributesButtonAttributes,TextViewAttributes,ViewAttributes,根據類的繼承關系可以得知,這個啟示是自己的屬性、父類(Button(Button。ButtonXMLInheritedXMLAttributesFromclassandroid.widget.TextView和Fromclassandroid.view.View可以得到這些屬性的列表。每個屬性包含了AttributeName(屬性名稱)RelatedMethod(相關方法)Description(描述)幾個項目。例如,TextView的幾個屬性如下所示:android:textsetText(CharSequence)Texttodisplay.android:textColorsetTextColor(ColorStateList)Textcolor.android:text等表示了屬性在XML文件中的名稱,setText()等表示了在JAVA源文件中使用的方法,最右側的內容是這個屬性的描述。XMLattributesXML屬性的幫助以及相關的值可以在android.R.styleable類中查找,這個類也可以直接被調出,方法為:PackageIndex→android→android.R.styleableandroid.R.styleable中列出了一些類的XML屬性,例如TextView的capitalize屬性的相關內容如下所示:publicstaticfinalintTextView_capitalizeIfpublicstaticfinalintTextView_capitalizeIfset,specifiesthatthisTextViewhasatextualinputmethodandshouldautomaticallycapitalizewhattheusertypes.Thedefaultis"none".usertypes.Thedefaultis"none".Mustbeoneofthefollowingconstantvalues.ConstantValueDescriptionnone 0Don'tautomaticallycapitalizeanything.sentences 1Capitalizethefirstwordofeachsentence.words 2Capitalizethefirstletterofeveryword.characters 3Capitalizeeverycharacter.Thiscorrespondstotheglobalattributeresourcesymbolcapitalize.ConstantValue:44(0x0000002c)這里列出了屬性的值(Value),這些值的本質是整數常量,但是在XML中使用的還是名稱。整數值是Android內部運作使用的。XMLAndroidManifest.xmlXML文件中使用。android.R.styleableAndroidManifestAndroidManifest.xml中使用的屬性。例如,AndroidManifestAction項目是AndroidManifest.xml中的Action標簽中使用的內容,如下所示:publicstaticfinalint[]AndroidManifestActionpublicstaticfinalint[]AndroidManifestActionAttributesthatcanbesuppliedinanAndroidManifest.xmlactiontag,achildoftheintent-filtertag.SeeaddAction(String)formoreinformation.Includesthefollowingattributes:AttributeSummaryandroid:nameThenameofanactionthatishandled,usingtheJava-stylenamingconvention.SeeAlsoAndroidManifestAction_nameAttributeSummary中的android:name引用的內容是AndroidManifest.xml中的Action標簽可以使用的android:name屬性。相比各種類的幫助信息,接口(Interface)的幫助信息更加簡單一些。一般的接口是需要被實現才能夠使用的。例如,View.OnClickListener的幫助信息前面的內容如下所示:publicstaticinterfaceView.OnClickListenerpublicstaticinterfaceView.OnClickListenerandroid.view.View.OnClickListenerKnownIndirectSubclassesCharacterPickerDialog,KeyboardView這里的,android.view.View.OnClickListener表示了View.OnClickListener這個接口在android.view這個包中。對于一個接口,IndirectSubclasses的含義為實現(implements)這個接口。SummaryPublicMethodsabstractvoidonClick(Viewv)Calledwhenaviewhasbeenclicked.SummaryPublicMethodsabstractvoidonClick(Viewv)Calledwhenaviewhasbeenclicked.View.OnClickListeneonClick()函數。404041414章Android應用程序示例??????????? ???????????HelloActivity程序的運行HelloActivity的源文件結構HelloActivity的編譯結構SkeletonApp 的程序的運行SkeletonApp 源文件結構SkeletonApp 編譯結構HelloWorldAndroid中最Android程序的文件結構和編譯后的結構。HelloActivity程序的運行HelloActivity是一個簡單的Android應用程序,其工程文件名稱為HelloActivity,在Android的源代碼和SDK中,都包含了這個包。HelloActivity的圖標和運行情況如圖所示。圖HelloActivity的圖標和運行情況這個程序有一個簡單的活動(Activity),用于啟動一個新的界面,并在界面上顯示“Hello,World!”字符串。HelloActivity的源文件結構HelloActivity工程的源文件的結構按照目錄樹的方式如下所示:HelloActivity/|Android.mk (工程管理文件)|AndroidManifest.xml (工程描述文件)|res (資源文件)| |--layout| | `-hello_activity.xml (布局文件)| `--values| `--strings.xml (字串資源文件)|src (Java源代碼文件)`--com`--example`--android`--helloactivity`--HelloActivity.javaHelloActivity工程中另有一個tests目錄,其中也具有自己的Android.mk和AndroidManifest.xml文件,這是另一個工程,是HelloActivity工程的測試程序。Android.mk文件LOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)LOCAL_MODULE_TAGS:=samples#Onlycompilesourcejavafilesinthisapk.LOCAL_SRC_FILES:=$(callall-java-files-under,src)LOCAL_PACKAGE_NAME:=HelloActivityLOCAL_SDK_VERSION:=currentincludeLOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)LOCAL_MODULE_TAGS:=samples#Onlycompilesourcejavafilesinthisapk.LOCAL_SRC_FILES:=$(callall-java-files-under,src)LOCAL_PACKAGE_NAME:=HelloActivityLOCAL_SDK_VERSION:=currentinclude$(BUILD_PACKAGE)#Usethefollowingincludetomakeourtestapk.include$(callall-makefiles-under,$(LOCAL_PATH))Android.mkAndroid編譯過程中通用的工程管理文件,本地程序、本地庫和Java程序包都使用Java多的內容,其中關鍵的內容是使用include$(BUILD_PACKAGE)表示從當前目錄編譯Java應用程序包。LOCAL_PACKAGE_NAME定義的是這個程序的APKLOCAL_MODULE_TAGSLOCAL_MODULE_TAGSsamplesAPK包,但是不安裝在系統中。使用不eng,將安裝到目標系統中。最后一行的include$(callall-kefiles-under$(LOCAL_PATH)Android.k文件,本例中也就是tests目錄中的內容。42424343AndroidManifest.xml文件AndroidManifest.xml文件是這個Android應用程序的工程描述文件,包含了宏觀上的內容,如下所示:<?xmlversion="1.0"encoding="utf-8"?><?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="/apk/res/android"package="com.example.android.helloactivity"><applicationandroid:label="Hello,Activity!"><activityandroid:name="HelloActivity"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></manifest>application(表示應用程序)activity(表示活動。活動是應用程序中的一個組件,一個應用程序中也可以包含若干個組件。包名定義為com.example.android.helloactivity,表示將從src目錄的com/example/android/helloactivityJavaHelloActivity.javaintent-filtercategory中的ent.category.LAUNCHER表示活動將在Android的桌面(Android默認的桌面程序名稱也是LAUNCHER)上出現。applicationandroid:label為<activityandroid:name="HelloActivity"android:label="@string/label_name"android:icon="@drawable/icon_name"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></activity>在AndroidManifest.xml文件中為一個活動指定<activityandroid:name="HelloActivity"android:label="@string/label_name"android:icon="@drawable/icon_name"><intent-filter><actionandroid:name="ent.action.MAIN"/><categoryandroid:name="ent.category.LAUNCHER"/></intent-filter></activity>android:labelandroid:iconres/drawable中對應名稱的圖片文件作為圖標(icon_name.png)。activity和application都具有android:label和android:icon等屬性,由于活動是程序的單元,且應用可以包含多個活動,因此程序首先將使用activity中的這些標簽,如果沒有則使用上一級的application中標簽的定義源代碼文件HelloActivityHelloActivity.javasrccom/example/android/helloactivity中,內容如下所示:packagecom.example.android.helloactivity;importandroid.app.Activity;packagecom.example.android.helloactivity;importandroid.app.Activity;importandroid.os.Bundle;publicclassHelloActivityextendsActivity{publicHelloActivity(){}@Override//定義包名//引入包含的包publicvoidonCreate(BundlesavedInstanceState){//重載onCreate()方法super.onCreate(savedInstanceState);setContentView(R.layout.hello_activity);//使用hello_activity.xml布局文件}}HelloActivityAndroid系統API(Activity)指定了當前活動的布局,這里表示將從res/layout目錄中找到hello_activity.xml文件作為本例的布局文件使用。布局文件<?xmlversion="1.0"encoding="utf-8"?><EditTextxmlns:android="/apk/res/android"ndroid:id="@+id/text"android:layout_width="fill_parent"android:layout_height="fill_parent"android:textSize="18sp"android:autoText="true"android:capitalize="sentences“<?xmlversion="1.0"encoding="utf-8"?><EditTextxmlns:android="/apk/res/android"ndroid:id="@+id/text"android:layout_width="fill_parent"android:layout_height="fill_parent"android:textSize="18sp"android:autoText="true"android:capitalize="sentences“android:text="@string/hello_activity_text_text"/>UI元素——EditText,就是在界面上出現的占據全屏的可編輯文本框。在這里定義了這個可編輯文本框的初始化字符串為"@string/hello_activity_text_text",這個值在另外的資源文件string.xml。其他資源文件string.xml是本例中的一個資源文件,其內容如下所示:<?xmlversion="1.0"encoding="utf-8"?><?xmlversion="1.0"encoding="utf-8"?><resources><stringname="hello_activity_text_text">Hello,World!</string></resources>這里定義了名稱為“hello_activity_text_text”的字符串的內容為Hello,World!,這就是出現在屏幕上的字符串。HelloActivity的編譯結構AndroidSDK環境下開發生成的所有目標文件均在assets、bin、gen等目錄。gengen/com/ex

溫馨提示

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

評論

0/150

提交評論