Android移動開發(fā)(慕課版)(陳佳 李樹強 )全套教案課件_第1頁
Android移動開發(fā)(慕課版)(陳佳 李樹強 )全套教案課件_第2頁
Android移動開發(fā)(慕課版)(陳佳 李樹強 )全套教案課件_第3頁
Android移動開發(fā)(慕課版)(陳佳 李樹強 )全套教案課件_第4頁
Android移動開發(fā)(慕課版)(陳佳 李樹強 )全套教案課件_第5頁
已閱讀5頁,還剩517頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Android移動開發(fā)(慕課版)(陳佳李樹強)第1章

Android簡介.ppt第2章

Android開發(fā)環(huán)境.ppt第3章

第一個Android程序.ppt第4章

Android生命周期.ppt第5章

用戶界面設(shè)計.ppt第6章

組件通信與廣播消息.ppt第7章

Service應(yīng)用.ppt第8章

數(shù)據(jù)存儲與共享.ppt第9章

圖像繪制技術(shù).ppt第10章

位置服務(wù)與地圖應(yīng)用.ppt第11章

網(wǎng)絡(luò)技術(shù).ppt第12章

Widget組件開發(fā).ppt第13章

綜合開發(fā)實例——個人理財通.ppt第14章

課程設(shè)計——簡易打地鼠游戲.ppt全套可編輯PPT幻燈片課件(共14章)第1章Android簡介01手機操作系統(tǒng)03Android特征02Android發(fā)展史04Android平臺架構(gòu)手機操作系統(tǒng)1Android1iOS2WindowsMobile3WindowsPhone4BlackBerry5Symbian6主要內(nèi)容各手機操作系統(tǒng)的市場份額Android發(fā)展史2Android的標(biāo)志什么是AndroidAndroid本義是指“機器人”。它是Google公司專門為移動設(shè)備開發(fā)的平臺,其中包含了操作系統(tǒng)、中間件和核心應(yīng)用等。Android最早由AndyRubin創(chuàng)辦,于2005年被搜索巨人Google收購。2007年11月5日,Google正式發(fā)布該平臺。在2010年底,Android已經(jīng)超越稱霸10年的諾基亞Symbian系統(tǒng),成為全球最受歡迎的智能手機平臺。Android的主要版本及發(fā)布時間版本號別名發(fā)布時間1.5Cupcake(紙杯蛋糕)2009年4月30日1.6Donut(甜甜圈)2009年9月15日2.0éclair(閃電泡芙)2009年10月26日2.1éclair(閃電泡芙)2010年1月10日2.2Froyo(凍酸奶)2010年5月20日2.3Gingerbread(姜餅)2010年12月7日3.0Honeycomb(蜂窩)2011年2月2日4.0IceCreateSandwich(冰激凌三明治)2011年10月19日4.1JellyBean(果凍豆)

2012年6月28日4.2JellyBean(果凍豆)

2012年10月30日4.3JellyBean(果凍豆)

2013年7月25日4.4KitKat(奇巧巧克力)

2013年11月1日5.0Lollipop(棒棒糖)2014年10月15日Android特征3Android特征開放性1掙脫束縛2豐富的硬件3開發(fā)商4Google應(yīng)用5Android平臺架構(gòu)4Android平臺架構(gòu)小結(jié)本章首先對常用的智能手機操作系統(tǒng)進(jìn)行了簡要的介紹,然后介紹了的Android的發(fā)展史,以及Android發(fā)布以來重要的版本,接下來又介紹了Android的平臺特征,最后介紹了Android的平臺架構(gòu)。本章內(nèi)容是為了讓大家對Android有一個基本的了解,所以對于所介紹的內(nèi)容大家了解就可以。第2章Android開發(fā)環(huán)境子曰:“工欲善其事,必先利其器……”01安裝Android開發(fā)環(huán)境02AndroidSDK安裝Android開發(fā)環(huán)境1主要內(nèi)容安裝與配置JDK1獲取AndroidSDK2Eclipse的安裝與啟動3安裝ADT插件4安裝與配置JDK

JDK是支持Java程序開發(fā)和運行的Java開發(fā)工具包的簡稱。它原本是Sun公司的產(chǎn)品,不過由于Sun公司已經(jīng)被Oracle收購,因此JDK需要到Oracle公司的官方網(wǎng)站(/index.html)下載。如果您的系統(tǒng)是Windows32位,那么下載jdk-7u75-windows-i586.exe,如果是Windows64位的系統(tǒng),那么下載jdk-7u75-windows-x64.exe。安裝與配置JDKJRE全稱為JavaRuntimeEnvironment,它是Java運行環(huán)境,主要負(fù)責(zé)Java程序的運行,而JDK包含了Java程序開發(fā)所需要的編譯、調(diào)試等工具,另外還包含了JDK的源代碼。JDK的配置與測試(1)在“新建系統(tǒng)變量”對話框中,分別輸入變量名“JAVA_HOME”和變量值(即JDK的安裝路徑),這里為C:\Java\jdk1.7.0_75。(2)在“環(huán)境變量”對話框中修改Path變量的值,在原變量值最前端添加“.;%JAVA_HOME%\bin;”變量值(注意:最后的“;”不要丟掉,它用于分割不同的變量值)。(3)創(chuàng)建CLASSPATH變量,設(shè)置變量值為:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jarJDK的配置與測試獲取AndroidSDKAndroidSDK是Android開發(fā)工具包,提供了Android相關(guān)的API。學(xué)習(xí)開發(fā)Android應(yīng)用程序,需要下載安裝AndroidSDK。在Android的官方網(wǎng)站/中,可以下載到完整版的AndroidSDK,也可以下載到包含開發(fā)工具(AndroidStudio)的最新版本的AndroidSDK。在完整版的AndroidSDK中,包含了模擬器、教程、API文檔、示例代碼等內(nèi)容。掌握了基礎(chǔ)知識之后,進(jìn)行實際項目開發(fā)時,建議下載完整版的AndroidSDK,這樣可以方便查詢API文檔,及時解決遇到的問題。配置系統(tǒng)環(huán)境變量(1)在“新建系統(tǒng)變量”對話框中,創(chuàng)建變量,名稱為“ANDROID_SDK_HOME”,變量值為AndroidSDK的存儲位置(如J:\android\android-sdk)。(2)在“環(huán)境變量”對話框中,修改Path變量的值,在原變量值最前端添加“%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools;”在輸入變量名“ANDROID_SDK_HOME”時,一定要使用大部為大寫字母的變量名。Eclipse的安裝與啟動Eclipse可以從官方網(wǎng)站下載最新版本的Eclipse,具體網(wǎng)址為。目前最新版本為Eclipse4.4.2。讀者可到Eclipse的官方網(wǎng)站下載Eclipse4.4.2版本,下載后的文件名為eclipse-java-luna-SR2-win32-x86_64.zip。Eclipse提供的多國語言包,可以到/babel/中下載。安裝ADT插件Google專門為Eclipse開發(fā)了一個插件來輔助開發(fā),其名稱為AndroidDevelopmentTools(簡稱ADT)。安裝ADT插件后,不僅可以聯(lián)機調(diào)試,而且還能夠模擬各種手機事件、分析程序性能等。AndroidSDK2主要內(nèi)容目錄結(jié)構(gòu)1示例程序2幫助文檔3開發(fā)工具4目錄結(jié)構(gòu)示例程序幫助文檔開發(fā)工具1.Android模擬器Android模擬器支持的移動設(shè)備相關(guān)的硬件特性Android模擬器Android模擬器支持多種移動設(shè)備的硬件特性,例如:

ARMv5中央處理器和對應(yīng)的內(nèi)存管理單元(MMU);

16位液晶顯示器;一個或多個鍵盤(基于Qwerty鍵盤和相關(guān)的Dpad/Phone鍵);具有輸出和輸入能力的聲卡芯片;閃存分區(qū)(通過電腦上磁盤鏡像文件模擬);包括模擬SIM卡的GSM調(diào)制解調(diào)器。開發(fā)工具2.Android調(diào)試橋

Android調(diào)試橋(AndroidDebugBridge,adb)是AndroidSDK提供的一個工具,通過該工具可以直接操作Android模擬器或者設(shè)備,它的主要功能如下:運行Android設(shè)備的shell(命令行);管理Android模擬器或者設(shè)備的端口映射;在計算機和Android設(shè)備之間上傳或者下載文件;將本地apk文件安裝到Android模擬器或者設(shè)備上。開發(fā)工具3.DDMS

DDMS(DalvikDebugMonitorService)是Android開發(fā)環(huán)境的Dalvik虛擬機調(diào)試監(jiān)管服務(wù),使用它可以監(jiān)視Android系統(tǒng)中進(jìn)程、堆棧信息,查看LogCat日志,屏幕截圖、模擬電話呼叫和SMS短信,以及管理模擬器文件等。DDMS透視圖開發(fā)工具工具名稱啟動文件說明PNG和ETC1轉(zhuǎn)換工具etc1tool.exe命令行工具,支持將PNG和ETC1相互轉(zhuǎn)換數(shù)據(jù)庫工具sqlite3.exe用來創(chuàng)建和管理SQLite數(shù)據(jù)庫9Patch文件編輯工具draw9patch.bat9Patch是Android提供的可伸縮的圖形文件格式,基于PNG文件。使用draw9patch可以創(chuàng)建和編輯9Patch文件代碼優(yōu)化混淆工具proguard目錄通過刪除未使用的代碼,并重命名代碼中的類、字段和方法名稱,使代碼較難實施逆向工程模擬器控制工具monkeyrunner.bat允許通過代碼或命令,在外部控制模擬器或設(shè)備跟蹤顯示工具traceview.bat以圖形化的方式顯示應(yīng)用程序的執(zhí)行日志,用來調(diào)試應(yīng)用程序,分析執(zhí)行效率層級觀察器hierarchyviewer.bat對用戶界面進(jìn)行分析和調(diào)試,以圖形化的方式展示樹型結(jié)構(gòu)的界面布局SD卡映像創(chuàng)建工具mksdcard.exe用于建立SD卡映像文件查錯與代碼優(yōu)化工具lint.bat用于通過代碼檢查,發(fā)現(xiàn)潛在問題,并能對Android程序進(jìn)行優(yōu)化處理4.其他工具小結(jié)本章首先介紹了進(jìn)行Android應(yīng)用開發(fā)所需的開發(fā)環(huán)境,以及如何搭建Android開發(fā)環(huán)境,然后又對AndroidSDK的目錄結(jié)構(gòu)、示例程序、幫助文檔和開發(fā)工具進(jìn)行了簡要介紹。其中,JDK的配置、AndroidSDK的下載和ADT插件的安裝是本章的難點,需要大家按照書中介紹的步驟仔細(xì)操作,出現(xiàn)問題,不要著急,仔細(xì)對照書中介紹的步驟重新配置,最終成功搭建一個好用的Android開發(fā)環(huán)境。為之后的開發(fā)打下堅實的基礎(chǔ)。第3章第一個Android程序01創(chuàng)建Android應(yīng)用程序03管理Android模擬器02Android項目結(jié)構(gòu)說明04運行項目創(chuàng)建Android應(yīng)用程序1創(chuàng)建Android應(yīng)用程序在Eclipse中創(chuàng)建Android項目,名稱為AccountMS,實現(xiàn)在屏幕上輸出文字“HelloWorld”。新創(chuàng)建的項目Android項目結(jié)構(gòu)說明2主要內(nèi)容src目錄1gen目錄2android.jar文件3libs目錄4assets目錄5res目錄6AndroidManifest.xml文件7perties文件8activity_main.xml布局文件中的重要元素及說明元素說明RelativeLayout布局管理器xmlns:android包含命名空間的聲明,其屬性值為/apk/res/android,表示Android中的各種標(biāo)準(zhǔn)屬性能在該xml文件中使用,它提供了大部分元素中的數(shù)據(jù),該屬性一定不能省略xmlns:tools指定布局的默認(rèn)工具android:layout_width指定當(dāng)前視圖在屏幕上所占的寬度android:layout_height指定當(dāng)前視圖在屏幕上所占的高度TextView文本框組件,用來顯示文本android:text文本框組件顯示的文本AndroidManfest.xml文件中的重要元素及說明元素說明manifest根節(jié)點,描述了package中所有的內(nèi)容xmlns:android包含命名空間的聲明,其屬性值為/apk/res/android,表示Android中的各種標(biāo)準(zhǔn)屬性能在該xml文件中使用,它提供了大部分元素中的數(shù)據(jù)package聲明應(yīng)用程序包uses-sdk應(yīng)用程序所使用的AndroidSDK版本application包含package中application級別組件聲明的根節(jié)點,一個manifest中可以包含零個或者一個該元素android:icon應(yīng)用程序圖標(biāo)android:label應(yīng)用程序標(biāo)簽,即設(shè)置顯示的名稱activity與用戶交互的主要工具,它是用戶打開一個應(yīng)用程序的初始頁面android:nameActivity的名稱intent-filter聲明指定的一組組件支持的Intent值action組件支持的IntentActioncategory組件支持的IntentCategory,這里通常用來指定應(yīng)用程序默認(rèn)啟動的Activity管理Android模擬器3主要內(nèi)容創(chuàng)建AVD并啟動Android模擬器1刪除AVD2創(chuàng)建AVD并啟動Android模擬器1.通過圖形化界面實現(xiàn)啟動Android模擬器需要配置AVD(AndroidVirtualDevice),它是Android官方提供的一個可以運行Android程序的虛擬機,在運行Android程序之前,首先需要創(chuàng)建AVD。要創(chuàng)建AVD,可以通過單擊Eclipse工具欄上的圖標(biāo),打開AVD管理器對話框,在該對話框中,單擊“Create...”按鈕來實現(xiàn)。創(chuàng)建AVD并啟動Android模擬器2.通過命令行實現(xiàn)(1)獲得可用的Android平臺版本,命令格式如下:androidlisttargets(2)創(chuàng)建AVD,命令格式如下:androidcreateavd-n<avd名稱>-t<Android版本>-p<AVD設(shè)備保存位置>-s<選擇AVD皮膚>-b<CPU/ABI>(3)通過AVD啟動模擬器。命令格式如下:emulator-avd<AVD名稱>刪除AVD1.通過圖形化界面實現(xiàn)

刪除AVD只需要在“AndroidVirtualDeviceManager”對話框中選中要刪除的AVD,然后單擊Delete按鈕即可。2.通過命令行實現(xiàn)通過androiddeleteavd命令可以刪除已經(jīng)創(chuàng)建的AVD,具體的命令格式如下:androiddeleteavd-n<AVD名稱>運行項目4運行項目單擊Eclipse工具條中按鈕,彈出如下圖所示的項目運行方式。選擇“AndroidApplication”,單擊“確定”按鈕,將顯示“正在啟動AccountMS”對話框,啟動完成后,將自動關(guān)閉該對話框,并打開模擬器對話框,啟動模擬器。運行項目小結(jié)在本章中首先介紹了如何創(chuàng)建一個Android程序程序,然后對一個標(biāo)準(zhǔn)的Android項目的結(jié)構(gòu)進(jìn)行說明,接下來又介紹了如何管理Android模擬器,最后介紹了如何通過模擬器運行Android項目。其中,創(chuàng)建Android應(yīng)用程序、管理Android模擬器和通過模擬器運行項目需要重點掌握,Android項目結(jié)構(gòu)只要了解就可以了。上機指導(dǎo)本實例要求使用Android制作一個Android應(yīng)用程序,實現(xiàn)在屏幕中輸出一段自己喜歡的勵志文字,例如,我喜歡俞敏洪的“我一直認(rèn)為我是一只蝸牛。我一直在爬,也許還沒有爬到金字塔的頂端。但是只要你在爬,就足以給自己留下令生命感動的日子。”。第4章Android生命周期01Android程序生命周期03Activity生命周期02Android程序的基本組件04程序調(diào)試Android程序生命周期1Android進(jìn)程的優(yōu)先級前臺進(jìn)程進(jìn)程正在最前端運行一個和用戶交互的Activity(Activity的onResume()方法將被調(diào)用);進(jìn)程中有一個正在運行的BroadcastReceiver(BroadcastReceiver.onReceive()方法正在被執(zhí)行);進(jìn)程中有一個Service,并且在Service的某個回調(diào)函數(shù)內(nèi)正有執(zhí)行的代碼??梢娺M(jìn)程有一個非前臺但是仍然對用戶可見的Activity(Activity的onPause()方法被調(diào)用)。例如,當(dāng)前的前臺Activity是一個對話框,上一個Activity還是可見的,上一個Activity就是可見進(jìn)程;具有一個綁定到可見Activity的Service。 服務(wù)進(jìn)程服務(wù)進(jìn)程是擁有Service的進(jìn)程。這些進(jìn)程通常運行在后臺,并且對用戶是不可見的。 后臺進(jìn)程后臺進(jìn)程運行著對用戶不可見的Activity(調(diào)用過onStop()方法),這些進(jìn)程對用戶體驗沒有直接的影響。 空進(jìn)程空進(jìn)程是不包含任何活動組件的進(jìn)程,系統(tǒng)可能隨時關(guān)閉這類進(jìn)程。Android程序的基本組件2主要內(nèi)容Activity1Service2BroadcastReceiver3ContentProvider4Android程序的基本組件1.Activity

Activity是Android程序中最基本的模塊,它是為用戶操作而展示的可視化用戶界面,一個Android應(yīng)用程序中可以只有一個Activity,也可以包含多個,每個Activity的作用及其數(shù)目,取決于應(yīng)用程序及其設(shè)計。Activity窗口顯示的可視內(nèi)容是由一系列視圖構(gòu)成的,這些視圖均繼承自View基類。每個視圖均控制著窗口中一塊特定的矩形空間,父級視圖包含并組織其子視圖的布局,而底層視圖則在它們控制的矩形中進(jìn)行繪制,并對用戶操作做出響應(yīng),所以,視圖是Activity與用戶進(jìn)行交互的界面。比如說,開發(fā)人員可以通過視圖顯示一張圖片,然后在用戶單擊它時產(chǎn)生相應(yīng)的動作。Android程序的基本組件2.Service

Service是服務(wù)的意思,它沒有可視化的用戶界面,而是在一段時間內(nèi)在后臺運行的程序。例如,一個服務(wù)可以在用戶做其他事情的時候在后臺播放背景音樂、從網(wǎng)絡(luò)上獲取一些數(shù)據(jù)或者計算一些東西并提供給需要這個運算結(jié)果的Activity使用。Android程序中的每個服務(wù)都繼承自Service基類。Android程序的基本組件3.BroadcastReceiver

BroadcastReceiver(廣播接收器)是一個專注于接收廣播通知信息,并做出對應(yīng)處理的組件。Android程序中的很多廣播是源自于系統(tǒng)的;另外,Android應(yīng)用程序也可以進(jìn)行廣播。在一個Android應(yīng)用程序中可以擁有任意數(shù)量的廣播接收器,以對所有它感興趣的通知信息予以響應(yīng),所有的廣播接收器均繼承自BroadcastReceiver基類。廣播接收器沒有用戶界面,然而,它們可以啟動一個Activity來響應(yīng)它們收到的信息,或者用NotificationManager來通知用戶。BroadcastReceiver創(chuàng)建一個BroadcastReceiverTest.java類文件,使該類繼承自BroadcastReceiver類,以便作為廣播接收器,代碼如下:Android程序的基本組件4.ContentProvider

ContentProvider是應(yīng)用程序之間共享數(shù)據(jù)的一種接口機制,是一種更為高級的數(shù)據(jù)共享方法,可以指定需要共享的數(shù)據(jù),而其他應(yīng)用程序則可以在不知道數(shù)據(jù)來源、路徑的情況下,對共享數(shù)據(jù)進(jìn)行操作。在Android程序中,共享數(shù)據(jù)的實現(xiàn)需要繼承自ContentProvider基類,該基類為其他應(yīng)用程序使用和存儲數(shù)據(jù)實現(xiàn)了一套標(biāo)準(zhǔn)方法,然而,應(yīng)用程序并不直接調(diào)用這些方法,而是使用一個ContentResolver對象,并通過調(diào)用它的方法作為替代,ContentResolver對象提供了query()、insert()、update()和delete()等方法,可以對共享的數(shù)據(jù)執(zhí)行各種操作。Activity生命周期3主要內(nèi)容Activity的4種狀態(tài)1Activity的事件回調(diào)方法2Activity的4種狀態(tài)1.Running狀態(tài)一個新Activity啟動入棧后,它在屏幕最前端,處于棧的最頂端,此時它處于可見并可和用戶交互的激活狀態(tài)。Activity的4種狀態(tài)2.Paused狀態(tài)

當(dāng)Activity被另一個透明或者Dialog樣式的Activity覆蓋時的狀態(tài),此時它依然與窗口管理器保持連接,系統(tǒng)繼續(xù)維護其內(nèi)部狀態(tài),所以它仍然可見,但它已經(jīng)失去了焦點,故不可與用戶交互。Activity的4種狀態(tài)3.Stopped狀態(tài)當(dāng)Activity不可見時,Activity處于Stopped狀態(tài)。Activity將繼續(xù)保留在內(nèi)存中保持當(dāng)前的所有狀態(tài)和成員信息,假設(shè)系統(tǒng)別的地方需要內(nèi)存的話,這時它是被回收對象的主要候選。當(dāng)Activity處于Stopped狀態(tài)時,一定要保存當(dāng)前數(shù)據(jù)和當(dāng)前的UI狀態(tài),否則一旦Activity退出或關(guān)閉時,當(dāng)前的數(shù)據(jù)和UI狀態(tài)就丟失了。4.Killed狀態(tài)Activity被殺掉以后或者被啟動以前,處于Killed狀態(tài)。這時Activity已被移除Activity堆棧中,需要重新啟動才可以顯示和使用。Activity對象生命周期程序調(diào)試4主要內(nèi)容在LogCat中輸出日志1Eclipse調(diào)試器調(diào)試2AndroidLint調(diào)試3在LogCat中輸出日志

AndroidSDK中提供了Log類用來發(fā)送日志到系統(tǒng)級別的共享日志中心,通過其提供的覆蓋方法來實現(xiàn)在LogCat面板中輸出日志信息,該類位于android.util包中,它繼承自java.lang.Object類。Log類的常用方法及說明方法說明v()輸出VERBOSE冗余日志信息,使用黑色的文字表示d()輸出DEBUG故障日志信息,使用藍(lán)色的文字表示i()輸出INFO通告信息,使用綠色的文字表示w()輸出WARN警告日志信息,使用橘黃色的文字表示e()輸出ERROR錯誤日志信息,使用紅色的文字表示在LogCat中輸出日志使用Log.d()方法輸出一條故障日志信息,可以使用下面的代碼:使用Log.e()方法在程序拋出異常時輸出錯誤日志,關(guān)鍵代碼如下:輸出的錯誤日志示例實現(xiàn)單擊按鈕輸出不同等級的日志信息。Eclipse調(diào)試器調(diào)試1.?dāng)帱c

在Java編輯器中,提供了以下3種方法用于添加或刪除當(dāng)前行的斷點。在顯示代碼行號的位置雙擊添加或刪除當(dāng)前行的斷點;在當(dāng)前行號的位置單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“切換斷點”命令實現(xiàn)斷點的添加與刪除。將光標(biāo)定位在要設(shè)置斷點的行,按下鍵盤中的〈Ctrl+Shift+B〉也可以添加或刪除斷點。Eclipse調(diào)試器調(diào)試2.調(diào)試為程序設(shè)置斷點后,在“包資源管理器”中,選中要調(diào)試的項目,然后單擊工具欄上的,如果是第一次運行,將彈出選擇調(diào)試方式的對話框,在該對話框中選擇AndroidApplication這一項即可,但是如果不是第一次運行,將彈出調(diào)試運行默認(rèn)項目(默認(rèn)項目為上一次調(diào)試運行的項目),當(dāng)程序執(zhí)行到斷點被暫停后,會彈出“確認(rèn)切換透視圖”對話框,單擊“是”按鈕,將切換到Debug透視圖?!罢{(diào)試”透視圖AndroidLint調(diào)試AndroidLint調(diào)試在項目名稱節(jié)點上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“AndroidTools”/“RunLint:CheckforCommonErrors”菜單項,打開LintWarnings面板,在該面板中將顯示檢查到的錯誤或者警告。AndroidLint調(diào)試小結(jié)在本章中首先介紹了Android程序的生命周期及進(jìn)程的優(yōu)先級;然后對Android程序的4大基本組件進(jìn)行簡要介紹;接下來又介紹的Activity的生命周期;最后介紹了如何在LogCat面板中輸出日志信息,以及如何使用Eclipse調(diào)試器和AndroidLint進(jìn)行程序調(diào)試。其中,最后介紹的程序調(diào)試方法是本章的重點,需要重點掌握。上機指導(dǎo)使用Log類的i()方法可以向LogCat視圖中輸出表示提示信息的程序Info日志。本練習(xí)要求在屏幕中,添加一個“用戶登錄”按鈕,單擊該按鈕,向LogCat視圖中輸出程序Info日志,顯示用戶的登錄時間。第5章用戶界面設(shè)計01用戶界面基礎(chǔ)03界面組件02界面布局04Fragment05操作欄(ActionBar)06界面事件用戶界面基礎(chǔ)1主要內(nèi)容了解UI界面1UI設(shè)計相關(guān)的幾個概念2了解UI界面UI設(shè)計相關(guān)的幾個概念1.View

View在Android中可以理解為視圖。它占據(jù)屏幕上的一塊矩形區(qū)域,負(fù)責(zé)提供組件繪制和事件處理的方法。View類是所有的widgets組件的基類。ViewView類位于android.view包中;View類的子類一般都位于android.widget包中。android.view.Viewandroid.widget.TextViewView類支持的常用XML屬性及對應(yīng)的方法XML屬性方法描述android:backgroundsetBackgroundResource(int)設(shè)置背景,其屬性值為Drawable資源或者顏色值android:clickablesetClickable(boolean)設(shè)置是否響應(yīng)單擊事件,其屬性值為boolean型的true或者falseandroid:elevationsetElevation(float)AndroidAPI21新添加的,用于設(shè)置z軸深度,其屬性值為帶單位的有效浮點數(shù)android:focusablesetFocusable(boolean)設(shè)置是否可以獲取焦點,其屬性值為boolean型的true或者falseandroid:idsetId(int)設(shè)置組件的唯一標(biāo)識符ID,可以通過findViewById()方法獲取android:longClickablesetLongClickable(boolean)設(shè)置是否響應(yīng)長單擊事件,其屬性值為boolean型的true或者falseandroid:minHeightsetMinimumHeight(int)設(shè)置最小高度,其屬性值為帶單位的整數(shù)android:minWidthsetMinimumWidth(int)設(shè)置最小寬度,其屬性值為帶單位的整數(shù)android:onClick設(shè)置單擊事件觸發(fā)的方法android:paddingsetPaddingRelative(int,int,int,int)設(shè)置4個邊的內(nèi)邊距android:paddingBottomsetPaddingRelative(int,int,int,int)設(shè)置底邊的內(nèi)邊距android:paddingEndsetPaddingRelative(int,int,int,int)設(shè)置右邊的內(nèi)邊距android:paddingLeftsetPadding(int,int,int,int)設(shè)置左邊的內(nèi)邊距android:paddingRightsetPadding(int,int,int,int)設(shè)置右邊的內(nèi)邊距android:paddingStartsetPaddingRelative(int,int,int,int)設(shè)置左邊的內(nèi)邊距android:paddingTopsetPaddingRelative(int,int,int,int)設(shè)置頂邊的內(nèi)邊距android:visibilitysetVisibility(int)設(shè)置View的可見性UI設(shè)計相關(guān)的幾個概念2.ViewGroup

ViewGroup在Android中可以理解為容器。ViewGroup類繼承自View類,它是View類的擴展,是用來容納其他組件的容器,但是由于ViewGroup是一個抽象類,所以在實際應(yīng)用中通??偸鞘褂肰iewGroup的子類來作為容器的。ViewGroup控制其子組件分布時依賴的內(nèi)部類ViewGroup.LayoutParams類1ViewGroup.MarginLayoutParams類2ViewGroup.LayoutParams類android:layout_heightandroid:layout_widthWRAP_CONTENTMATCH_PARENTFILL_PARENT ViewGroup.MarginLayoutParams類XML屬性描述android:layout_marginBottom設(shè)置底外邊距android:layout_marginEnd設(shè)置右外邊距android:layout_marginLeft設(shè)置左外邊距android:layout_marginRight設(shè)置右外邊距android:layout_marginStart設(shè)置左外邊距android:layout_marginTop設(shè)置頂外邊距 ViewGroup.MarginLayoutParams類UI設(shè)計相關(guān)的幾個概念3.Padding和Margins

Padding表示在View的頂部、底部、左側(cè)和右側(cè)的填充像素,也稱為內(nèi)邊距。它設(shè)置的是內(nèi)容與View邊緣的距離。Padding將占據(jù)View的寬度和高度。設(shè)置指定的內(nèi)邊距后,視圖內(nèi)容將偏離View邊緣指定的距離。

Margins表示組件的頂部、底部、左側(cè)和右側(cè)的空白區(qū)域,稱為外邊距。它設(shè)置的是組件與其父容器的距離。Margins不占據(jù)組件的寬度和高度。為組件設(shè)置外邊距后,該組件將遠(yuǎn)離父容器指定的距離,如果還有相鄰組件,那么也將遠(yuǎn)離其相鄰組件指定距離。Padding和Margins的區(qū)別界面布局2主要內(nèi)容相對布局1線性布局2幀布局3表格布局4網(wǎng)格布局5相對布局相對布局在XML布局文件中,定義相對布局管理器可以使用<RelativeLayout>標(biāo)記,其基本的語法格式如下:RelativeLayout.LayoutParams支持的常用XML屬性XML屬性描述android:layout_above其屬性值為其他UI組件的id屬性,用于指定該組件位于哪個組件的上方android:layout_alignBottom其屬性值為其他UI組件的id屬性,用于指定該組件與哪個組件的下邊界對齊android:layout_alignLeft其屬性值為其他UI組件的id屬性,用于指定該組件與哪個組件的左邊界對齊android:layout_alignParentBottom其屬性值為boolean值,用于指定該組件是否與布局管理器底端對齊android:layout_alignParentLeft其屬性值為boolean值,用于指定該組件是否與布局管理器左邊對齊android:layout_alignParentRight其屬性值為boolean值,用于指定該組件是否與布局管理器右邊對齊android:layout_alignParentTop其屬性值為boolean值,用于指定該組件是否與布局管理器頂端對齊android:layout_alignRight其屬性值為其他UI組件的id屬性,用于指定該組件與哪個組件的右邊界對齊android:layout_alignTop其屬性值為其他UI組件的id屬性,用于指定該組件與哪個組件的上邊界對齊android:layout_below其屬性值為其他UI組件的id屬性,用于指定該組件位于哪個組件的下方android:layout_centerHorizontal其屬性值為boolean值,用于指定該組件是否位于布局管理器水平居中的位置android:layout_centerInParent其屬性值為boolean值,用于指定該組件是否位于布局管理器的中央位置android:layout_centerVertical其屬性值為boolean值,用于指定該組件是否位于布局管理器垂直居中的位置android:layout_toLeftOf其屬性值為其他UI組件的id屬性,用于指定該組件位于哪個組件的左側(cè)android:layout_toRightOf其屬性值為其他UI組件的id屬性,用于指定該組件位于哪個組件的右側(cè)相對布局實現(xiàn)應(yīng)用相對布局設(shè)計個人理財通的系統(tǒng)設(shè)置頁面。線性布局垂直線性布局水平線性布局線性布局在XML布局文件中定義線性布局管理器,需要使用<LinearLayout>標(biāo)記,其基本的語法格式如下:子組件在LinearLayout中的常用屬性android:layout_gravity屬性android:layout_weight屬性線性布局實現(xiàn)應(yīng)用線性布局設(shè)計個人理財通的新增便簽頁面。幀布局幀布局在XML布局文件中,定義幀布局管理器可以使用<FrameLayout>標(biāo)記,其基本的語法格式如下:表格布局表格布局在XML布局文件中定義表格布局管理器的基本的語法格式如下:XML屬性描述android:collapseColumns設(shè)置需要被隱藏的列的列序號(序號從0開始),多個列序號之間用逗號“,”分隔android:shrinkColumns設(shè)置允許被收縮的列的列序號(序號從0開始),多個列序號之間用逗號“,”分隔android:stretchColumns設(shè)置允許被拉伸的列的列序號(序號從0開始),多個列序號之間用逗號“,”分隔網(wǎng)格布局網(wǎng)格布局在XML布局文件中,定義網(wǎng)格布局管理器可以使用<GridLayout>標(biāo)記,其基本的語法格式如下:網(wǎng)格布局XML屬性描述android:layout_column用于指定該子組件位置網(wǎng)格的第幾列android:layout_columnSpan用于指定該子組件橫向跨幾列(索引從0開始)android:layout_columnWeight用于指定該子組件在水平方向上的權(quán)重,即該組件分配水平剩余空間的比例android:layout_gravity用于指定該子組件采用什么方式占據(jù)該網(wǎng)格的空間,其可選值有top(放置在頂部)、bottom(放置在底部)、left(放置在左側(cè))、right(放置在右側(cè))、center_vertical(垂直居中)、fill_vertical(垂直填滿)、center_horizontal(水平居中)、fill_horizontal(水平填滿)、center(放置在中間)、fill(填滿)、clip_vertical(垂直剪切)、clip_horizontal(水平剪切)、start(放置在開始位置)、end(放置在結(jié)束位置)android:layout_row用于指定該子組件位置網(wǎng)格的第幾行(索引從0開始)android:layout_rowSpan用于指定該子組件縱向跨幾行android:layout_rowWeight用于指定該子組件在垂直方向上的權(quán)重,即該組件分配垂直剩余空間的比例界面組件3主要內(nèi)容Button和ImageButton1TextView和EditText2RadioButton和CheckBox3ImageView4Spinner5ListView6GridView7Button和ImageButton1.Button在XML布局文件中添加Button組件的基本格式如下:設(shè)置組件的基本高度,可選值包括fill_parent、match_parent與wrap_content設(shè)置組件的基本寬度,可選值包括fill_parent、match_parent與wrap_contentButton在屏幕中添加一個“開始游戲”按鈕,代碼如下:為按鈕添加單擊事件監(jiān)聽器在Java代碼中完成,代碼如下:為按鈕添加單擊事件監(jiān)聽器在Activity中編寫一個包含View類型參數(shù)的方法,并且將要觸發(fā)的動作代碼放在該方法中,然后在布局文件中,通過android:onClick屬性指定對應(yīng)的方法名實現(xiàn)。在布局文件中通過android:onClick="myClick"為按鈕添加單擊事件監(jiān)聽器。Button和ImageButton2.ImageButton在XML布局文件中添加ImageButton組件的基本格式如下:設(shè)置組件的基本高度,可選值包括fill_parent、match_parent與wrap_content設(shè)置組件的基本寬度,可選值包括fill_parent、match_parent與wrap_contentTextView和EditText1.TextView在XML布局文件中添加文本框的基本的語法格式如下:TextView和EditText1.TextView文本框TextView定義文本框的語法格式如下:TextView支持的XML屬性XML屬性描述android:autoLink用于指定是否將指定格式的文本轉(zhuǎn)換為可單擊的超級鏈接形式,其屬性值有none、web、email、phone、map或allandroid:drawableBottom用于在文本框內(nèi)文本的底端繪制指定圖像,該圖像可以是放在res/drawable目錄下的圖片,通過“@drawable/文件名(不包括文件的擴展名)”設(shè)置android:drawableLeft用于在文本框內(nèi)文本的左側(cè)繪制指定圖像,該圖像可以是放在res/drawable目錄下的圖片,通過“@drawable/文件名(不包括文件的擴展名)”設(shè)置android:drawableRight用于在文本框內(nèi)文本的右側(cè)繪制指定圖像,該圖像可以是放在res/drawable目錄下的圖片,通過“@drawable/文件名(不包括文件的擴展名)”設(shè)置android:drawableTop用于在文本框內(nèi)文本的頂端繪制指定圖像,該圖像可以是放在res/drawable目錄下的圖片,通過“@drawable/文件名(不包括文件的擴展名)”設(shè)置android:gravity用于設(shè)置文本框內(nèi)文本的對齊方式,可選值有top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical和clip_horizontal等。這些屬性值也可以同時指定,各屬性值之間用豎線隔開。例如要指定組件靠右下角對齊,可以使用屬性值right|bottomandroid:hint用于設(shè)置當(dāng)文本框中文本內(nèi)容為空時,默認(rèn)顯示的提示文本android:inputType用于指定當(dāng)前文本框顯示內(nèi)容的文本類型,其可選值有textPassword、textEmailAddress、phone和date等,可以同時指定多個,使用“|”進(jìn)行分隔android:singleLine用于指定該文本框是否為單行模式,其屬性值為true或false,為true表示該文本框不會換行,當(dāng)文本框中的文本超過一行時,其超出的部分將被省略,同時在結(jié)尾處添加“…”android:text用于指定該文本框中顯示的文本內(nèi)容,可以直接在該屬性值中指定,也可以通過在strings.xml文件中定義文本常量的方式指定android:textColor用于設(shè)置文本框內(nèi)文本的顏色,其屬性值可以是#rgb、#argb、#rrggbb或#aarrggbb格式指定的顏色值android:textSize用于設(shè)置文本框內(nèi)文本的字體大小,其屬性為代表大小的數(shù)值加上單位組成,其單位可以是dp、px、pt、sp和in等TextView實現(xiàn)為文本框中的E-mail地址添加超鏈接、顯示帶圖像的文本、顯不同顏色的單行文本和多行文本。TextView文本框組件也可以通過Java代碼動態(tài)為其設(shè)置要顯示的文本,常用的語法格式如下:設(shè)置在文本框中顯示文字“明日科技”可以通過下面的代碼實現(xiàn)。TextView和EditText2.EditTextTextView和EditText在XML布局文件中添加編輯框的基本的語法格式如下:EditText要獲取布局文件中添加的id屬性為login的編輯框的內(nèi)容,可以通過以下代碼實現(xiàn)。EditTextlogin=(EditText)findViewById(R.id.login);StringloginText=login.getText().toString();EditText實現(xiàn)個人理財通項目的登錄頁面。RadioButton和CheckBox1.RadioButtonRadioButton和CheckBox在Android中,可以通過<RadioButton>在XML布局文件中添加單選按鈕組件,其基本格式如下:CheckBox和RadioButton通常情況下,RadioButton組件需要與RadioGroup組件一起使用,組成一個單選按鈕組。在XML布局文件中,添加RadioGroup組件的基本格式如下:RadioButton實現(xiàn)在屏幕上添加選擇性別的單選按鈕組。RadioButton

在改變單選按鈕組的值時獲取要獲取id屬性為radioGroup1的單選按鈕組的值,可以通過下面的代碼實現(xiàn)。要獲取單選按鈕組中選中項的值,通常存在以下兩種情況:RadioButton

單擊其他按鈕時獲取要在單擊“提交”按鈕時,獲取id屬性為radioGroup1的單選按鈕組的值,可以通過下面的代碼實現(xiàn)。RadioButton和CheckBox2.CheckBoxRadioButton和CheckBox在XML布局文件中添加CheckBox組件的基本格式如下:CheckBox要為id為like1的CheckBox添加狀態(tài)改變事件監(jiān)聽器,可以使用下面的代碼:CheckBox實現(xiàn)在屏幕上添加選擇愛好的復(fù)選按鈕,并獲取選擇的值。ImageViewImageView在使用ImageView組件顯示圖像時,通常需要將要顯示的圖片放置在res/drawable目錄中,然后應(yīng)用<ImageView>標(biāo)記將其顯示在布局管理器中,<ImageView>的基本語法格式如下。ImageView支持的XML屬性XML屬性描述android:adjustViewBounds用于設(shè)置ImageView是否調(diào)整自己的邊界來保持所顯示圖片的長寬比android:maxHeight設(shè)置ImageView的最大高度,需要設(shè)置android:adjustViewBounds屬性值為true,否則不起作用android:maxWidth設(shè)置ImageView的最大寬度,需要設(shè)置android:adjustViewBounds屬性值為true,否則不起作用android:scaleType用于設(shè)置所顯示的圖片如何縮放或移動以適應(yīng)ImageView的大小,其屬性值可以是matrix(使用matrix方式進(jìn)行縮放)、fitXY(對圖片橫向、縱向獨立縮放,使得該圖片完全適應(yīng)于該ImageView,圖片的縱橫比可能會改變)、fitStart(保持縱橫比縮放圖片,直到該圖片能完全顯示在ImageView中,縮放完成后該圖片放在ImageView的左上角)、fitCenter(保持縱橫比縮放圖片,直到該圖片能完全顯示在ImageView中,縮放完成后該圖片放在ImageView的中央)、fitEnd(保持縱橫比縮放圖片,直到該圖片能完全顯示在ImageView中,縮放完成后該圖片放在ImageView的右下角)、center(把圖像放在ImageView的中間,但不進(jìn)行任何縮放)、centerCrop(保持縱橫比縮放圖片,以使得圖片能完全覆蓋ImageView)或centerInside(保持縱橫比縮放圖片,以使得ImageView能完全顯示該圖片)android:src用于設(shè)置ImageView所顯示的Drawable對象的ID,例如,設(shè)置顯示保存在res/drawable目錄下的名稱為flower.jpg的圖片,可以將屬性值設(shè)置為android:src="@drawable/flower"android:tint用于為圖片著色,其屬性值可以是“#rgb”、“#argb”、“#rrggbb”或“#aarrggbb”表示的顏色值SpinnerSpinner在XML布局文件中添加列表選擇框的基本格式如下:Spinner實現(xiàn)在個人理財通的新增收入頁面中使用Spinner選擇類別。Spinner要獲取ID為spInType的列表選擇框的選中項的值,可以使用下面的代碼。Spinner為spinner添加選擇列表項事件監(jiān)聽器,并在onItemSelected()方法中獲取選擇項的值輸出到日志中,可以使用下面的代碼。為列表選擇框指定適配器(1)創(chuàng)建一個適配器對象,通常使用ArrayAdapter類。在Android中,創(chuàng)建適配器,通常可以有以下兩種情況,一種是通過數(shù)組資源文件創(chuàng)建,另一種是通過在Java文件中使用字符串?dāng)?shù)組創(chuàng)建。(2)為適配器設(shè)置列表框下拉時的選項樣式。(3)將適配器與選擇列表框關(guān)聯(lián)。使用列表選擇器的setAdapter()方法來實現(xiàn)使用適配器的setDropDownViewResource()方法來實現(xiàn)ListViewListView1.直接使用ListView組件創(chuàng)建在XML布局文件中添加ListView的基本格式如下:ListView支持的XML屬性XML屬性描述android:divider用于為列表視圖設(shè)置分隔條,既可以用顏色分隔,也可以用Drawable資源分隔android:dividerHeight用于設(shè)置分隔條的高度android:entries用于通過數(shù)組資源為ListView指定列表項android:footerDividersEnabled用于設(shè)置是否在footerView之前繪制分隔條,默認(rèn)值為true,設(shè)置為false時,表示不繪制。使用該屬性時,需要通過ListView組件提供的addFooterView()方法為ListView設(shè)置footerViewandroid:headerDividersEnabled用于設(shè)置是否在headerView之后繪制分隔條,默認(rèn)值為true,設(shè)置為false時,表示不繪制。使用該屬性時,需要通過ListView組件提供的addHeaderView()方法為ListView設(shè)置headerViewListView在布局文件中添加一個列表視圖,并通過數(shù)組資源為其設(shè)置列表項的具體代碼如下:通過Adapter為ListView指定要顯示的列表項(1)創(chuàng)建Adapter對象。對于純文字的列表項,通常使用ArrayAdapter對象。創(chuàng)建ArrayAdapter對象通??梢杂袃煞N情況,一種是通過數(shù)組資源文件創(chuàng)建,另一種是通過在Java文件中使用字符串?dāng)?shù)組創(chuàng)建。(2)將創(chuàng)建的適配器對象與ListView相關(guān)聯(lián),可以通過ListView對象的setAdapter()方法實現(xiàn)。ListView實現(xiàn)在個人理財通的收入信息瀏覽頁面中使用ListView顯示收入信息。ListView2.讓Activity繼承ListActivity實現(xiàn)

如果程序的窗口僅僅需要顯示一個列表,則可以直接讓Activity繼承ListActivity來實現(xiàn)。繼承了ListActivity的類中無須調(diào)用setContentView()方法來顯示頁面,而是可以直接為其設(shè)置適配器,從而顯示一個列表。ListView通過在Activity中繼承ListActivity實現(xiàn)列表。GridViewGridView在XML布局文件中添加網(wǎng)格視圖的基本語法如下:GridViewXML屬性描述android:columnWidth用于設(shè)置列的寬度android:gravity用于設(shè)置對齊方式android:horizontalSpacing用于設(shè)置各元素之間的水平間距android:numColumns用于設(shè)置列數(shù),其屬性值通常為大于的值,如果只有一列,那么最好使用ListView實現(xiàn)android:stretchMode用于設(shè)置拉伸模式,其中屬性值可以是none(不拉伸)、spacingWidth(僅拉伸元素之間的間距)、columnWidth(僅拉伸表格元素本身)或spacingWidthUniform(表格元素本身、元素之間的間距一起拉伸)android:verticalSpacing用于設(shè)置各元素之間的垂直間距GridView實現(xiàn)個人理財通系統(tǒng)主窗體。Fragment4主要內(nèi)容創(chuàng)建Fragment1Fragment與Activity通信2創(chuàng)建Fragment要創(chuàng)建一個Fragment,必須創(chuàng)建一個Fragment的子類,或者繼承自另一個已經(jīng)存在的Fragment的子類。例如,要創(chuàng)建一個名稱為NewsFragment,并重寫onCreateView()方法,可以使用下面的代碼。Fragment與Activity通信1.直接在布局文件中添加Fragment直接在布局文件中添加Fragment可以使用<fragment></fragment>標(biāo)記實現(xiàn)。例如,要在一個布局文件中添加兩個Fragment,可以使用下的代碼。直接在布局文件中添加Fragment<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal"><fragmentandroid:name="com.mingrisoft.ListFragment"android:id="@+id/list"android:layout_weight="1"android:layout_width="0dp"android:layout_height="match_parent"/><fragmentandroid:name="com.mingrisoft.DetailFragment"android:id="@+id/detail"android:layout_weight="2"android:layout_marginLeft="20px"android:layout_width="0dp"android:layout_height="match_parent"/></LinearLayout>Fragment與Activity通信2.當(dāng)Activity運行時添加Fragment要在Activity運行時添加一個名稱為DetailFragment的Fragment,可以使用下面的代碼。使用Fragment合并兩個Activity使用Fragment合并兩個Activity實現(xiàn)應(yīng)用Fragment顯示新聞。操作欄(ActionBar)5ActionBar示例主要內(nèi)容選項菜單1實現(xiàn)層級式導(dǎo)航2選項菜單1.定義菜單資源文件菜單資源的根元素通常是<menu></menu>標(biāo)記,在該標(biāo)記中可以包含以下兩個子元素。<item></item>標(biāo)記<group></group>標(biāo)記選項菜單屬性描述android:id用于為菜單項設(shè)置ID,也就是唯一標(biāo)識android:title用于為菜單項設(shè)置標(biāo)題android:alphabeticShortcut用于為菜單項指定字符快捷鍵android:numericShortcut用于為菜單項指定數(shù)字快捷鍵android:icon用于為菜單項指定圖標(biāo)android:enabled用于指定該菜單項是否可用android:checkable用于指定該菜單項是否可選android:checked用于指定該菜單項是否已選中android:visible用于指定該菜單項是否可見選項菜單屬性描述android:id用于為菜單組設(shè)置ID,也就是唯一標(biāo)識android:heckableBehavior用于指定菜單組內(nèi)各項菜單項的選擇行為,可選值為none(不可選)、all(多選)和single(單選)android:menuCategory用于對菜單進(jìn)行分類,指定菜單的優(yōu)先級,可選值為container、system、secondary和alternativeandroid:enabled用于指定該菜單組中的全部菜單項是否可用android:visible用于指定該菜單組中的全部菜單項是否見包含3個菜單項的菜單資源選項菜單2.創(chuàng)建選項菜單在Activity中創(chuàng)建菜單菜單時,需要重寫Activity中的onCreateOptionsMenu()方法。在該方法中,首先創(chuàng)建一個用于解析菜單資源文件的MenuInflater對象,然后調(diào)用該對象的inflate()方法解析一個菜單資源文件,并把解析后的菜單保存在menu中,關(guān)鍵代碼如下:選項菜單3.響應(yīng)菜單項的選擇當(dāng)菜單項被選擇時,彈出一個消息提示框顯示被選中菜單項的標(biāo)題,可以使用下面的代碼。選項菜單實現(xiàn)在操作欄上顯示的選項菜單,并處理菜單項的響應(yīng)。實現(xiàn)層級式導(dǎo)航1.啟用程序圖標(biāo)導(dǎo)航要為Activity設(shè)置啟用應(yīng)用程序圖標(biāo)向上導(dǎo)航功能,可以在它的onCreate()方法中獲取ActionBar對象,并調(diào)用其setDisplayHomeAsUpEnabled()方法實現(xiàn)。具體代碼如下:實現(xiàn)層級式導(dǎo)航2.響應(yīng)向上按鈕在Android中,要實現(xiàn)響應(yīng)向上按鈕,主要分為以下兩個步驟:(1)在AndroidManifest.xml中,使用<activity>標(biāo)記的子標(biāo)記<meta-data>配置Activity的父Activity。例如,配置DetailActivity的父Activity為MainActivity,可以使用下面的代碼。實現(xiàn)層級式導(dǎo)航(2)通過調(diào)用NavUtils.getParentActivityName()方法,檢查元數(shù)據(jù)中是否指定了父Activity,如果指定,則調(diào)用navigateUpFromSameTask()方法導(dǎo)航至父Activity,關(guān)鍵代碼如下:實現(xiàn)層級式導(dǎo)航3.控制導(dǎo)航圖標(biāo)的顯示添加了啟用程序圖標(biāo)導(dǎo)航功能后,還需要控制導(dǎo)航圖標(biāo)是否顯示,即當(dāng)該Activity未指定父Activity時,無需再顯示向左的箭頭圖標(biāo),避免誤導(dǎo)用戶。要實現(xiàn)該功能,只需要加上以下判斷語句即可。實現(xiàn)層級式導(dǎo)航實現(xiàn)帶向上導(dǎo)航按鈕的操作欄。界面事件6主要內(nèi)容按鍵事件1觸摸事件2帶有物理鍵盤的Android模擬器物理按鍵KeyEvent說明電源鍵KEYCODE_POWER啟動或喚醒設(shè)備,將界面切換到鎖定的屏幕后退鍵KEYCODE_BACK返回到前一個界面菜單鍵KEYCODE_MENU顯示當(dāng)前應(yīng)用的可用菜單HOME鍵KEYCODE_HOME返回到HOME界面搜索鍵KEYCODE_SEARCH在當(dāng)前應(yīng)用中啟動搜索音量鍵KEYCODE_VOLUME_UPKEYCODE_VOLUME_DOWN控制當(dāng)前上下文音量,例如音樂播放器、手機鈴聲、通話音量等方向鍵KEYCODE_DPAD_CENTERKEYCODE_DPAD_UPKEYCODE_DPAD_DOWNKEYCODE_DPAD_LEFTKEYCODE_DPAD_RIGHT某些設(shè)備中包含的方向鍵,用于移動光標(biāo)等按鍵事件屏蔽物理鍵盤中的后退鍵。觸摸事件實現(xiàn)用戶觸摸屏幕時顯示提示信息。小結(jié)在本章中,首先介紹了什么是UI界面,以及UI設(shè)計相關(guān)的幾個概念;然后介紹了5種常用界面布局方式,以及界面組件,接下來又介紹了Fragment和操作欄(ActionBar),最后介紹了常用的界面事件。其中,5種常用的界面布局方式中,相對布局和線性布局最為常用,需要重點掌握。另外,在操作欄中實現(xiàn)層級式導(dǎo)航對于實際應(yīng)用開發(fā)也比較常用,也需要理解并掌握。上機指導(dǎo)微信現(xiàn)在幾乎成為每位智能手機用戶必備的應(yīng)用,對于朋友圈大家應(yīng)該再熟悉不過了。本實例就要求實現(xiàn)在屏幕中顯示類似微信朋友圈的頁面。第6章組件通信與廣播消息01Intent簡介03BroadcastReceiver使用02Intent過濾器Intent簡介1Intent簡介Intent(意圖)是一個對象,它是一個被動的數(shù)據(jù)結(jié)構(gòu)保存一個將要執(zhí)行操作的抽象描述,或在廣播的情況下,通常是某事已經(jīng)發(fā)生并正在執(zhí)行,開發(fā)人員通常使用該對象激活A(yù)ctivity、Service和BroadcastReceiver。Intent用于相同或者不同應(yīng)用程序組件間的后期運行時綁定。Intent簡介對于不同的組件,Android系統(tǒng)提供了不同的Intent發(fā)送機制進(jìn)行激活。

Intent對象可以傳遞給Context.startActivity()或Activity.startActivityForResult()方法來啟動Activity或者讓已經(jīng)存在的Activity去做其他任務(wù)。(Intent對象也可以作為Activity.setResult()方法的參數(shù),將信息返回給調(diào)用startActivityForResult()方法的Activity)

Intent對象可以傳遞給Context.startService()方法來初始化Service或者發(fā)送新指令到正在運行的Service。類似的,Intent對象可以傳遞Context.bindService()方法來建立調(diào)用組件和目標(biāo)Service之間的鏈接。它可以有選擇的初始化沒有運行的服務(wù)。

Intent對象可以傳遞給Context.sendBroadcast()、Context.sendOrderedBroadcast()或Context.sendStickyBroadcast()等廣播方法,使其被發(fā)送給所有感興趣的BroadcastReceiver。主要內(nèi)容創(chuàng)建并配置Activity1啟動Activity2使用Bundle在Activity之間交換數(shù)據(jù)3調(diào)用另一個Activity并返回結(jié)果4創(chuàng)建并配置Activity1.創(chuàng)建Activity創(chuàng)建Activity,大致可以分為以下兩個步驟。(1)創(chuàng)建一個Activity一般是繼承android.app包中的Activity類,不過在不同的應(yīng)用場景下,也可以繼承Activity的子類。創(chuàng)建并配置Activity(2)重寫需要的回調(diào)方法。通常情況下,都需要重寫onCreate()方法,并且在該方法中調(diào)用setContentView()方法設(shè)置要顯示的視圖。創(chuàng)建并配置Activity2.配置Activity創(chuàng)建Activity后,還需要在AndroidManifest.xml文件中配置該Activity,如果沒有配置該Activity,而在程序中又啟動了該Activity,那么將拋出如下圖所示的異常信息。配置Activity具體的配置方法是在<application></application>標(biāo)記中添加<activity></activity>標(biāo)記實現(xiàn)。<activity>標(biāo)記的基本格式如下:Android系統(tǒng)自帶的常用主題樣式主題樣式說明android:theme="@android:style/Theme.Dialog"Activity顯示為對話框模式android:theme="@android:style/Theme.NoTitleBar"不顯示應(yīng)用程序標(biāo)題欄android:theme="@android:style/Theme.NoTitleBar.Fullscreen"不顯示應(yīng)用程序標(biāo)題欄,并全屏android:theme="@android:style/Theme.Li

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論