Android基礎程序設計完整版課件全套ppt教程(最新)_第1頁
Android基礎程序設計完整版課件全套ppt教程(最新)_第2頁
Android基礎程序設計完整版課件全套ppt教程(最新)_第3頁
Android基礎程序設計完整版課件全套ppt教程(最新)_第4頁
Android基礎程序設計完整版課件全套ppt教程(最新)_第5頁
已閱讀5頁,還剩247頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一章 Android基礎入門1.1 Android 簡介1.3 創(chuàng)建第一個Android項目1.2 開發(fā)環(huán)境搭建1.4 工具使用日志工具1.5 小結(jié)1.1 Android 簡介1.1.1 Android起源 Android本意指“機器人”,Google公司將Android的標識設計為一個綠色機器人, 表示Android系統(tǒng)符合環(huán)保概念,是一個輕薄短小,功能強大的移動系統(tǒng),是第一個真正為手機打造的開放性系統(tǒng)。Android操作系統(tǒng)最初是由安迪魯賓(Andy Rubin)開發(fā)出的,2005年被Google收購,并于2007年11月5日正式向外界展示了這款系統(tǒng)。1.1 Android 簡介1.1.

2、1 Android起源2008年9月發(fā)布Android第1個版本Android1.1。 2009年4月30日,Android1.5 Cupcake(紙杯蛋糕)正式發(fā)布。2009年9月5日,Android1.6 Donut(甜甜圈)版本發(fā)布。2016年Google I/O大會,Android7.0 Nougat(牛軋?zhí)牵┌姹景l(fā)布。2018年8月,谷歌發(fā)布了Android9.0 Pie(派)版本發(fā)布。1.1 Android 簡介1.1.2 Android系統(tǒng)架構(gòu)鬧鐘通知管理器多媒體框架音頻驅(qū)動1.1 Android 簡介1.1.3 Android應用開發(fā)特點四大組件基于寄存器的虛擬機豐富的系統(tǒng)控件

3、SQLite數(shù)據(jù)庫地理位置定位傳感器 1.2 開發(fā)環(huán)境搭建本節(jié)我們要學習Android開發(fā)環(huán)境的搭建。在很早之前,Android項目都是用Eclipse+ADT插件作為開發(fā)環(huán)境的,而在2013年谷歌推出了一款官方的IDE工具Android Studio,并且谷歌宣布到2015年底不再對Eclipse提供支持服務,Android Studio會全面替代Eclipse,因此本書的開發(fā)環(huán)境選擇Android Studio。1.2 開發(fā)環(huán)境搭建1.2.1 所需工具JDK:本書中的Android項目需要使用JDK8以上的版本才可進行開發(fā)。Android Studio:本書使用最新的Android Stu

4、dio已經(jīng)推出了3.3版本。Android SDK:Android SDK是谷歌提供的Android開發(fā)工具包,被軟件開發(fā)工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應用軟件的開發(fā)工具的集合。因此在開發(fā)Android程序時,我們需要通過引入該工具包來使用Android相關(guān)的API。1.2 開發(fā)環(huán)境搭建1.2.2 Android Studio的安裝Android Studio安裝程序可以從中文社區(qū)進行下載,下載地址是:http:/www.android-S/需要選擇Android Studio的安裝路徑:1.2 開發(fā)環(huán)境搭建1.2.2 Android Studio的安裝后面就全部

5、保持默認選項,一直點擊Next即可完成安裝點擊Finsih按鈕來啟動Android Studio,第一次啟動會讓選擇是否導入之前Android Studio版本的配置,如果是首次安裝就選擇不導入即可1.2 開發(fā)環(huán)境搭建1.2.2 Android Studio的安裝這里選擇Android Studio的安裝類型,有Standard和Custom兩種。Standard表示所有都使用默認配置,較為便捷;Custom則可根據(jù)用戶的特殊需求進行自定義。為了方便,這里我們就選擇Standard類型。1.2 開發(fā)環(huán)境搭建1.2.2 Android Studio的安裝點擊Next進入到界面樣式配置,可以選擇適

6、合自己的界面樣式。進入界面后我們可以看到SDK默認的安裝路徑,現(xiàn)在點擊Finish按鈕,配置工作就全部完成。1.2 開發(fā)環(huán)境搭建1.2.2 Android Studio的安裝Android Studio第一次啟動會嘗試聯(lián)網(wǎng)下載一些更新,等待更新完成后再點擊Finish按鈕就會進入Android Studio的歡迎界面。Android Studio的安裝已經(jīng)全部搭建完成。1.3 創(chuàng)建第一個Android項目1.3.1 創(chuàng)建Hello World項目在Android Studio歡迎界面點擊Start a new Android Studio project,會進入到一個創(chuàng)建新項目的界面。1.3

7、創(chuàng)建第一個Android項目1.3.1 創(chuàng)建Hello World項目點擊Next按鈕進入到Target Android Devices界面。接著點擊Next按鈕會跳轉(zhuǎn)到Add an activity to Mobile界面。1.3 創(chuàng)建第一個Android項目1.3.1 創(chuàng)建Hello World項目在Configure Activity界面中,我們可以給創(chuàng)建的活動和布局命名。設置完成后單擊Finish按鈕,等待片刻,創(chuàng)建好的HelloWorld程序就會顯示在Android Studio中。1.3.2 創(chuàng)建模擬器單擊工具欄中的AVD Manager按鈕 ,進入到Y(jié)our Virtual De

8、vices界面。目前我們的模擬器列表中還是空的,單擊Create Virtual Device按鈕后會進入Select Hardware界面。選擇尺寸合適的模擬器。1.3 創(chuàng)建第一個Android項目1.3 創(chuàng)建第一個Android項目1.3.2 創(chuàng)建模擬器選擇屏幕尺寸為4.95的Nexus5模擬器為例,單擊Next按鈕,進入System Image界面。多種操作系統(tǒng)的版本可以下載,我們選擇最新的Android9.0系統(tǒng),點擊Next 進入Android Virtual Device(AVD)界面。1.3 創(chuàng)建第一個Android項目1.3.2 創(chuàng)建模擬器設置完成之后單擊Finish按鈕完成模

9、擬器創(chuàng)建,會返回到Y(jié)our Virtual Devices界面,同時模擬器列表里也會顯示剛剛創(chuàng)建好的模擬器。點擊Actions欄目中最左邊的三角形按鈕即可啟動模擬器,跟正常手機一樣,有開機啟動界面,啟動完成之后的界面。1.3 創(chuàng)建第一個Android項目1.3.3 運行HelloWorld模擬器開啟成功之后,接下來我們將HelloWorld項目部署到模擬器上運行。單擊Android Studio工具欄中的運行按鈕,會進入到Select Deployment Target界面。單擊OK按鈕,我們可以看到運行結(jié)果。1.3 創(chuàng)建第一個Android項目1.3.3 運行HelloWorld1.3 創(chuàng)建

10、第一個Android項目1.3.4 分析Android程序結(jié)構(gòu)Android程序由多個文件以及文件夾組成,每個文件都用于不同的功能。用于存放AndroidManifest.xml文件,也稱作清單文件用于存放所有的Java代碼,在該文件夾中可以創(chuàng)建多個包用于存放項目中使用到的所有圖片、布局、字符串等資源用于存放項目構(gòu)建的相關(guān)文件,無須修改1.4 工具使用日志工具Android中的應用運行在一個單獨的設備中,應用的調(diào)試信息會輸出到設備單獨的日志緩沖區(qū)中,想要從設備日志緩沖區(qū)中取出信息,就要學會Android中日志工具的使用方法。Android中采用android.util.Log類的靜態(tài)方法實現(xiàn)輸

11、出程序信息,通過Log類輸出的日志信息分為6個級別。由低到高分別是Verbose、Debug、Info、Warning、Error、Assert,前5個級別分別對應Log類中的Log.v( )、Log.d( )、Log.i( )、Log.w( )、Log.e( )、Log.wtf( )靜態(tài)方法。1.4 工具使用日志工具LogCat過濾器共有6個條目,每個條目都有特定的功能。- Filter Name:過濾器的名稱,根據(jù)需求自定義即可。- Log Tag:根據(jù)定義的Tag過濾信息,通常使用類名。- Log Message:根據(jù)輸出的內(nèi)容過濾信息。- Package Name:根據(jù)包名過濾信息。-

12、 PID:根據(jù)進程ID過濾信息。- Log Level:根據(jù)日志的級別過濾信息。1.5 小結(jié)本章主要介紹了Android的基礎知識,首先對Android系統(tǒng)有了更加充足的認實,然后成功將Android開發(fā)環(huán)境搭建起來,最后創(chuàng)建了第一個Android項目,并對Android項目的目錄結(jié)構(gòu)和執(zhí)行過程進行了學習,還介紹了如何使用Android日志工具,為后面的學習打好基礎。THANKS!第二章 探究活動2.1 什么是活動2.5 使用Intent在活動中穿梭2.3 活動的啟動模式2.7 小結(jié)2.6 使用Intent傳遞數(shù)據(jù)2.2 活動的生命周期2.4 活動的基本用法2.1 什么是活動活動(Activi

13、ty)就是我們要學習的第一個組件。活動(Activity)為用戶提供可視化界面及操作,負責管理Android程序的用戶界面。一個應用程序通常包含多個活動(Activity),每個活動(Activity)負責管理一個用戶界面,在每個界面里可以添加多個控件來實現(xiàn)不同的功能。2.2 活動的生命周期在Android程序中,大部分組件都有自己的生命周期。掌握活動(Activity)的生命周期在Android學習中非常重要,活動(Activity)的生命周期包含了4種狀態(tài),活動(Activity)類中定義了7個回調(diào)方法,覆蓋了生命周期的每一個狀態(tài)。2.2 活動的生命周期2.2.1 生命周期的狀態(tài)活動(Ac

14、tivity)生命周期指的是從創(chuàng)建到銷毀的全過程。每個活動(Activity)在其生命周期最多可能會有4種狀態(tài)Activity處于屏幕最前端,可與用戶進行交互。Activity仍然可見,但無法獲取焦點,用戶對它操作沒有響應。Activity完全不可見,系統(tǒng)內(nèi)存不足時會銷毀該Activity。Activity將被清理出內(nèi)存。運行狀態(tài)暫停狀態(tài)停止狀態(tài)銷毀狀態(tài)2.2 活動的生命周期2.2.2 生命周期方法在Activity創(chuàng)建時調(diào)用在Activity即將可見時調(diào)用Activity獲取焦點開始與用戶交互當前Activity被其他Activity覆蓋時調(diào)用Activity對用戶不可見時調(diào)用Activit

15、y銷毀時調(diào)用Activity從停止狀態(tài)再次啟動時調(diào)用2.3 活動的啟動模式2.3.1 活動中的任務棧棧是一種“先進后出”的數(shù)據(jù)結(jié)構(gòu)。Android中,采用任務棧的形式來管理Activity。啟動Activity 2啟動Activity 3Activity 3Activity 3任務棧Activity 1Activity 2停止Activity 32.3 活動的啟動模式2.3.2 活動的四種啟動模式standard模式是Activity的默認啟動方式,每啟動一個Activity就會在棧頂創(chuàng)建一個新的實例。啟動Activity 3任務棧任務棧Activity 1啟動Activity 2Activi

16、ty 2Activity 32.3 活動的啟動模式2.3.2 活動的四種啟動模式singleTop模式會判斷要啟動的Activity實例是否位于棧頂,如果位于棧頂則直接復用,否則創(chuàng)建新的實例。啟動Activity 2Activity 2不在棧頂,需要創(chuàng)建新的Activity啟動Activity 3Activity 3位于棧頂,直接復用,不需要創(chuàng)建新的Activity任務棧Activity 1Activity 2Activity 3Activity 22.3 活動的啟動模式2.3.2 活動的四種啟動模式singleTask模式下每次啟動該Activity時,系統(tǒng)首先會檢查棧中是否存在當前Acti

17、vity實例,如果存在則直接使用,并把當前Activity之上的所有實例全部出棧。Activity 3Activity 3Activity 4Activity 4啟動Activity 2任務棧中有Activity 2,則直接使用,并將Activity 2之上的所有Activity移除任務棧Activity 1Activity 2移除Activity 3和Activity 42.3 活動的啟動模式2.3.2 活動的四種啟動模式singleInstance模式會啟動一個新的任務棧來管理Activity實例,無論從哪個任務棧中啟動該Activity,該實例在整個系統(tǒng)中只有一個。任務棧AActivit

18、y 1Activity 2啟動Activity 3任務棧B創(chuàng)建新任務棧B用于管理Activity3Activity 32.4 活動的基本用法2.4.1 活動的創(chuàng)建在程序的包名出單擊右鍵,選擇NEWActivityEmpty Activity選項,填寫Activity信息,完成創(chuàng)建。2.4 活動的基本用法2.4.2在AndroidManifest文件中注冊打開AndroidManifest.xml文件進行查看新的Activity注冊2.5 使用Intent在活動中穿梭2.5.1 Intent介紹Intent也被稱作意圖,是程序中各組件進行交互的一種常用方式,Intent不僅可以指定當前組件要執(zhí)行

19、的動作,還可以在不同組件之間進行數(shù)據(jù)傳遞。一般用于啟動活動、服務和發(fā)送廣播等。根據(jù)開啟目標組件的方式不同,Intent大致被分為兩種:顯式Intent和隱式Intent。2.5 使用Intent在活動中穿梭2.5.1 Intent介紹顯式意圖隱式意圖顯式意圖可以直接通過名稱開啟指定的目標組件隱式意圖通過指定action和category等屬性,系統(tǒng)根據(jù)這些信息進行分析后尋找目標Activity2.5 使用Intent在活動中穿梭顯示意圖創(chuàng)建一個Intent對象,其中第1個參數(shù)為Context表示當前的Activity對象,第2個參數(shù)表示要啟動的目標Activity。調(diào)用Activity的sta

20、rtActivity方法啟動目標組件2.5 使用Intent在活動中穿梭隱式意圖設置action動作,當與清單文件中的action相匹配時啟動目標組件。設置action動作,當與代碼中的action與該action相匹配時啟動該組件。2.5 使用Intent在活動中穿梭2.5.2 隱式意圖的應用23功能描述:技術(shù)要點:AndroidStudio中選擇【File】【New】【New Project】選項創(chuàng)建項目點擊工具欄中【AVD Manager】按鈕啟動模擬器點擊工具欄中的運行按鈕運行程序案例代碼(詳見教材P29P30)實現(xiàn)步驟: 打開Android Studio首頁。使用AndroidStu

21、dio創(chuàng)建程序,使用模擬器運行程序并通過隱式意圖打開首頁。12.6 使用Intent傳遞數(shù)據(jù)2.6.1 數(shù)據(jù)傳遞Activity之間傳遞數(shù)據(jù)需要用到Intent提供的putExtra()方法。在MainActivity中放入數(shù)據(jù)傳遞給Main2Activity。在Main2Activity中獲取MainActivity中傳遞的數(shù)據(jù)。2.6 使用Intent傳遞數(shù)據(jù)2.6.2 數(shù)據(jù)回傳Activity中提供了一個startActivityForResult( Intent intent,int requestCode)方法也是用來啟動活動的,并且這個方法可以在當前活動被銷毀時返回一個結(jié)果給上一個

22、活動。在MainActivity中開啟Main2Activity在Main2Activity中添加返回數(shù)據(jù)2.6 使用Intent傳遞數(shù)據(jù)2.6.2 數(shù)據(jù)回傳在Main2Activity被銷毀之后會回調(diào)MainActivity的onActivityResult( )方法,因此需要在MainActivity中重寫onActivityResult( )方法來得到返回的數(shù)據(jù)。重寫onActivityResult()方法獲得返回數(shù)據(jù)2.6 使用Intent傳遞數(shù)據(jù)2.6.3 綜合案例23功能描述:技術(shù)要點:新建名片界面的設計與實現(xiàn)數(shù)據(jù)展示界面的設計與實現(xiàn)名片界面邏輯代碼的設計與實現(xiàn)數(shù)據(jù)展示界面邏輯代碼

23、的設計與實現(xiàn)案例代碼(詳見教材P32P41)實現(xiàn)步驟: 新建聯(lián)系人實現(xiàn)數(shù)據(jù)回傳。使用Intent傳遞數(shù)據(jù),獲取Intent中的數(shù)據(jù)。12.7 小結(jié)本章主要介紹了關(guān)于活動所有重要的知識點,包括活動的基本用法、啟動活動、傳遞數(shù)據(jù)的方法、活動的生命周期以及活動的啟動模式;活動作為Android的四大組件之一,在應用程序中凡是有界面的都會使用到活動,因此必須熟練掌握該組件的使用。THANKS!第三章 Android UI 基礎知識3.1 編寫程序界面3.5 ListView控件詳解3.3 四種基本布局3.6 強大的滾動控件RecylerView控件3.2 常用控件3.4 約束布局3.7 小結(jié)3.1 編

24、寫程序界面Android中有多種編寫程序界面的方式可供選擇,比如Android Stuido和Eclipse中都提供了相對應的可視化編輯器,允許使用拖拽控件的方式來編寫布局,并可以在視圖上直接修改控件的屬性。通常Android開發(fā)者不使用上述方式去編寫界面,因為可視化編輯工具并不能幫助開發(fā)者去真正了解界面底層的實現(xiàn)原理;而且通過這種方式制作出的界面通常不具有良好的屏幕適配性,當需要編寫較為復雜的界面時,可視化編輯工具就很難勝任。因此建議所有的界面都通過最基本的方式去實現(xiàn),也就是編寫XML代碼,熟悉并掌握了XML代碼編寫界面之后,不僅可以實現(xiàn)復雜的界面,還可以分析和修改當前現(xiàn)有界面。3.2 常用

25、控件控件作為界面組成的主要元素。Android系統(tǒng)提供了大量的UI控件,這些界面可以與用戶直接進行交互,例如TextView(文本框)、EditText(編輯框)、Button(按鈕)等,合理地使用這些控件就可以非常輕松地編寫出美觀的界面。本節(jié)將學習Android中常用控件的使用方法。 3.2 常用控件3.2.1 TextView控件TextView作為Android中最簡單最常用的一個控件,用來在界面顯示文本信息,TextView控件屬性較多,開發(fā)者可以通過設置屬性值來修改文本的字體大小、顏色、樣式等。設置控件寬度設置控件高度設置文字大小設置文本信息設置控件居中設置文本顏色3.2 常用控件3

26、.2.2 EditText控件EditText控件是程序用于和用戶進行交互的一個重要控件,用戶經(jīng)常會向程序中輸入數(shù)據(jù),此時就需使用文本編輯控件EditText,它允許用戶在控件里輸入和編輯內(nèi)容,并且可以在程序中對這些內(nèi)容進行處理。設置最大行數(shù)設置提示信息設置文本顏色、大小、樣式 繼承自TextView的屬性3.2 常用控件3.2.3 Button控件Button是程序和用戶進行交互時必不可少的控件,它的作用是用于響應用戶的一系列點擊事件。設置按鈕名稱設置唯一標識設置點擊事件3.2 常用控件點擊事件實現(xiàn)方式獨立類方式- 指定Button的onClick屬性方式-在Activity中實現(xiàn)這個cli

27、ck方法android:onClick=click public void click(View view) btn1.setText(按鈕1已經(jīng)被點擊!); 3.2 常用控件點擊事件實現(xiàn)方式匿名內(nèi)部類方式- 在Activity中添加匿名內(nèi)部類btn2.setOnClickListener(new View.OnClickListener() Override public void onClick(View v) btn2.setText(按鈕2已經(jīng)被點擊!); );3.2 常用控件點擊事件實現(xiàn)方式接口方式- 在當前Activity中實現(xiàn)OnClickListener接口-實現(xiàn)接口方法-綁定

28、到Button按鈕上public class MainActivity extends AppCompatActivity implements View.OnClickListener Override public void onClick(View v) btn1.setOnClickListener(this); 3.2 常用控件3.2.4 ImageView控件ImageView控件用于在界面上展示圖片,可以讓程序界面變得更加豐富多彩。設置背景圖片3.2 常用控件3.2.5 RadioButton控件RadioButton是單選按鈕,必須與RadioGroup配合使用,提供兩個或者多

29、個互斥的選項及。而RadioGroup是單選組合框,可以容納多個RadioButton,實現(xiàn)單選狀態(tài)。 3.2 常用控件3.2.5 RadioButton控件設置RadioButton按鈕的排列方向3.2 常用控件3.2.5 RadioButton控件為RadioGruop設置監(jiān)聽事件的方法是setOnCheckedChangeListener( ),要與Button中的setOnClickListener( )區(qū)分開。 rdg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() Override public

30、 void onCheckedChanged(RadioGroup group, int checkedId) if (checkedId=R.id.rdb) tv_content.setText(您選擇的性別是:男性); else tv_content.setText(您選擇的性別是:女性); );3.2 常用控件3.2.6 Toast控件Toast也稱為消息對話框,它是Android系統(tǒng)提供的一種非常友好的輕量級信息提醒機制,在程序中可以使用它將一些短小的信息通知給用戶,Toast對話框顯示在應用程序界面的最上層,顯示一段時間后自動消失,不會打斷當前操作。由于Toast只起到提示作用,因此

31、多用于觸發(fā)事件的監(jiān)聽中。創(chuàng)建消息對話框上下文對象提示信息顯示時間長短顯示消息3.2 常用控件3.2.7 AlertDialog控件AlertDialog可以在當前的界面彈出一個對話框,并且這個對話框是位于應用程序界面的最上層,具有確定和取消按鈕創(chuàng)建實例并綁定當前窗口設置圖標設置對話框標題及提示信息設置確定按鈕設置取消按鈕創(chuàng)建對話框顯示對話框3.2 常用控件3.2.8 ProgressDialog控件ProgressDialog會在對話框中顯示一個進度條,在應用程序?qū)崿F(xiàn)耗時操作時(如下載資源、獲取網(wǎng)絡圖片,加載視頻等)可以讓用戶耐心地等待。創(chuàng)建實例并綁定當前窗口顯示進度條對話框3.2 常用控件3

32、.2.9 ProgressBar控件ProgressBar是在Android UI界面中顯示一個進度條,是一個非常實用的組件,通常用于向用戶顯示某個耗時操作完成的百分比。設置水平進度條設置進度條最大值為503.3 四種常用布局3.3.1 線性布局線性布局(LinearLayout)在實際開發(fā)中使用最多,也相對簡單,它會將控件在線性方向上依次排列,排列方式主要有水平和垂直兩種方式。3.3 四種常用布局通過android:orientation屬性控制控件的排列方向,android:orientation屬性有兩個值,分別是vertical和horizontal,其中vertical表示線性布局垂

33、直顯示,horizontal表示線性布局水平顯示,而且horizontal是線性布局默認的排列方向。如果控件是水平排列,那么控件的android:layout_width屬性就只能設置為wrap_content如果控件是垂直排列,那么控件的android:layout_height屬性就不能設置為match_parent當控件水平排列時,如果控件未占滿一行,會留有空白區(qū)域,這樣既不美觀又浪費空間。此時,可以利用layout_weight屬性解決這個問題,該屬性被稱為權(quán)重,通過比例調(diào)整布局中所有控件的大小。3.3 四種常用布局3.3.2 相對布局相對布局(RelativeLayout)在程序開發(fā)

34、中也很常見,相較于線性布局按照線性方向排列控件,相對布局就顯得隨意一些,通過相對定位的方式指定控件位置,控件可以出現(xiàn)在布局中的任何地方,但是必須以其他控件或者父容器為參照物。3.3 四種常用布局3.3.2 相對布局屬性作用paddingTop指定布局頂部內(nèi)邊距的距離paddingBottom指定布局底部內(nèi)邊距的距離paddingLeft指定布局左側(cè)內(nèi)邊距的距離paddingRight指定布局右側(cè)內(nèi)邊距的距離padding指定布局四周內(nèi)邊距的距離layout_marginTop指定當前控件上邊界與某控件的距離layout_marginBottom指定當前控件下邊界與某控件的距離layout_ma

35、rginLeft指定當前控件左邊界與某控件的距離layout_marginRight指定當前控件右邊界與某控件的距離layout_centerInParent指定當前控件位于父布局的中心位置layout_centerVertical指定當前控件位于父布局的垂直居中位置layout_centerHorizontal指定當前控件位于父布局的水平居中位置layout_above指定當前控件位于某控件的上方layout_below指定當前控件位于某控件的下方layout_toLeftOf指定當前控件位于某控件的左側(cè)layout_toRightOf指定當前控件位于某控件的右側(cè)layout_alignTo

36、p指定當前控件的上邊界與某控件的上邊界對齊layout_alignBottom指定當前控件的下邊界與某控件的下邊界對齊layout_alignLeft指定當前控件的左邊界與某控件的左邊界對齊layout_alignRight指定當前控件的右邊界與某控件的右邊界對齊3.3 四種常用布局3.3.3 幀布局幀布局(FrameLayout)就非常簡單了。它有時也被稱為層布局,該布局為每個添加的控件創(chuàng)建一個空白區(qū)域(稱為一幀),從屏幕左上角按照層次堆疊方式擺放控件,后面的控件覆蓋前面的控件,先放入的控件顯示在最底層。幀布局中有兩個特殊屬性,一個是android:foregroud,用于設置幀布局容器的前

37、景圖像,這個圖像始終在所有子控件之上;另外一個是android:foregroundGravity,用于設置前景圖像顯示位置。3.3 四種常用布局3.3.4 表格布局表格布局(TableLayout)通過行和列將界面分為多個單元格,以行列的形式管理子控件,并且需要配合TableRow使用。每一行為一個TableRow的對象,因此TableRow的數(shù)量決定了表格的行數(shù)。TableRow中可以添加子控件,每添加一個為一列,因此表格的列數(shù)是由包含最多控件的TableRow決定的。3.3 四種常用布局3.3.4 表格布局 3.4 約束布局 約束布局(ConstraintLayout)是Android

38、Studio 2.2中主要的新增功能之一,它和傳統(tǒng)編寫界面的方式恰恰相反,ConstraintLayout非常適合使用可視化的方式來編寫界面,它的用法很多都是對控件進行拖拽,但并不太適合使用XML的方式來進行編寫。從Android Studio 2.3版本開始新建的Module中默認的布局就是ConstraintLayout,本書使用的是更高版本的Android Studio3.2,所以在初次創(chuàng)建Moudle時需要將布局文件中的ConstraintLayout修改成自己所需要的布局即可。3.5 ListView控件詳解雖然現(xiàn)在手機屏幕變得越來越大,但是畢竟屏幕空間還是有限的,能夠一次性在屏幕上

39、顯示的內(nèi)容并不多。日常使用微信、微博、淘寶等程序時,這些程序通常會在一個頁面顯示很多個條目,并且每個條目的布局風格都一樣,這是通過Android中最常用的空間之一ListView實現(xiàn)的。3.5 ListView控件詳解3.5.1 ListView基礎用法在布局中添加ListView控件 3.5 ListView控件詳解在Activity中使用自定義數(shù)據(jù)適配器類對ListView進行數(shù)據(jù)適配 private class MyBaseAdapter extends BaseAdapter Override public int getCount() return data.length; Over

40、ride public Object getItem(int position) return dataposition; Override public long getItemId(int position) return position; Override public View getView(int position, View convertView, ViewGroup parent) TextView tv = tv = new TextView(MainActivity.this); tv.setText(dataposition); tv.setTextSize(40);

41、 return tv; 3.5 ListView控件詳解在Activity的onCreate()方法中進行數(shù)據(jù)適配Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listView =findViewById(R.id.list_view); MyBaseAdapter adapter = new MyBaseAdapter(); listView.setA

42、dapter(adapter); 3.5 ListView控件詳解3.5.2 ListView的定制界面ListView界面內(nèi)容要豐富的多,可以對Item條目進行定制。創(chuàng)建ListView對應的Item布局,顯示每個Item信息,Item中左側(cè)放置一個ImageView用于顯示圖標,右側(cè)放置一個TextView用于顯示文本信息3.5 ListView控件詳解3.5.3 ListView的優(yōu)化有多少個條目就會執(zhí)行多少次MyBaseAdapter類中的getView( )方法。這樣的話如果展示的數(shù)據(jù)有成千上萬條,getView( )方法也會被執(zhí)行成千上萬次,相應的也會創(chuàng)建成千上萬個條目對象,這樣不

43、僅會增加內(nèi)存的消耗,而且當ListView快速滾動時,很容易造成內(nèi)存溢出而導致程序崩潰。為了防止數(shù)據(jù)量過大造成內(nèi)存溢出,在使用ListView時通常會進行優(yōu)化,其中一種是復用convertView。3.5 ListView控件詳解Item 5Item 4Item 3ListView控件Item 2向上滑動Item 5Item 4Item 3ListView控件Item 2滑出屏幕的Item 1滑出屏幕的Item 1復用Item 1加載新內(nèi)容Item 3Item 4Item 5復用的Item 1滑出屏幕的Item 23.5 ListView控件詳解3.5.3 ListView的優(yōu)化在加載Item

44、布局時,會使用findViewById()方法找到Item布局中的各個控件,在每一次加載新的Item數(shù)據(jù)時都會進行控件尋找,這樣也會產(chǎn)生耗時操作。為了進一步的優(yōu)化ListView減少耗時操作,可以將要加載的子View放在ViewHolder類中,當?shù)谝淮蝿?chuàng)建convertView時將這些控件找出,在第二次重用convertView時就可直接通過convertView中的getTag()方法獲得這些控件。3.5 ListView控件詳解3.5.4 ListView的點擊事件ListView也是有點擊事件的listView.setOnItemClickListener(new AdapterVie

45、w.OnItemClickListener() Override public void onItemClick(AdapterView parent, View view, int position, long id) Toast.makeText(MainActivity.this,您點擊了:+dataposition,Toast.LENGTH_SHORT).show(); );3.6強大的滾動控件RecylerView 從Android 5.0開始,谷歌公司推出了一個增強版的ListView新控件RecylerView,它不僅擁有與ListView相同的效果,而且對ListView中的不

46、足之處進行了優(yōu)化。3.6.1 如何添加RecylerView控件打開app/bulid.gradle文件,在dependencies閉包中添加dependencies implementation fileTree(dir: libs, include: *.jar) implementation com.android.support:appcompat-v7:28.0.0 implementation com.android.support:recyclerview-v7:28.0.0 implementation com.android.support.constraint:constr

47、aint-layout:1.1.3 testImplementation junit:junit:4.12 androidTestImplementation com.android.support.test:runner:1.0.2 androidTestImplementation com.android.support.test.espresso:espresso-core:強大的滾動控件RecylerView在activity_main.xml中添加recyclerview控件 3.6強大的滾動控件RecylerView3.6.2 RecyclerView的基礎用法在A

48、ctivity中進行編寫/用于指定recyclerView的布局方式,可以實現(xiàn)和ListView類似的效果 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(linearLayoutManager); MyBaseAdapter adapter = new MyBaseAdapter();/設置數(shù)據(jù)適配器 recyclerView.setAdapter(adapter);3.6強大的滾動控件R

49、ecylerView3.6.3 RecyclerView的點擊事件RecyclerView的Item布局中有兩個控件,當用戶分別點擊兩個控件時會產(chǎn)生不同的事件 holder.textView.setOnClickListener(new View.OnClickListener() Override public void onClick(View v) int position=holder.getAdapterPosition(); Toast.makeText(getApplicationContext(),您點擊了文字+dataposition,Toast.LENGTH_SHORT).

50、show(); ); holder.imageView.setOnClickListener(new View.OnClickListener() Override public void onClick(View v) int position=holder.getAdapterPosition(); Toast.makeText(getApplicationContext(),您選擇了圖+dataposition,Toast.LENGTH_SHORT).show(); );3.7 小結(jié)本章主要介紹了Android UI基礎,包括基本布局的用法、幾種常用的對話框、ListView以及Recy

51、lerView的使用,并通過相關(guān)案例將這些知識融合在一起。THANKS!第四章 碎片4.1 碎片是什么4.5 實戰(zhàn)演練新聞應用4.3 碎片的生命周期4.6 小結(jié)4.2 碎片的使用方式4.4 動態(tài)加載布局4.1 碎片是什么Fragment(碎片)是一種可以嵌入在活動當中的UI片段,它能夠讓程序更加合理和充分的利用大屏幕空間,在平板上應用的更加廣泛。與活動非常相似,同樣能夠包含布局,且同樣具有自己的生命周期。可以將碎片理解成為一個迷你型的活動,雖然這個迷你型的活動可能和普通活動一樣大。在平板上更好的設計方式是將新聞標題及內(nèi)容界面分開放在兩個碎片中,充分利用屏幕空間。4.1 碎片是什么新聞1新聞2新

52、聞3新聞4新聞5新聞6內(nèi)容標題碎片1碎片24.2 碎片的使用方式4.2.1 碎片的簡單用法創(chuàng)建在程序包名處單擊鼠標右鍵,選擇【New】【Fragment】【Fragment(Blank)】進入Configure Component界面,在該界面指定Fragment名稱,并選擇是否生成Fragment對應布局文件即可4.2 碎片的使用方式Fragment創(chuàng)建完畢后通常會默認創(chuàng)建一個構(gòu)造方法并重寫onCreateView()方法public class BlankFragment extends Fragment public BlankFragment() / Required empty pu

53、blic constructor Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) / Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_blank, container, false); 4.2 碎片的使用方式通過最簡單的碎片示例來了解碎片的內(nèi)容,在一個活動中添加兩個碎片,并讓兩個碎片平分活動空間。4.2 碎片的使用方式4.

54、2.2 碎片的動態(tài)加載碎片真正的強大之處在于,你可以在程序運行時根據(jù)具體情況動態(tài)的將碎片添加到活動中,將程序界面定制得更加多樣化。通過編輯MainActivity實現(xiàn)動態(tài)的向FrameLayout中添加內(nèi)容最終實現(xiàn)動態(tài)添加碎片的功能。4.2 碎片的使用方式動態(tài)加載過程首先為左側(cè)碎片中的按鈕注冊點擊事件;接下來調(diào)用replaceFragment()方法動態(tài)添加RightFragment碎片;從replaceFragment()方法中可以總結(jié)出,動態(tài)添加碎片的5個步驟:(1)創(chuàng)建待添加碎片的實例。(2)通過調(diào)用getSupportFragmentManager()方法獲取FragmentManag

55、er。(3)通過調(diào)用beginTransaction()開啟事務。(4)使用replace()方法實現(xiàn)向容器中添加或替換碎片,需要傳入容器的id和待添加碎片的實例。(5)通過使用commit()方法提交事務。4.2 碎片的使用方式4.2 碎片的使用方式4.2.3 在碎片中返回FragmentTransaction中提供了一個addToBackStack()方法,用于將一個事務添加到返回棧中。public class MainActivity extends AppCompatActivity implements View.OnClickListener . private void repl

56、aceFragment(Fragment fragment) FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.replace(R.id.right_layout,fragment); transaction.addToBackStack(null); mit(); 4.2 碎片的使用方式4.2.4 碎片與活動之間的通信為了方便碎片與活動之間的通信,F(xiàn)rag

57、mentManager提供了一個類似于findViewById()的方法findFragmentById()專門用于從布局文件中獲取碎片實例,之后就可以輕松調(diào)用碎片中的方法了。RightFragment rightFragment = (RightFragment)getSupportFragmentManager().findFragmentById(R.id.right_layout);4.3 碎片的生命周期Fragment CallbacksonAttach()onCreate()onCreateView()OnAvtivityCreated()onStart()onResume()on

58、Pause()onStop()onDestroyView()onDestroy()onDetach()Activity StateCreatedStartedResumedPausedStoptedDestroyed碎片的生命周期與活動的生命周期非常相似,但是碎片比活動多5種回調(diào)方法以覆蓋碎片生命周期的每個環(huán)節(jié),具體說明如下:onAttach()。碎片與活動建立關(guān)聯(lián)時調(diào)用。onCreateView()。為碎片創(chuàng)建視圖(加載布局)時調(diào)用。onActivityCreated()。當與碎片相關(guān)聯(lián)的活動的onCreate()方法返回,即活動已經(jīng)創(chuàng)建完畢時調(diào)用。onDestroyView()。當該碎片的

59、試圖被移除時調(diào)用。onDetach()。當碎片與活動解除關(guān)聯(lián)時調(diào)用。4.4 動態(tài)加載布局4.4.1 限定符的使用如何讓程序在運行時判斷使用雙頁模式還是單頁模式呢?此時需要借助限定符(Qualifiers)來實現(xiàn)。刪掉多余代碼,僅留左側(cè)布局并讓它充滿整個父布局。接下來,在res目錄上點擊右鍵選擇【New】【Android Resource Directory】新建layout-large文件夾4.4 動態(tài)加載布局在這個文件夾下新建布局也叫做activity_main.xml在layout/activity_main布局中只包含了一個碎片也就是單頁模式,在layout-large/activity

60、_main布局中包含了兩個碎片,即雙頁模式修改MainActivity中的代碼,注釋掉replaceFragment()方法中的代碼,重新運行程序4.4 動態(tài)加載布局Android中一些常見的限定符可以參考下表。屏幕特征限定符描述大小small提供給小屏幕設備的資源normal提供給中等屏 幕設備的資源large提供給大屏幕設備的資源xlarge提供給超大屏幕設備的資源分辨率ldpi提供給低分辨率設備的資源mdpi提供給中等分辨率設備的資源hdpi提供給高分辨率設備的資源xhdpi提供給超高分辨率設備的資源xxhdpi提供給超超高分辨率設備的資源方向land提供給橫屏設備的資源port提供給豎

溫馨提示

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

最新文檔

評論

0/150

提交評論