Android移動應(yīng)用開發(fā)(微課版)全套教學(xué)課件_第1頁
Android移動應(yīng)用開發(fā)(微課版)全套教學(xué)課件_第2頁
Android移動應(yīng)用開發(fā)(微課版)全套教學(xué)課件_第3頁
Android移動應(yīng)用開發(fā)(微課版)全套教學(xué)課件_第4頁
Android移動應(yīng)用開發(fā)(微課版)全套教學(xué)課件_第5頁
已閱讀5頁,還剩666頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

全套可編輯PPT幻燈片課件(共14章)Android移動應(yīng)用開發(fā)(微課版)010302040706認(rèn)識Android列表與適配器菜單與對話框設(shè)計UI控件設(shè)計設(shè)計用戶界面創(chuàng)建Android項目Android本地存儲書目錄140911BroadcastReceiver與廣播通信Service與后臺服務(wù)設(shè)計ContentProvider與應(yīng)用間數(shù)據(jù)共享網(wǎng)絡(luò)連接與管理05Activity與Fragment08131210線程間的通信與異步機制Android性能分析與測試第1章

認(rèn)識AndroidAndroid移動應(yīng)用開發(fā)(微課版)1.1Android簡介1.2Android學(xué)習(xí)指導(dǎo)1.3AndroidStudio使用入門章目錄1.1.1Android的由來Android的Logo是由Ascender公司設(shè)計的一個全身綠色的機器人,如圖所示。2019年8月22日,啟用全新的品牌Logol,如圖所示。Android最初由安迪·魯賓(AndyRubin)(見左圖)設(shè)計并用于手機開發(fā)。“Android之父”安迪·魯賓Android的LogoAndroid新的品牌Logo1.1.2Android的發(fā)展歷程Android9.0加入了對“劉海屏”(Google公司稱之為凹口屏幕)的支持Android9.0加入了對“劉海屏”(Google公司稱之為凹口屏幕)的支持。第一款運行Android的手機是T-MobileG1,也被稱為HTCDream,如圖所示。該手機于2008年10月22日開始發(fā)售。Android10增加了對折疊式智能手機的原生支持、內(nèi)建屏幕錄影功能,以及全新導(dǎo)航手勢功能等,如圖所示。第一款運行Android的手機T-MobileG1Android10手機界面1.1.3Android的應(yīng)用領(lǐng)域應(yīng)用領(lǐng)域包括手機、平板電腦、智能可穿戴設(shè)備、智能電視、物聯(lián)網(wǎng)及車載設(shè)備等。Android目前支持的平臺主要如下。1.WearOSWearOS(舊稱為AndroidWear)是專為智能手表等智能可穿戴設(shè)備設(shè)計的一個Android分支。2.AndroidTVAndroidTV是專為家用電視設(shè)計的一個Android分支。3.AndroidAutoAndroidAuto是專為汽車設(shè)計的一個Android分支。4.AndroidThingsAndroidThings是專為物聯(lián)網(wǎng)開發(fā)設(shè)計的一個Android分支。1.1Android簡介1.2Android學(xué)習(xí)指導(dǎo)1.3AndroidStudio使用入門章目錄1.2.1為什么要學(xué)習(xí)Android學(xué)習(xí)Android具有學(xué)習(xí)成本(時間、難度)低、上手快、人才需求旺盛等顯著優(yōu)勢。國際數(shù)據(jù)公司(InternationalDataCorporation,IDC)發(fā)布的2020年全球手機市場份額排名報告指出,運行Android的智能手機市場份額上漲到84.1%,說明Android是智能手機操作系統(tǒng)市場上絕對的“霸主”。Android集成開發(fā)環(huán)境AndroidStudio整合了Gradle構(gòu)建工具,使得配置、編譯和打包App更加快捷。1.2.2Android的學(xué)習(xí)路徑學(xué)習(xí)Android開發(fā)之前,必須掌握J(rèn)ava基礎(chǔ)、面向?qū)ο缶幊獭⒃O(shè)計模式等,還要掌握異常處理、多線程、集合等常見開發(fā)技術(shù)。Android開發(fā)技術(shù)的學(xué)習(xí)路徑分為以下4個階段。03第3階段Android高級開發(fā)技術(shù)。02第2階段Android應(yīng)用開發(fā)基礎(chǔ)。01第1階段開發(fā)準(zhǔn)備。01第4階段Android項目實戰(zhàn)。1.2.3Android的學(xué)習(xí)資源Android官方文檔的構(gòu)成。Android官方主頁1.2.3Android的學(xué)習(xí)資源1.平臺2.AndroidStudio4.Jetpack3.GooglePlay5.文檔“文檔”頁面的設(shè)計和質(zhì)量1.2.3Android的學(xué)習(xí)資源A“概覽”頁面為用戶提供所需的指南和API參考文檔。B“指南”頁面提供開發(fā)Android項目的技術(shù)指導(dǎo)。C“參考”頁面提供全面的AndroidAPI文檔,這是初學(xué)者快速領(lǐng)會Android開發(fā)內(nèi)涵的重要資料。D“示例”頁面提供一些Android項目示例。E“設(shè)計和質(zhì)量”頁面介紹MaterialDesign設(shè)計語言的相關(guān)知識。5.文檔任務(wù)1 搭建Android集成開發(fā)環(huán)境1.任務(wù)描述搭建Android集成開發(fā)環(huán)境AndroidStudio。2.運行結(jié)果完成集成開發(fā)環(huán)境的搭建后,啟動AndroidStudio,其主控面板如圖1-8所示。AndroidStudio主控面板任務(wù)介紹1.1Android簡介1.2Android學(xué)習(xí)指導(dǎo)1.3AndroidStudio使用入門章目錄1.3.1AndroidStudio快速入門CreateNewProject:新建一個Android項目。OpenanExistingProject:打開一個已有Android項目。GetfromVersionControl:從版本服務(wù)器簽出一個Android項目。ProfileorDebugAPK:分析和調(diào)試現(xiàn)有的APK。ImportProject(Gradle,EclipseADT,etc.):從Eclipse等環(huán)境導(dǎo)入Android項目。ImportanAndroidCodeSample:從Google公司官方服務(wù)器導(dǎo)入Android案例項目。首次啟動AndroidStudio時,會顯示圖1-8所示的主控面板,其中各選項意義如下。AndroidStudio主控面板1.3.1AndroidStudio快速入門1.主窗口菜單欄工具欄導(dǎo)航欄編輯器窗口工具窗口欄工具窗口狀態(tài)欄AndroidStudio主窗口1.3.1AndroidStudio快速入門2.工具窗口對工具窗口的操作如下。A要展開或折疊工具窗口,可以在工具窗口欄中單擊該工具窗口的名稱,還可以拖動、固定、取消固定、關(guān)聯(lián)和分離工具窗口。B要將工具窗口布局恢復(fù)為默認(rèn)布局,可以單擊“Window”>“RestoreDefaultLayout”。C要顯示或隱藏整個工具窗口欄,可以單擊AndroidStudio窗口左下角的窗口圖標(biāo)。D要找到特定工具窗口,可將鼠標(biāo)指針懸停在窗口圖標(biāo)的上方,并從菜單選擇相應(yīng)的工具窗口。1.3.1AndroidStudio快速入門3.快捷導(dǎo)航在AndroidStudio界面進(jìn)行導(dǎo)航時的常見快捷操作。ECtrl+Shift+Alt+N組合鍵可以按名稱導(dǎo)航至方法或字段。ACtrl+E組合鍵可以在最近訪問的文件之間切換。CCtrl+N組合鍵可以搜索并導(dǎo)航至項目中的特定類。FAlt+F7組合鍵可以查找、引用當(dāng)前光標(biāo)位置處的類、方法、字段、參數(shù)或語句的所有代碼片段。BCtrl+F12組合鍵可以查看當(dāng)前文件的結(jié)構(gòu)??梢允褂么瞬僮骺焖賹?dǎo)航至當(dāng)前文件的任何部分。DCtrl+Shift+N組合鍵可以搜索并導(dǎo)航至文件或文件夾。1.3.2配置AndroidStudio單擊“File”>“Settings”,打開“Settings”對話框,如圖1-10所示。“Settings”對話框1.3.2配置AndroidStudio1.主題設(shè)置首次運行AndroidStudio在AndroidStudioUI主題選擇界面進(jìn)行主題設(shè)置。在此之后需要更改主題,則可以在“Setting”對話框中進(jìn)行設(shè)置。AndroidStudioUI主題選擇界面1.3.2配置AndroidStudio2.代碼字體設(shè)置在“Settings”對話框中,單擊左側(cè)“Editor”>“ColorScheme”>“ColorSchemeFont”,在右側(cè)的“Scheme”下拉列表中選擇相應(yīng)的字體,如圖所示。代碼字體設(shè)置1.3.2配置AndroidStudio3.快捷鍵設(shè)置在“Settings”對話框中,單擊左側(cè)“Keymap”,在右側(cè)的“Keymap”下拉列表中選擇熟悉的IDE的快捷鍵,如圖所示。或者,在下方的列表框中進(jìn)行相應(yīng)的快捷鍵設(shè)置,如圖1-14所示。AndroidStudio快捷鍵設(shè)置1AndroidStudio快捷鍵設(shè)置21.3.2配置AndroidStudio4.代碼自動提示設(shè)置在“Settings”對話框中,單擊左側(cè)“Editor”>“General”>“CodeCompletion”,在右側(cè)取消勾選“Matchcase”復(fù)選框,如圖所示。AndroidStudio代碼自動提示設(shè)置1.3.2配置AndroidStudio5.包自動導(dǎo)入設(shè)置在“Settings”對話框中,單擊左側(cè)“Editor”>“General”>“AutoImport”,在右側(cè)勾選“Addunambiguousimportsonthefly”和“Optimizeimportsonthefly(forcurrentproject)”復(fù)選框,如圖所示。AndroidStudio包自動導(dǎo)入設(shè)置1.3.3AndroidSDK升級管理更新AndroidSDK的版本:在AndroidStudio中單擊“Tools”>“SDKManager”,打開“Settings”對話框的AndroidSDK配置界面(見圖1-17),然后選擇相應(yīng)的版本或工具即可更新下載。AndroidSDK配置界面1.3.3AndroidSDK升級管理

SDKPlatforms:列出了所有的AndroidSDK版本,勾選下方的“ShowPackageDetails”復(fù)選框可以看到每個版本的詳細(xì)內(nèi)容列表。包括AndroidSDK構(gòu)建工具、AndroidSDK平臺工具、AndroidSDK工具、Android支持存儲庫、以及Google存儲庫DKUpdateSites:管理AndroidStudio、檢查Android工具和第三方工具更新的SDK網(wǎng)站,可以添加其他提供自有工具的網(wǎng)站,然后從這些網(wǎng)站下載軟件包。

本章小結(jié)本章主要介紹了Android的入門知識,包括Android的由來、發(fā)展歷程和主要應(yīng)用領(lǐng)域;介紹了Android的人才需求現(xiàn)狀,給出了Android的學(xué)習(xí)路徑和學(xué)習(xí)資源。本章重點介紹了搭建Android集成開發(fā)環(huán)境的方法,并介紹了AndroidStudio的常見配置與使用方法,這是提高Android應(yīng)用開發(fā)效率的關(guān)鍵,也為學(xué)習(xí)第2章的內(nèi)容打下基礎(chǔ)。

動手實踐自己動手完成Android集成開發(fā)環(huán)境的搭建,完成AndroidStudio的常見配置,根據(jù)Android官方文檔中“構(gòu)建首個應(yīng)用”的指導(dǎo)完成相關(guān)實踐任務(wù)。THANKS!Android移動應(yīng)用開發(fā)(微課版)工業(yè)和信息化高職高專精品系列教材Android移動應(yīng)用開發(fā)(微課版)010302040706認(rèn)識Android列表與適配器菜單與對話框設(shè)計UI控件設(shè)計設(shè)計用戶界面創(chuàng)建Android項目Android本地存儲書目錄140911BroadcastReceiver與廣播通信Service與后臺服務(wù)設(shè)計ContentProvider與應(yīng)用間數(shù)據(jù)共享網(wǎng)絡(luò)連接與管理05Activity與Fragment08131210線程間的通信與異步機制Android性能分析與測試第2章

創(chuàng)建Android項目Android移動應(yīng)用開發(fā)(微課版)章目錄2.1Android項目架構(gòu)解析2.2Android資源配置與管理2.3Android代碼調(diào)試任務(wù)2.1使用向?qū)?chuàng)建Android項目1.任務(wù)描述使用AndroidStudio創(chuàng)建一個Android移動應(yīng)用項目,在向?qū)е信渲庙椖康膮?shù),并選擇一個Activity(Android的一個系統(tǒng)組件,用于構(gòu)建用戶界面)模板。完成項目的創(chuàng)建后,通過AndroidPluginforGradle編譯、構(gòu)建和打包Android項目,并通過手機或模擬器運行該項目。2.運行結(jié)果本任務(wù)創(chuàng)建一個包含EmptyActivity模板的Android項目,運行結(jié)果如圖所示。運行結(jié)果任務(wù)介紹2.1.1Android的項目組成通過向?qū)?chuàng)建的項目架構(gòu)如圖示。在AndroidStudio中單擊“View”>“ToolWindows”>“Project”,打開“Project”窗口?!癙roject”窗口展示了項目中文件的組織方式,包括Project、Packages、ProjectFiles、Problems、Android等。Android項目架構(gòu)主要包括編譯系統(tǒng)和應(yīng)用模塊兩大類。2.1.1Android的項目組成Gradle是Google公司推薦使用的一套基于Groovy的編譯系統(tǒng)腳本,Android中使用GradleWrapper對Gradle進(jìn)行一層包裝。項目中與Gradle相關(guān)的模塊如表2-1所示。01編譯系統(tǒng)文件(夾)名用途.gradleGradle編譯系統(tǒng),版本由Wrapper指定.ideaAndroidStudioIDE所需要的文件gradleWrapper的JAR和配置文件所在的位置.gitignoreGit使用的IGNORE文件build.gradleGradle編譯的相關(guān)配置文件,包括模塊配置文件和項目配置文件pertiesGradle相關(guān)的全局屬性設(shè)置gradlewLinux下的GradleWrapper可執(zhí)行文件graldew.batWindows下的GradleWrapper可執(zhí)行文件perties本地屬性設(shè)置(key設(shè)置,AndroidSDK位置等屬性),這個文件是不推薦上傳到版本控制系統(tǒng)(VersionControlSystem,VCS)中的settings.gradle和設(shè)置相關(guān)的Gradle腳本2.1.1Android的項目組成應(yīng)用(App)模塊主要包含表2-2所列舉的內(nèi)容。02應(yīng)用模塊文件(夾)名用途build編譯后文件存在的位置(包括最終生成的APK也在這里面)libs依賴的庫所在的位置(JAR和AAR)src源代碼所在的目錄src/main主要代碼所在位置src/androidTest包含在Android設(shè)備上運行的儀器測試的代碼src/test包含在主機Java虛擬機(JavaVirtualMachine,JVM)上運行的本地測試的代碼src/main/assets項目中附帶的一些文件src/main/javaJava代碼所在的位置src/main/jni包含使用Java原生接口(JavaNativeInterface,JNI)的原生代碼src/main/resAndroid資源文件所在位置src/main/AndroidManifest.xml項目的清單列表文件,說明項目及其每個組件的性質(zhì)build.gradle和這個項目有關(guān)的Gradle配置,一些項目的依賴就寫在這里面代碼混淆配置文件2.1.1Android的項目組成單擊“File”>“ProjectStructure”,打開圖2-4所示的“ProjectStructure”對話框。03項目架構(gòu)“ProjectStructure”對話框2.1.2項目文件解析通過向?qū)傻腗ainActivity.java是Android中用于管理用戶界面的系統(tǒng)組件。MainActivity.java代碼編輯器窗口如圖所示。01MainActivity.javaMainActivity.java代碼編輯器窗口2.1.2項目文件解析activity_main.xml是一個布局文件,用于構(gòu)MainActivity.java

所管理的用戶界面。activity_main.xml代碼編輯器窗口如圖所示。02activity_main.xml2.1.2項目文件解析app文件夾下的build.gradle主要用于配置應(yīng)用程序?qū)傩?、簽名、特性(渠道)、?gòu)建類型和依賴。build.gradle代碼編輯器窗口如圖所示。03app/build.gradlebuild.gradle代碼編輯器窗口2.1.3清單文件解析AndroidManifest.xmlAndroidManifest.xml是一個用來描述Android應(yīng)用整體信息的結(jié)構(gòu)化XML清單文件,位于app/src/main目錄下。該文件描述了應(yīng)用程序的環(huán)境及其支持的Activity、Service、Intent接收器、ContentProvider提供程序以及權(quán)限、外部庫和設(shè)備特性等信息。AndroidManifest.xml代碼編輯器窗口如圖所示。在AndroidManifest.xml文件的所有元素中,只有<manifest>和<application>標(biāo)簽中的元素是必需的,且只能出現(xiàn)一次。AndroidManifest.xml文件的所有元素值均通過屬性進(jìn)行設(shè)置,而不是通過元素內(nèi)的字符數(shù)據(jù)設(shè)置。2.1.3清單文件解析AndroidManifest.xml代碼編輯器窗口表示從右向左布局Activity的聲明任務(wù)2.2設(shè)計App閃屏界面1.任務(wù)描述參照微信閃屏界面,實現(xiàn)App閃屏界面。2.運行結(jié)果本任務(wù)運行結(jié)果如圖2-9所示。運行結(jié)果任務(wù)介紹章目錄2.1Android項目架構(gòu)解析2.2Android資源配置與管理2.3Android代碼調(diào)試2.2.1資源的種類可以通過3種類型的文件來創(chuàng)建資源:XML文件(除位圖和原始數(shù)據(jù)文件)位圖文件原始數(shù)據(jù)文件兩種不同類型的XML文件一種是編譯到包里;另外一種是通過AAPT產(chǎn)生的資源文件。表2-3列出了Android支持的資源文件類型。2.2.1資源的種類路徑資源文件類型res/animator/定義屬性動畫的XML文件res/anim/定義補間動畫的XML文件,加載動畫時使用AnimationUtils.loadAnimation()方法。屬性動畫也可以保存在此目錄中,但是為了區(qū)分這兩種類型,屬性動畫首選res/animator/目錄res/color/定義顏色狀態(tài)列表的XML文件res/drawable/存放位圖文件(擴(kuò)展名為.png、.9.png、.jpg、.gif)或編譯為Drawable資源子類型的XML文件,可以使用Resource.getDrawable()方法獲取這些資源res/mipmap/存放適用于不同啟動器圖標(biāo)密度的Drawable文件res/layout/定義屏幕布局的XML文件(或者屏幕的一部分)res/values/文件夾里有一些典型的文件(一般約定文件以定義的元素類型后面部分為文件名)。arrays.xml:定義數(shù)組。colors.xml:定義顏色和顏色字符串?dāng)?shù)值??梢允褂肦esources.getDrawable()和Resources.getColor()方法取得這些資源。dimens.xml:定義尺寸數(shù)值??梢允褂肦esources.getDimension()方法取得這些資源。strings.xml:定義字符串?dāng)?shù)值??梢允褂肦esources.getString()或Resources.getText()方法取得這些資源。styles.xml:定義類型對象res/menu/定義程序菜單的XML文件,例如OptionsMenu、ContextMenu或者SubMenu等res/xml/任何XML文件。可以進(jìn)行編譯,并能在運行時調(diào)用Resources.getXML()方法顯示XML原文件res/raw/放置任意原始形式的文件,并直接被復(fù)制到設(shè)備上。可以調(diào)用Resources.openRawResource()方法取得資源res/font/帶有擴(kuò)展名的字體文件(如.ttf、.otf或.ttc)或包含<font-family>標(biāo)簽的XML文件2.2.2引用資源以下4種通過資源ID引用資源的方式。例如styles、themes、layouts等。要調(diào)用這些資源通過Android包名來限定資源。例如,在ListAdapter中以列表的形式顯示數(shù)據(jù)。setListAdapter(newArrayAdapter<String>(this,android.R.layout.simple_list_item_1,myarray));4.引用系統(tǒng)資源Android可以通過XML格式的資源文件來聲明與定義各種類型的數(shù)組。(1)字符串?dāng)?shù)組(2)整型數(shù)組(3)Drawable數(shù)組(4)Color數(shù)組3.引用資源數(shù)組一個在屬性(或者資源)里提供的數(shù)值可以被指向一個具體的資源。常用于布局文件中對字符串或圖像的引用。在XML文件中引用資源的語法:@[<package_name>:]<resource_type>/<resource_name>2.在XML文件中引用資源知道資源的ID和目標(biāo)文件的資源類型就可以在代碼里使用資源。語法:R.resource_type.resource_name或android.R.resource_type.resource_name1.在代碼中引用資源2.2.3管理資源備用資源是為特定配置而設(shè)置的資源。一個特定配置對應(yīng)一組特定的資源,并給資源目錄添加一個合適的配置限定詞作為名稱。創(chuàng)建備用資源:01備用資源首先在res/目錄中創(chuàng)建以<resources_name>-<qualifier>形式命名的新目錄。創(chuàng)建好后將相應(yīng)的備用資源保存在其中。例如:res/drawable/icon.pngbackground.pngdrawable-hdpi/icon.pngbackground.png2.2.3管理資源02本地化資源很大程度上,本地化應(yīng)用程序(根據(jù)產(chǎn)品界面語言以及硬件配置設(shè)置不同的資源)的工作就是為各種語言提供可替代的文本資源(有時,還需要提供可替代的圖像、聲音、布局及其他地區(qū)設(shè)置相關(guān)資源)。為了支持更多的語言,需要在res目錄里創(chuàng)建額外的values目錄。這些values目錄的名稱需要以“-”和國家的ISO碼結(jié)尾。Android在運行時會根據(jù)設(shè)備的語言環(huán)境設(shè)置來加載適當(dāng)?shù)馁Y源。例如:res/values/strings.xmlres/values-fr/strings.xmlres/values-ja/strings.xml2.2.3管理資源02本地化資源在AndroidStudio中提供TranslationsEditor以輔助本地化工作。選擇res/values/strings.xml文件,右擊strings.xml文件,然后選擇“OpenTranslationsEditor”,會顯示strings.xml文件中的鍵值對,如圖所示。TranslationsEditor2.2.3管理資源Android用兩種常規(guī)屬性來分類設(shè)備屏幕:尺寸和像素密度。尺寸通常分為4類:small、normal、large和xlarge。像素密度通常也分為4類:低分辨率(ldpi)、中分辨率(mdpi)、高分辨率(hdpi)和特高分辨率(xhdpi)。03適配不同尺寸的屏幕為了聲明用于不同屏幕的不同layout布局文件和Bitmap資源,必須把這些可選的資源文件分別放在不同的目錄中。(1)創(chuàng)建不同的layout布局文件(2)創(chuàng)建不同的Bitmap資源任務(wù)2.3托管項目至GitHub【任務(wù)介紹】1.任務(wù)描述本任務(wù)通過搭建本地Git環(huán)境、在AndroidStudio中配置GitHub來實現(xiàn)將本地Android項目托管到GitHub中。2.運行結(jié)果項目托管成功后,GitHub中的項目瀏覽界面如圖所示。GitHub中的項目瀏覽界面章目錄2.1Android項目架構(gòu)解析2.2Android資源配置與管理2.3Android代碼調(diào)試2.3.1Logcat與系統(tǒng)日志系統(tǒng)日志系統(tǒng)日志會在調(diào)試應(yīng)用時顯示系統(tǒng)消息。這些消息包括運行在設(shè)備上的應(yīng)用產(chǎn)生的信息。如果想利用系統(tǒng)日志來調(diào)試應(yīng)用,需確保代碼能夠在應(yīng)用處于開發(fā)階段時寫入日志消息和輸出針對異常的堆疊追蹤?!癓ogcat”窗口常用于顯示以下兩種情況產(chǎn)生的信息程序強制關(guān)閉或者異常退出的情況,即ForceClosed。程序無響應(yīng)的情況,即ApplicationNoResponse[界面操作過程中線程響應(yīng)超過5s,或者HandleMessage()回調(diào)方法執(zhí)行過程中線程響應(yīng)超過10s]。2.3.1Logcat與系統(tǒng)日志“Logcat”窗口2.3.1Logcat與系統(tǒng)日志在代碼中寫入日志消息,需使用Log類。android.util.Log類為Android提供了一個日志工具類,其通過Log.v()、Log.d()等方法向“Logcat”窗口輸出調(diào)試信息。一種比較好的做法:在要用作第一個參數(shù)的類中聲明TAG常量。例如,可以按如下方式創(chuàng)建一條日志消息。privatestaticfinalStringTAG="MyActivity";Log.i(TAG,"MyClass.getView()—getitemnumber"+position);Logcat信息級別包括Verbose(詳細(xì))、Debug(調(diào)試)、Info(信息)、Warning(警告)、Error(錯誤)、Assert(斷言)。不同級別的信息顯示不同的顏色。2.3.1Logcat與系統(tǒng)日志AndroidLogcat設(shè)置對話框如圖所示。2.3.1Logcat與系統(tǒng)日志importandroid.util.Log;...publicclassMyActivityextendsActivity{privatestaticfinalStringTAG=MyActivity.class.getSimpleName();...@OverridepublicvoidonCreate(BundlesavedInstanceState){if(savedInstanceState!=null){Log.d(TAG,"onCreate()Restoringpreviousstate");/*restorestate*/}else{Log.d(TAG,"onCreate()Nosavedstateavailable");/*initializeapp*/}}}下面的示例演示了Logcat的使用方法。2.3.2啟動調(diào)試AndroidStudio調(diào)試程序的一般方法是:在代碼編輯區(qū)域,在需要調(diào)試的行號處單擊以設(shè)置斷點,然后單擊“Run”>“Debug‘a(chǎn)pp’”,或單擊工具欄上的“Debug‘a(chǎn)pp’”按鈕開始調(diào)試程序。當(dāng)前程序停留的代碼行調(diào)試相關(guān)的一些按鈕。程序調(diào)用棧區(qū)局部變量觀察區(qū)。2.3.3執(zhí)行調(diào)試行斷點,程序執(zhí)行到該斷點所在的行時,暫停程序的執(zhí)行。暫停時,可以檢查變量、對表達(dá)式求值,然后繼續(xù)逐行執(zhí)行,以確定運行時錯誤的原因。“Breakpoints”對話框,如圖所示?!癇reakpoints”對話框2.3.3執(zhí)行調(diào)試斷點調(diào)試類型1.條件斷點條件斷點是指在程序滿足某個條件的時候,能夠使程序暫停執(zhí)行的斷點。2.日志斷點日志斷點雖然叫作“斷點”,但是并不會暫停程序的執(zhí)行,只是讓程序在執(zhí)行時輸出日志信息、函數(shù)參數(shù)等。3.方法斷點傳統(tǒng)的調(diào)試方式是以行為單位的,即所謂單步調(diào)試。4.異常斷點異常斷點用于對程序出現(xiàn)異常的語句進(jìn)行監(jiān)控。

本章小結(jié)本章主要介紹了在AndroidStudio中創(chuàng)建Android項目,以及為項目創(chuàng)建資源的方法,這是Android應(yīng)用開發(fā)的基礎(chǔ)。本章還介紹了基于GitHub托管項目,以及在AndroidStudio中調(diào)試Android代碼的方法,這是Android程序員需具備的基本技能。本章和第1章主要介紹Android應(yīng)用開發(fā)的基礎(chǔ)知識,第3章開始介紹用戶界面設(shè)計的基本知識。

動手實踐使用AndroidStudio的向?qū)Чδ軇?chuàng)建一個AndroidPhone類別的項目,并使用GUI模板創(chuàng)建一個登錄界面。完成項目的構(gòu)建后運行項目并托管到GitHub。THANKS!Android移動應(yīng)用開發(fā)(微課版)工業(yè)和信息化高職高專精品系列教材Android移動應(yīng)用開發(fā)(微課版)010302040706認(rèn)識Android列表與適配器菜單與對話框設(shè)計UI控件設(shè)計設(shè)計用戶界面創(chuàng)建Android項目Android本地存儲書目錄140911BroadcastReceiver與廣播通信Service與后臺服務(wù)設(shè)計ContentProvider與應(yīng)用間數(shù)據(jù)共享網(wǎng)絡(luò)連接與管理05Activity與Fragment08131210線程間的通信與異步機制Android性能分析與測試第3章

設(shè)計用戶界面Android移動應(yīng)用開發(fā)(微課版)3.1認(rèn)識布局3.2創(chuàng)建布局3.3布局設(shè)計章目錄3.4優(yōu)化布局3.1.1UI概覽View對象用于在屏幕上繪制可供用戶交互的內(nèi)容。Android應(yīng)用中的所有用戶界面元素都使用View和ViewGroup對象構(gòu)建而成。ViewGroup對象用于存儲其他View和ViewGroup對象,以便定義界面的布局。定義界面布局的視圖層次結(jié)構(gòu)如圖所示。定義界面布局的視圖層次結(jié)構(gòu)3.1.1UI概覽View類View是Android中用戶界面體現(xiàn)的基礎(chǔ)單位。Android界面的基本UI元素由android.view.View提供并實現(xiàn)。View類架構(gòu)顯示了View類的繼承關(guān)系。View是所有與用戶交互的組件(如TextView、Button等)的基類。View類架構(gòu)3.1.1UI概覽ViewGroup子類ViewGroup是一個特殊的View,它繼承于android.view.View,如圖3-3所示。功能:裝載和管理下一層的View對象或ViewGroup對象,它是一個容納其他元素的容器。ViewGroup子類架構(gòu)3.1.2布局規(guī)范基準(zhǔn)網(wǎng)格手機、平板電腦和桌面設(shè)備的所有組件都與8dp的基準(zhǔn)網(wǎng)格對齊;工具欄上的插圖與4dp的基準(zhǔn)網(wǎng)格對齊;文字與4dp的基準(zhǔn)網(wǎng)格對齊。水平與垂直基準(zhǔn)網(wǎng)格示例如圖所示(①為24dp,②為56dp,③為8dp,④為72dp)。3.1.2布局規(guī)范比例關(guān)鍵線界面元素的寬度與高度的比例(也就是寬高比),可以應(yīng)用于所有的UI元素和屏幕尺寸。推薦的寬高比包括16∶9、3∶2、4∶3、1∶1、3∶4和2∶3。比例關(guān)鍵線示例如圖所示。3.1.2布局規(guī)范觸控范圍為了確保信息密度和可用性的平衡,觸控目標(biāo)的尺寸應(yīng)至少為48dp×48dp。多數(shù)情況下,觸控目標(biāo)之間還有8dp的間隔。調(diào)整元素的寬、高至少為48dp,確保在任何屏幕中元素的物理尺寸都至少為寬、高9mm。建議的觸控對象寬、高為7~10mm。如圖所示,頭像尺寸寬、高為40dp,圖標(biāo)尺寸寬、高為24dp,但是它們的觸控范圍均為48dp。觸控范圍示例3.1認(rèn)識布局3.2創(chuàng)建布局3.3布局設(shè)計章目錄3.4優(yōu)化布局3.2.1創(chuàng)建XML布局文件在AndroidStudio中創(chuàng)建XML布局文件的一般步驟如下。創(chuàng)建XML布局文件布局文件名和布局名稱3.2.2可視化界面編輯器當(dāng)打開

XML

布局文件時,單擊下方的“Design”標(biāo)簽,將顯示Design編輯器窗口,如圖所示。Design編輯器窗口Design編輯器窗口3.2.2可視化界面編輯器當(dāng)打開XML布局文件時,單擊下方的“Text”標(biāo)簽,將顯示Text編輯器窗口,如圖所示。Text編輯器窗口Text編輯器窗口3.2.2可視化界面編輯器Design編輯器頂行的工具欄按鈕可用于在編輯器中配置布局的外觀,如圖所示。預(yù)覽外觀設(shè)計Design編輯器工具欄添加界面控件在AndroidStudio中,通過將小部件從“Palette”窗格拖曳到Design編輯器,并在“Attributes”窗格中優(yōu)化布局屬性,來完成界面的布局工作。3.2.2可視化界面編輯器在編輯器中選擇要查看的控件并編輯該控件的常用屬性。如果選擇的視圖是ConstraintLayout的子項,則“Attributes”窗格在頂部提供一個帶有多個控件的視圖檢查器,如圖所示。設(shè)置控件屬性“Attributes”窗格3.2.3視圖基本屬性與事件常見的屬性包括以下幾項。312android:idXML中的ID語法:android:id="@+id/id_index"android:layout_width和android:layout_height每個ViewGroup都必須包含一個layout_width和layout_height屬性,用來指定寬度和高度。padding相關(guān)屬性padding

可以設(shè)定上、下、左、右各個方向上的間距。也可以同時使用setPadding()或者setPaddingLeft()方法進(jìn)行設(shè)置。3.2.3視圖基本屬性與事件padding和layout_margin的區(qū)別3.2.3視圖基本屬性與事件XML布局中的View常見XML屬性與對應(yīng)的方法屬性名稱對應(yīng)方法描述android:clickablesetClickable()設(shè)置View是否響應(yīng)單擊事件android:visibilitysetVisibility()控制View的可見性android:focusablesetFocusable()控制View是否可以獲取焦點android:idsetId()為View設(shè)置標(biāo)識符,可通過findViewById()方法獲取android:longClickablesetLongClickable()設(shè)置View是否響應(yīng)長單擊事件android:soundEffectsEnabledsetSoundEffectsEnabled()設(shè)置當(dāng)View觸發(fā)單擊等事件時是否播放音效android:saveEnabledsetSaveEnabled()如果未設(shè)置,當(dāng)View被凍結(jié)時將不會保存其狀態(tài)android:nextFocusLeftsetNextFocusLeftId()定義當(dāng)向左搜索時應(yīng)該獲取焦點的View3.2.3視圖基本屬性與事件件監(jiān)聽器包含以下回調(diào)方法。onClick()回調(diào)方法:View.OnClickListener。用戶單擊時觸發(fā)。onLongClick()回調(diào)方法:View.OnLongClickListener。用戶長時間按住時觸發(fā)。onFocusChange()回調(diào)方法:View.OnFocusChangeListener。焦點發(fā)生改變時觸發(fā)。onKeyDown()回調(diào)方法:View.OnKeyListener。用戶按鍵盤上的鍵時觸發(fā)。onTouch()回調(diào)方法:View.OnTouchListener。用戶觸摸時觸發(fā)。onCreateContextMenu()回調(diào)方法:View.OnCreateContextMenuListener。用戶單擊菜單時觸發(fā)。mButton.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){…}

});任務(wù)3.1設(shè)計App登錄界面1.任務(wù)描述參照微信登錄界面,使用常用控件、線性布局和相對布局,實現(xiàn)App登錄界面。2.運行結(jié)果本任務(wù)運行結(jié)果如圖所示。任務(wù)介紹登錄界面運行結(jié)果3.1認(rèn)識布局3.2創(chuàng)建布局3.3布局設(shè)計章目錄3.4優(yōu)化布局3.3.1線性布局顯示方式的屬性是android:orientation,其取值有兩個:horizontal表示水平顯示(默認(rèn)方式),vertical表示垂直顯示。線性布局中,ViewGroup以線性方向顯示它的子視圖元素,即后一個元素垂直或水平顯示在前一個子元素之后,如圖所示。線性布局中有以下兩個重要的屬性。android:layout_weightandroid:gravity線性布局界面3.3.2約束布局添加ConstraintLayout依賴庫在app/build.gradle中添加如下依賴。implementation'androidx.constraintlayout:constraintlayout:1.1.3'添加依賴后,新建的布局文件將以ConstraintLayout作為根節(jié)點,例如:<?xmlversion="1.0"encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"tools:context=".MainActivity"tools:showIn="@layout/activity_main">3.3.2約束布局<fragmentandroid:id="@+id/fragment"android:name="androidx.navigation.fragment.NavHostFragment"android:layout_width="0dp"android:layout_height="0dp"app:defaultNavHost="true"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:navGraph="@navigation/nav_graph"/></androidx.constraintlayout.widget.ConstraintLayout>3.3.2約束布局ConstraintLayout編輯器ConstraintLayout編輯器提供設(shè)計預(yù)覽和藍(lán)圖功能,如圖所示。ConstraintLayout編輯器3.3.2約束布局手動創(chuàng)建約束開發(fā)人員可以通過拖曳約束手柄來為布局手動創(chuàng)建約束。首先認(rèn)識約束手柄。ConstraintLayout編輯器為布局中的控件添加了一些約束手柄,如圖所示。控件的約束手柄改變尺寸的手柄側(cè)邊約束手柄基線手柄3.3.2約束布局下面以一個示例演示在ConstraintLayout編輯器中創(chuàng)建約束的方法。在容器內(nèi)添加一個ImageView和一個TextView,設(shè)計效果如圖所示。在容器內(nèi)添加ImageView和TextView的設(shè)計效果3.3.2約束布局Inspector編輯區(qū)域第一步,創(chuàng)建ImageView和TextView的約束,使TextView顯示在ImageView的下方。第二步,創(chuàng)建ImageView與容器的約束。創(chuàng)建TextView和ImageView的約束3.3.2約束布局自動創(chuàng)建約束下面的示例演示了自動創(chuàng)建約束的方法。自動為ImageView創(chuàng)建與容器的約束自動創(chuàng)建約束效果任務(wù)3.2設(shè)計App“我”界面自動創(chuàng)建約束1.任務(wù)描述參照微信“我”界面,使用常用控件、約束布局、線性布局,實現(xiàn)App“我”界面。2.運行結(jié)果本任務(wù)運行結(jié)果如圖所示。運行結(jié)果3.1認(rèn)識布局3.2創(chuàng)建布局3.3布局設(shè)計章目錄3.4優(yōu)化布局3.4.1復(fù)用布局<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><include>標(biāo)簽可以實現(xiàn)在一個布局文件中引用另一個布局文件,通常適合用于界面布局復(fù)雜、不同界面有共用布局的App中。在Android中,通常使用兩種方式來復(fù)用布局:一種是通過<include>標(biāo)簽來復(fù)用布局,另一種是通過Fragment來復(fù)用布局。下面的示例使用<include>標(biāo)簽將head.xml布局文件包含在當(dāng)前布局容器中。3.4.1復(fù)用布局<includeandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="1"layout="@layout/head"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="4"android:gravity="center_horizontal"><Button…android:text="清空"/><Button…android:text="保存"/></LinearLayout></LinearLayout>3.4.1復(fù)用布局使用<include>標(biāo)簽時需要注意以下幾點。如果<include>標(biāo)簽指定了ID,就不能直接把它里面的控件當(dāng)成主布局中的控件直接獲得,必須先獲得這個XML布局文件,再通過這個布局文件的findViewById()方法來獲得其子控件。如果在一個布局文件里使用<include>標(biāo)簽多次導(dǎo)入相同的布局文件,則獲取<include>標(biāo)簽中的控件有直接和間接兩種方式,且只有間接方式能獲取相同ID的控件。使用<include>標(biāo)簽和<merge>標(biāo)簽的組合可以優(yōu)化UI層次結(jié)構(gòu)。0302013.4.2LayoutInspectorLayoutInspector是AndroidStudio自帶的一個布局檢查器,用于優(yōu)化布局的性能(替代以前的HierarchyViewer性能優(yōu)化工具)?!癓ayoutInspector”窗口3.4.2LayoutInspector另外,在AndroidSDK的tools/bin目錄下,也有一個圖層查看工具—UIAutomatorViewer,對應(yīng)的文件為uiautomatorviewer.bat。UIAutomatorViewer通過截屏并分析XML布局文件的方式,為用戶提供控件信息查看服務(wù)。“UIAutomatorViewer”窗口如圖所示?!癠IAutomatorViewer”窗口

本章小結(jié)本章主要介紹了Android中設(shè)計用戶界面的基本知識,包括用戶界面的層次結(jié)構(gòu)、創(chuàng)建界面布局的方法及基于MaterialDesign的布局規(guī)范,特別是在可視化環(huán)境下設(shè)計用戶界面的方法,這是開發(fā)一個Android應(yīng)用的起點。本章還介紹了線性布局、約束布局等常見用戶界面的布局方式,以及優(yōu)化布局設(shè)計的方法和布局檢查器的使用。第4章將詳細(xì)介紹用戶界面中常見控件的設(shè)計方法。

動手實踐使用約束布局設(shè)計一個如圖所示的個人信息展示界面(不要求實現(xiàn)界面的交互功能)。個人信息展示界面THANKS!Android移動應(yīng)用開發(fā)(微課版)工業(yè)和信息化高職高專精品系列教材Android移動應(yīng)用開發(fā)(微課版)010302040706認(rèn)識Android列表與適配器菜單與對話框設(shè)計UI控件設(shè)計設(shè)計用戶界面創(chuàng)建Android項目Android本地存儲書目錄140911BroadcastReceiver與廣播通信Service與后臺服務(wù)設(shè)計ContentProvider與應(yīng)用間數(shù)據(jù)共享網(wǎng)絡(luò)連接與管理05Activity與Fragment08131210線程間的通信與異步機制Android性能分析與測試第4章

UI控件設(shè)計Android移動應(yīng)用開發(fā)(微課版)4.1文本控件設(shè)計4.2按鈕控件設(shè)計4.3圖像控件設(shè)計章目錄4.4選擇控件和開關(guān)控件設(shè)計4.5進(jìn)度條控件設(shè)計4.1.1控件設(shè)計基本步驟Android中控件的使用一般遵循以下步驟。①在布局中添加控件,并給控件添加android:id屬性,例如:<TextViewandroid:id="@+id/message"…/>②在Activity中綁定控件,一般在Activity生命周期的onCreate()方法中執(zhí)行,例如:privateTextViewmTextView;@OverridepublicvoidonCreate(BundlesavedInstanceState){…mTextView=(TextView)findViewById(R.id.message);}4.1.1控件設(shè)計基本步驟③定義控件的響應(yīng)事件,如為TextView定義單擊事件:mTextView.setText("HelloAndroid…");mTextView.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewarg0){Toast.makeText(getApplicationContext(),"HelloWorld",Toast.LENGTH_SHORT).show();}});4.1.2TextViewTextView常見布局屬性有以下幾項:android:text:設(shè)置顯示文本。android:textColor:設(shè)置文本顏色。android:textSize:設(shè)置文本大小,推薦度量單位為sp。android:textStyle:設(shè)置字形,包括bold、italic等,可以設(shè)置多個,用“|”分隔。android:typeface:設(shè)置文本字體,必須是常量值normal、sans、serif和monospace之一。android:ems:設(shè)置寬度為n個字符。android:singleLine:設(shè)置單行顯示。⑧android:ellipsize:設(shè)置當(dāng)文本過長時,該控件如何顯示。4.1.2TextView下面是TextView布局的一個示例。<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/text_view_id"android:layout_height="wrap_content"android:layout_width="wrap_content"android:text="@string/hello"/></LinearLayout>4.1.2TextViewTextView常見的用法就是通過getText()方法和setText()方法獲取或設(shè)置TextView的文本。例如:publicclassMainActivityextendsAppCompatActivity{protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);finalTextViewhelloTextView=(TextView)findViewById(R.id.text_view_id);helloTextView.setText(R.string.user_greeting);}}4.1.3EditTextEditText是一個用于文本輸入的控件。EditText常見布局屬性還有以下幾項:android:hintText:顯示文字提示信息。android:digits:設(shè)置允許輸入哪些字符,如0~9、.、+、-、*、/、%、\、n、(、)等。android:capitalize:設(shè)置英文字母大寫類型。android:editable:設(shè)置是否可編輯。android:inputMethod:為文本指定輸入法,如com.google.android.inputmethod.pinyin。android:numeric:設(shè)置數(shù)字輸入法。android:password:以“·”顯示密碼文本。android:phoneNumber:設(shè)置為電話號碼的輸入方式。4.1.3EditText文本控件設(shè)計經(jīng)常需要對EditText的輸入進(jìn)行監(jiān)聽,例如軟鍵盤Enter鍵的監(jiān)聽方法,代碼如下:mEditText.setOnEditorActionListener(newTextView.OnEditorActionListener(){publicbooleanonEditorAction(TextViewv,intactionId,KeyEventevent){if(actionId==EditorInfo.IME_ACTION_DONE){…returntrue;}returnfalse;}});4.1.3EditText還有對EditText輸入的監(jiān)聽,例如:mEditText.addTextChangedListener(newTextWatcher(){@OverridepublicvoidbeforeTextChanged(CharSequences,intstart,intcount,intafter){//s 文本框中改變前的字符串信息//start 文本框中改變前的字符串的起始位置//count 文本框中改變前的字符串改變數(shù)量//after 文本框中改變后的字符串與起始位置的偏移量}@OverridepublicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){}@OverridepublicvoidafterTextChanged(Editables){}});4.1.4AutoCompleteTextView和MultiAutoCompleteTextViewAutoCompleteTextView和MultiAutoCompleteTextView控件主要用于完成文本框的自動輸入功能,常見的布局屬性包括以下幾項:android:completionHint:設(shè)置出現(xiàn)在下拉列表中的提示標(biāo)題。android:completionThreshold:設(shè)置用戶至少輸入多少個字符才會顯示提示。android:dropDownHorizontalOffset:下拉列表與文本框之間的水平偏移。默認(rèn)與文本框左對齊。android:dropDownHeight:下拉列表的高度。android:dropDownWidth:下拉列表的寬度。android:dropDownVerticalOffset:垂直偏移量。4.1.4AutoCompleteTextView和MultiAutoCompleteTextViewAutoCompleteTextView示例布局如下。<AutoCompleteTextViewandroid:id="@+id/id_autotextView"android:layout_width="match_parent"android:layout_height="wrap_content"android:completionThreshold="3"android:hint="輸入關(guān)鍵詞"/>4.1.4AutoCompleteTextView和MultiAutoCompleteTextViewAutoCompleteTextView示例布局如下。<AutoCompleteTextViewandroid:id="@+id/id_autotextView"android:layout_width="match_parent"android:layout_height="wrap_content"android:completionThreshold="3"android:hint="輸入關(guān)鍵詞"/>4.1.4AutoCompleteTextView和MultiAutoCompleteTextView實現(xiàn)代碼如下。publicclassMainActivityextendsAppCompatActivity{privateAutoCompleteTextViewacTextView=null;privateString[]res={"beijing1","beijing2","beijing3","shanghai1","shanghai2","guangzhou1","shenzhen"};@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);acTextView=(AutoCompleteTextView)findViewById(R.id.id_autotextView);eventsViews();}privatevoideventsViews(){ArrayAdapter<String>adapter=newArrayAdapter<String>(this,android.R.layout.simple_list_item_1,res);acTextView.setAdapter(adapter);}}顯示效果4.1文本控件設(shè)計4.2按鈕控件設(shè)計4.3圖像控件設(shè)計章目錄4.4選擇控件和開關(guān)控件設(shè)計4.5進(jìn)度條控件設(shè)計4.2.1ButtonButton是一個按鈕控件,用來響應(yīng)用戶的單擊事件。例如,在布局中添加Button控件。<Buttonandroid:id="@+id/id_btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button"/>在Activity中設(shè)置Button的單擊事件。mButton.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){//點擊按鈕的響應(yīng)事件處理}});4.2.1Button例如,定義一個btn_default.xml,代碼如下。<selectorxmlns:android="/apk/res/android"><itemandroid:drawable="@drawable/btn_default_normal"android:state_enabled="true"android:state_window_focused="false"/><itemandroid:drawable="@drawable/btn_default_disabled"android:state_enabled="false"android:state_window_focused="false"/><itemandroid:drawable="@drawable/btn_default_pressed"android:state_pressed="true"/><itemandroid:drawable="@drawable/btn_default_focused"android:state_enabled="true"android:state_focused="true"/><itemandroid:drawable="@drawable/btn_default_normal"android:state_enabled="true"/><itemandroid:drawable="@drawable/btn_default_disabled_focused"android:state_focused="true"/><itemandroid:drawable="@drawable/btn_default_disabled"/></selector>4.2.1Button然后在Button的布局屬性中使用android:background屬性來設(shè)置Drawable資源,例如:<Buttonandroid:id="@+id/btnOne"android:layout_width="match_parent"android:layout_height="64dp"android:background="@drawable/btn_default"android:text="按鈕"/>在Android5.0后,可以基于MaterialDesign支持庫實現(xiàn)更好的按鈕效果。例如,定義Button樣式如下。<stylename="ButtonTheme"parent="@style/Theme.AppCompat.Light.DarkActionBar"><itemname="colorButtonNormal">#FF4081</item><!--正常狀態(tài)下的顏色--><itemname="colorControlHighlight">#22000000</item><!--覆蓋色,按下的顏色--></style>4.2.1Button然后,定義按鈕布局如下。<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"android:theme="@style/ButtonTheme"><Buttonstyle="@style/Widget.AppCompat.Button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="普通"android:textColor="#DDFFFFFF"/><Buttonstyle="@style/Widget.AppCompat.Button.Small"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="小的"android:textColor="#D

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論