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

下載本文檔

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

文檔簡介

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

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

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

本章小結本章主要介紹了Android的入門知識,包括Android的由來、發展歷程和主要應用領域;介紹了Android的人才需求現狀,給出了Android的學習路徑和學習資源。本章重點介紹了搭建Android集成開發環境的方法,并介紹了AndroidStudio的常見配置與使用方法,這是提高Android應用開發效率的關鍵,也為學習第2章的內容打下基礎。

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

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

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

本章小結本章主要介紹了在AndroidStudio中創建Android項目,以及為項目創建資源的方法,這是Android應用開發的基礎。本章還介紹了基于GitHub托管項目,以及在AndroidStudio中調試Android代碼的方法,這是Android程序員需具備的基本技能。本章和第1章主要介紹Android應用開發的基礎知識,第3章開始介紹用戶界面設計的基本知識。

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

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

XML

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

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

});任務3.1設計App登錄界面1.任務描述參照微信登錄界面,使用常用控件、線性布局和相對布局,實現App登錄界面。2.運行結果本任務運行結果如圖所示。任務介紹登錄界面運行結果3.1認識布局3.2創建布局3.3布局設計章目錄3.4優化布局3.3.1線性布局顯示方式的屬性是android:orientation,其取值有兩個:horizontal表示水平顯示(默認方式),vertical表示垂直顯示。線性布局中,ViewGroup以線性方向顯示它的子視圖元素,即后一個元素垂直或水平顯示在前一個子元素之后,如圖所示。線性布局中有以下兩個重要的屬性。android:layout_weightandroid:gravity線性布局界面3.3.2約束布局添加ConstraintLayout依賴庫在app/build.gradle中添加如下依賴。implementation'androidx.constraintlayout:constraintlayout:1.1.3'添加依賴后,新建的布局文件將以ConstraintLayout作為根節點,例如:<?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編輯器提供設計預覽和藍圖功能,如圖所示。ConstraintLayout編輯器3.3.2約束布局手動創建約束開發人員可以通過拖曳約束手柄來為布局手動創建約束。首先認識約束手柄。ConstraintLayout編輯器為布局中的控件添加了一些約束手柄,如圖所示。控件的約束手柄改變尺寸的手柄側邊約束手柄基線手柄3.3.2約束布局下面以一個示例演示在ConstraintLayout編輯器中創建約束的方法。在容器內添加一個ImageView和一個TextView,設計效果如圖所示。在容器內添加ImageView和TextView的設計效果3.3.2約束布局Inspector編輯區域第一步,創建ImageView和TextView的約束,使TextView顯示在ImageView的下方。第二步,創建ImageView與容器的約束。創建TextView和ImageView的約束3.3.2約束布局自動創建約束下面的示例演示了自動創建約束的方法。自動為ImageView創建與容器的約束自動創建約束效果任務3.2設計App“我”界面自動創建約束1.任務描述參照微信“我”界面,使用常用控件、約束布局、線性布局,實現App“我”界面。2.運行結果本任務運行結果如圖所示。運行結果3.1認識布局3.2創建布局3.3布局設計章目錄3.4優化布局3.4.1復用布局<?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>標簽可以實現在一個布局文件中引用另一個布局文件,通常適合用于界面布局復雜、不同界面有共用布局的App中。在Android中,通常使用兩種方式來復用布局:一種是通過<include>標簽來復用布局,另一種是通過Fragment來復用布局。下面的示例使用<include>標簽將head.xml布局文件包含在當前布局容器中。3.4.1復用布局<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復用布局使用<include>標簽時需要注意以下幾點。如果<include>標簽指定了ID,就不能直接把它里面的控件當成主布局中的控件直接獲得,必須先獲得這個XML布局文件,再通過這個布局文件的findViewById()方法來獲得其子控件。如果在一個布局文件里使用<include>標簽多次導入相同的布局文件,則獲取<include>標簽中的控件有直接和間接兩種方式,且只有間接方式能獲取相同ID的控件。使用<include>標簽和<merge>標簽的組合可以優化UI層次結構。0302013.4.2LayoutInspectorLayoutInspector是AndroidStudio自帶的一個布局檢查器,用于優化布局的性能(替代以前的HierarchyViewer性能優化工具)。“LayoutInspector”窗口3.4.2LayoutInspector另外,在AndroidSDK的tools/bin目錄下,也有一個圖層查看工具—UIAutomatorViewer,對應的文件為uiautomatorviewer.bat。UIAutomatorViewer通過截屏并分析XML布局文件的方式,為用戶提供控件信息查看服務。“UIAutomatorViewer”窗口如圖所示。“UIAutomatorViewer”窗口

本章小結本章主要介紹了Android中設計用戶界面的基本知識,包括用戶界面的層次結構、創建界面布局的方法及基于MaterialDesign的布局規范,特別是在可視化環境下設計用戶界面的方法,這是開發一個Android應用的起點。本章還介紹了線性布局、約束布局等常見用戶界面的布局方式,以及優化布局設計的方法和布局檢查器的使用。第4章將詳細介紹用戶界面中常見控件的設計方法。

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

UI控件設計Android移動應用開發(微課版)4.1文本控件設計4.2按鈕控件設計4.3圖像控件設計章目錄4.4選擇控件和開關控件設計4.5進度條控件設計4.1.1控件設計基本步驟Android中控件的使用一般遵循以下步驟。①在布局中添加控件,并給控件添加android:id屬性,例如:<TextViewandroid:id="@+id/message"…/>②在Activity中綁定控件,一般在Activity生命周期的onCreate()方法中執行,例如:privateTextViewmTextView;@OverridepublicvoidonCreate(BundlesavedInstanceState){…mTextView=(TextView)findViewById(R.id.message);}4.1.1控件設計基本步驟③定義控件的響應事件,如為TextView定義單擊事件:mTextView.setText("HelloAndroid…");mTextView.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewarg0){Toast.makeText(getApplicationContext(),"HelloWorld",Toast.LENGTH_SHORT).show();}});4.1.2TextViewTextView常見布局屬性有以下幾項:android:text:設置顯示文本。android:textColor:設置文本顏色。android:textSize:設置文本大小,推薦度量單位為sp。android:textStyle:設置字形,包括bold、italic等,可以設置多個,用“|”分隔。android:typeface:設置文本字體,必須是常量值normal、sans、serif和monospace之一。android:ems:設置寬度為n個字符。android:singleLine:設置單行顯示。⑧android:ellipsize:設置當文本過長時,該控件如何顯示。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()方法獲取或設置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:設置允許輸入哪些字符,如0~9、.、+、-、*、/、%、\、n、(、)等。android:capitalize:設置英文字母大寫類型。android:editable:設置是否可編輯。android:inputMethod:為文本指定輸入法,如com.google.android.inputmethod.pinyin。android:numeric:設置數字輸入法。android:password:以“·”顯示密碼文本。android:phoneNumber:設置為電話號碼的輸入方式。4.1.3EditText文本控件設計經常需要對EditText的輸入進行監聽,例如軟鍵盤Enter鍵的監聽方法,代碼如下:mEditText.setOnEditorActionListener(newTextView.OnEditorActionListener(){publicbooleanonEditorAction(TextViewv,intactionId,KeyEventevent){if(actionId==EditorInfo.IME_ACTION_DONE){…returntrue;}returnfalse;}});4.1.3EditText還有對EditText輸入的監聽,例如:mEditText.addTextChangedListener(newTextWatcher(){@OverridepublicvoidbeforeTextChanged(CharSequences,intstart,intcount,intafter){//s 文本框中改變前的字符串信息//start 文本框中改變前的字符串的起始位置//count 文本框中改變前的字符串改變數量//after 文本框中改變后的字符串與起始位置的偏移量}@OverridepublicvoidonTextChanged(CharSequences,intstart,intbefore,intcount){}@OverridepublicvoidafterTextChanged(Editables){}});4.1.4AutoCompleteTextView和MultiAutoCompleteTextViewAutoCompleteTextView和MultiAutoCompleteTextView控件主要用于完成文本框的自動輸入功能,常見的布局屬性包括以下幾項:android:completionHint:設置出現在下拉列表中的提示標題。android:completionThreshold:設置用戶至少輸入多少個字符才會顯示提示。android:dropDownHorizontalOffset:下拉列表與文本框之間的水平偏移。默認與文本框左對齊。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="輸入關鍵詞"/>4.1.4AutoCompleteTextView和MultiAutoCompleteTextViewAutoCompleteTextView示例布局如下。<AutoCompleteTextViewandroid:id="@+id/id_autotextView"android:layout_width="match_parent"android:layout_height="wrap_content"android:completionThreshold="3"android:hint="輸入關鍵詞"/>4.1.4AutoCompleteTextView和MultiAutoCompleteTextView實現代碼如下。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文本控件設計4.2按鈕控件設計4.3圖像控件設計章目錄4.4選擇控件和開關控件設計4.5進度條控件設計4.2.1ButtonButton是一個按鈕控件,用來響應用戶的單擊事件。例如,在布局中添加Button控件。<Buttonandroid:id="@+id/id_btn"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button"/>在Activity中設置Button的單擊事件。mButton.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){//點擊按鈕的響應事件處理}});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屬性來設置Drawable資源,例如:<Buttonandroid:id="@+id/btnOne"android:layout_width="match_parent"android:layout_height="64dp"android:background="@drawable/btn_default"android:text="按鈕"/>在Android5.0后,可以基于MaterialDesign支持庫實現更好的按鈕效果。例如,定義Button樣式如下。<stylename="ButtonTheme"parent="@style/Theme.AppCompat.Light.DarkActionBar"><itemname="colorButtonNormal">#FF4081</item><!--正常狀態下的顏色--><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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論