Android應(yīng)用開發(fā)基礎(chǔ)教程(微課版) 課件 第1、2章 Android基礎(chǔ)、常用布局_第1頁(yè)
Android應(yīng)用開發(fā)基礎(chǔ)教程(微課版) 課件 第1、2章 Android基礎(chǔ)、常用布局_第2頁(yè)
Android應(yīng)用開發(fā)基礎(chǔ)教程(微課版) 課件 第1、2章 Android基礎(chǔ)、常用布局_第3頁(yè)
Android應(yīng)用開發(fā)基礎(chǔ)教程(微課版) 課件 第1、2章 Android基礎(chǔ)、常用布局_第4頁(yè)
Android應(yīng)用開發(fā)基礎(chǔ)教程(微課版) 課件 第1、2章 Android基礎(chǔ)、常用布局_第5頁(yè)
已閱讀5頁(yè),還剩82頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Andriod應(yīng)用開發(fā)基礎(chǔ)教程李卓平時(shí)成績(jī):40%(出勤、作業(yè)、課堂表現(xiàn)等)期末實(shí)踐考核:30%(綜合性項(xiàng)目)期末試卷考核:30%(紙質(zhì)試卷)成績(jī)構(gòu)成課程內(nèi)容1Android基礎(chǔ)2常用布局3常用控件與消息處理4Activity5數(shù)據(jù)存儲(chǔ)6ContentProvider7廣播8Service9網(wǎng)絡(luò)編程10高級(jí)應(yīng)用第1章Android基礎(chǔ)1.1Android的起源和發(fā)展1.2Android的系統(tǒng)構(gòu)架1.3Android平臺(tái)優(yōu)勢(shì)和劣勢(shì)1.4Android開發(fā)環(huán)境搭建

Android(安卓)是一種基于Linux的開源操作系統(tǒng),由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā),主要用于移動(dòng)終端設(shè)備,如智能手機(jī)、平板電腦等。

什么是Android?(1)Android

(2)iOS

(3)WindowsPhone(4)BlackBerryOS(黑莓)

(5)Symbian(塞班)

(6)

HarmonyOS(鴻蒙)

移動(dòng)互聯(lián)的快速發(fā)展離不開智能手機(jī)操作系統(tǒng),常用的智能手機(jī)操作系統(tǒng)包括以下幾種:1.1Android的起源和發(fā)展1.1.1Android的起源1.1.2Android的發(fā)展1.1.1Android的起源

1886年法國(guó)作家AugusteVilliersdel'Isle-Adam(耶·德·利爾-阿達(dá)姆·利爾亞當(dāng))在科幻小說《L'èvefuture(未來夏娃)》中,他把外表像人的機(jī)器人取名為Android,這個(gè)詞本意是“機(jī)器人”,這是Android一詞最早出現(xiàn)在公眾視野。2003年,AndyRubin創(chuàng)立了Android公司。AndroidLOGO的設(shè)計(jì)者繪制了一個(gè)簡(jiǎn)單的機(jī)器人,它的軀干就像錫罐的形狀,頭上還有兩根天線。Android圖標(biāo)1.1.1.2Android的發(fā)展史

2003年10月,Android系統(tǒng)由AndyRubin等人創(chuàng)立2005年8月,Google收購(gòu)了Android及其團(tuán)隊(duì),AndyRubin成為Google公司工程部副總裁,繼續(xù)負(fù)責(zé)Android項(xiàng)目2007年11月,Google公司正式對(duì)外展示了Android操作系統(tǒng),并宣布與多家制造商共同研發(fā)改良Android系統(tǒng)2008年9月,Google公司正式發(fā)布了Android1.0系統(tǒng),代號(hào)Astro(鐵臂阿童木),這是Android系統(tǒng)最早的版本2008年10月,首款搭載安卓系統(tǒng)的設(shè)備HTCG1(也稱為T-MobileG1)上市。HTCG1是一款具有全鍵盤設(shè)計(jì)的智能手機(jī),標(biāo)志著安卓系統(tǒng)正式進(jìn)入公眾視野Android最早的兩個(gè)內(nèi)部測(cè)試版本是以機(jī)器人名稱來命名:AstroBoy(鐵臂阿童木)和Bender(發(fā)條機(jī)器人),后因版權(quán)問題,從2009年Android1.5開始,谷歌將甜點(diǎn)作為Android系統(tǒng)版本代號(hào),2019年Google官方宣布結(jié)束以甜點(diǎn)命名Android系統(tǒng)的方式,版本的內(nèi)部代號(hào)仍以甜點(diǎn)命名。1.2Android的系統(tǒng)構(gòu)架1.2Android的系統(tǒng)構(gòu)架

1、應(yīng)用層(Applications):應(yīng)用層是Android系統(tǒng)的頂層,包括了各種預(yù)裝和第三方應(yīng)用程序,如電子郵件、瀏覽器、照相機(jī)、聯(lián)系人等等。2、應(yīng)用框架層(ApplicationFramework):開發(fā)人員可以訪問核心應(yīng)用程序所使用的API框架,是我們從事Android開發(fā)的基礎(chǔ),很多核心應(yīng)用程序也是通過這一層來實(shí)現(xiàn)其核心功能的,開發(fā)人員可以直接使用其提供的組件來進(jìn)行快速的應(yīng)用程序開發(fā),如Activity、Service、ContentProvider、BroadcastReceiver等。3、系統(tǒng)運(yùn)行庫(kù)層(Libraries):Android包含一些C/C++庫(kù),這些庫(kù)能被Android系統(tǒng)中不同的組件使用,它們通過Android應(yīng)用程序框架為開發(fā)者提供服務(wù)。其中,核心庫(kù)包括系統(tǒng)C庫(kù)(專門為基于EmbeddedLinux的設(shè)備定制)、媒體庫(kù)(支持多種常用的音頻、視頻格式回放和錄制,同時(shí)支持靜態(tài)圖像文件)、SurfaceManager(管理顯示子系統(tǒng))、LibWebCore(web瀏覽器引擎)。4、Linux內(nèi)核層(LinuxKernel):Android平臺(tái)的基礎(chǔ)是Linux內(nèi)核,Android的Linuxkernel控制包括安全性,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型等。Linux內(nèi)核也同時(shí)作為硬件和軟件棧之間的抽象層。1.3

Android平臺(tái)優(yōu)勢(shì)和劣勢(shì)

Android平臺(tái)優(yōu)勢(shì)包括以下幾點(diǎn):1、Android系統(tǒng)可搭載多種設(shè)備,如智能手表等可穿戴式設(shè)備、手機(jī)、平板電腦、電視、車輛儀表板、智能家居等,設(shè)備和屏幕兼容性較好。2、在安全性方面,用戶在進(jìn)行下載應(yīng)用、瀏覽網(wǎng)頁(yè)和分享數(shù)據(jù)、接收來電等操作時(shí),Android都會(huì)實(shí)時(shí)保護(hù),當(dāng)遇到惡意應(yīng)用或有害鏈接時(shí),系統(tǒng)會(huì)自動(dòng)提醒用戶,并提供有關(guān)后續(xù)應(yīng)對(duì)措施的建議,在Android設(shè)備上,用戶對(duì)于自己的數(shù)據(jù)擁有絕對(duì)處理的權(quán)力,用戶可自主決定是否、何時(shí)分享自己的數(shù)據(jù),從而保障了用戶的系統(tǒng)安全和數(shù)據(jù)安全。3、Android開放性允許任何移動(dòng)終端廠商加入到Android聯(lián)盟中來,使其擁有更多的開發(fā)者,有利于積累消費(fèi)者和廠商。

Android平臺(tái)劣勢(shì)包括以下幾點(diǎn):1、Android平臺(tái)由于開發(fā)便利,血腥、暴力、情色方面的程序和游戲難以控制。2、Android存在安全漏洞,“黑客”能實(shí)施遠(yuǎn)程竊取文件、查收電郵乃至盜取用戶名和密碼等違反活動(dòng)。3、2023年11月,據(jù)證券時(shí)報(bào)消息,目前鴻蒙HarmonyOSNEXT開發(fā)者預(yù)覽版已不兼容安卓,華為可能推出不兼容安卓的鴻蒙版本。1.4

Android開發(fā)環(huán)境搭建1.4.1AndroidStudio安裝1.4.2AndroidStudio新建項(xiàng)目1.4.3AndroidStudio主界面、應(yīng)用程序目錄結(jié)構(gòu)及相關(guān)文件介紹1.4.4模擬器的創(chuàng)建和管理1.4.1AndroidStudio安裝

AndroidStudio是谷歌在2013年推出的一個(gè)Android集成開發(fā)工具,基于IntelliJIDEA,提供了集成的Android開發(fā)工具用于開發(fā)和調(diào)試,并在2015年發(fā)布了正式版1.3,使開發(fā)代碼變得更加容易。AndroidStudio可從官網(wǎng)下載:/studio?hl=zh-cn

1.4.2AndroidStudio新建項(xiàng)目

AndroidStudio安裝完成后,打開AndroidStudio依次點(diǎn)擊文件>新建>新建項(xiàng)目

1.4.3AndroidStudio主界面、應(yīng)用程序目錄結(jié)構(gòu)及相關(guān)文件介紹

Android模式下應(yīng)用程序目錄結(jié)構(gòu)Android模式下res目錄中包含存儲(chǔ)在其子目錄中的圖片資源、布局資源、字符串資源等,res目錄下的資源目錄作用如下:1、drawable:放置位圖文件(PNG、.9.png、JPG或GIF)或編譯為可繪制資源子類型的XML文件;2、layout:放置定義界面布局的XML文件;3、mipmap:放置應(yīng)用圖標(biāo);4、values:放置字符串、整數(shù)和顏色等簡(jiǎn)單值的XML文件;5、xml:放置各種XML配置文件。

項(xiàng)目模式下應(yīng)用程序目錄結(jié)構(gòu)項(xiàng)目模式下各目錄和文件作用如下:1、.gradle:存放構(gòu)建工具的jar包和wrapper等;2、.idea:放置AndroidStudioIDE所需要的文件;3、build:app模塊編譯輸出的目錄;4、libs:app模塊專用庫(kù);5、src:放置app模塊所有代碼和資源文件;6、build.gradle(app模塊中):app模塊的gradle配置文件;7、:app模塊的proguard文件;8、build.gradle(應(yīng)用中):適用于所有模塊的gradle配置文件;9、settings.gradle:定義項(xiàng)目包含哪些模塊,負(fù)責(zé)配置子工程;10、perties:和gradle相關(guān)的全局屬性設(shè)置文件;11、localproperties:本地屬性設(shè)置文件(設(shè)置key和SDK的位置等);12、外部庫(kù):項(xiàng)目依賴的庫(kù),編譯時(shí)自動(dòng)下載

AndroidManifest.xml清單文件1<?xmlversion="1.0"encoding="utf-8"?>2<manifestxmlns:android="/apk/res/android"3xmlns:tools="/tools">4

5<!--allowBackup:提供了為應(yīng)用程序數(shù)據(jù)的備份和恢復(fù)功能-->6<!--dataExtractionRules:控制自動(dòng)備份-->7<!--fullBackupContent:指向包含備份規(guī)則的XML文件-->8<!--icon:普通圖標(biāo);roundIcon:圓形圖標(biāo)-->9<!--label:程序名標(biāo)簽-->10<!--supportsRtl:支持右到左的布局-->11<!--theme:設(shè)置整個(gè)應(yīng)用或者某個(gè)活動(dòng)Activity的界面-->12<!--targetApi:目標(biāo)版本-->13<!--name:設(shè)置Application子類的名稱(注冊(cè)自己的Application文件)-->14<application15android:allowBackup="true"16android:dataExtractionRules="@xml/data_extraction_rules"17android:fullBackupContent="@xml/backup_rules"18android:icon="@mipmap/ic_launcher"19android:label="@string/app_name"20android:roundIcon="@mipmap/ic_launcher_round"21android:supportsRtl="true"22android:theme="@style/Theme.Lesson"23tools:targetApi="31">24<activity25android:name=".MainActivity"26android:exported="true">27<!--intent-filter標(biāo)簽作用:把當(dāng)前的MainActivity配置成為應(yīng)用程序入口-->28<intent-filter>29<actionandroid:name="ent.action.MAIN"/>30

31<categoryandroid:name="ent.category.LAUNCHER"/>32</intent-filter>33</activity>34</application>35

36</manifest>

MainActivity.java:定義MainActivity布局的目的、功能,并包含各種方法的實(shí)際代碼1//新建的Activity必須繼承AppCompatActivity或者Activity2publicclassMainActivityextendsAppCompatActivity{3//onCreate方法是在Activity創(chuàng)建時(shí)被系統(tǒng)調(diào)用,是一個(gè)Activity生命周期的開始4@Override5protectedvoidonCreate(BundlesavedInstanceState){6//重寫了父類中的onCreate方法7super.onCreate(savedInstanceState);8//與布局文件建立聯(lián)系:res目錄->layout目錄->activity_main.xml布局文件9setContentView(R.layout.activity_main);10}11}

activity_main.xml:布局文件,定義頁(yè)面樣式1<?xmlversion="1.0"encoding="utf-8"?>2<androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="/apk/res/android"3xmlns:app="/apk/res-auto"4xmlns:tools="/tools"5android:layout_width="match_parent"6android:layout_height="match_parent"7tools:context=".MainActivity">8

9<!--Android講究邏輯與視圖分離,所以在Activity是不寫界面的,界面是放在局部文件里面的。-->10<!--ConstraintLayout:約束布局-->11<!--layout_width:設(shè)定寬度-->12<!--layout_height:設(shè)置高度-->13<!--text:設(shè)置文本內(nèi)容-->14<TextView15android:layout_width="wrap_content"16android:layout_height="wrap_content"17android:text="HelloWorld!"18app:layout_constraintBottom_toBottomOf="parent"19app:layout_constraintEnd_toEndOf="parent"20app:layout_constraintStart_toStartOf="parent"21app:layout_constraintTop_toTopOf="parent"/>22

23</androidx.constraintlayout.widget.ConstraintLayout>1.4.4模擬器的創(chuàng)建和管理

Android模擬器包含在AndroidStudio中,是AndroidStudio中用于模擬Android設(shè)備的一個(gè)虛擬環(huán)境,這樣就可以在各種設(shè)備上以及各個(gè)AndroidAPI級(jí)別測(cè)試應(yīng)用程序,而無需擁有實(shí)體設(shè)備,具有靈活度高、高還原度和測(cè)試結(jié)果迅速等優(yōu)勢(shì)。

Andriod應(yīng)用開發(fā)基礎(chǔ)教程第2章常用布局

布局定義了應(yīng)用中的界面結(jié)構(gòu),布局中的所有元素都是建立在View(視圖)和ViewGroup(視圖容器)的基礎(chǔ)上的。View通常繪制用戶可以看到的控件,例如Button(按鈕)和TextView(文本框),是Android所有控件的的基類,View本身可以是單個(gè)控件也可以是由多個(gè)控件組成的一組控件,通過這種關(guān)系就形成了View樹的結(jié)構(gòu)。View還包含事件處理使用戶和界面可以進(jìn)行交互。ViewGroup是一個(gè)不可見的容器,例如LinearLayout(線性布局)和ConstraintLayout(約束),它定義了View和其他ViewGroup對(duì)象的布局結(jié)構(gòu),ViewGroup是View的子類因此它也是View,但是ViewGroup可以容納View和ViewGroup,但View不可以再容納其他View或ViewGroup。圖2-1

Android界面視圖層次結(jié)構(gòu)

布局可以通過以下兩種方式聲明:1、在XML中聲明UI元素:Android開發(fā)中最常用的布局方式,可以通過XML文件定義UI控件的位置、大小、顏色等屬性。2、JAVA代碼中實(shí)例化布局元素:Android還允許通過代碼來動(dòng)態(tài)創(chuàng)建布局,這通常在需要?jiǎng)討B(tài)調(diào)整布局或在復(fù)雜布局時(shí)使用。代碼布局相比XML布局更加靈活,但是過度使用代碼布局會(huì)使得代碼變得難以維護(hù)且不符合MVC的設(shè)計(jì)原則,通常建議在簡(jiǎn)單布局中使用代碼布局,在需要重用布局或者需要?jiǎng)討B(tài)調(diào)整布局時(shí)使用XML布局。2.1線性布局

線性布局(LinearLayout)是Android開發(fā)中最基礎(chǔ)且常用的布局方式之一,適合比較簡(jiǎn)單的布局場(chǎng)景,它允許開發(fā)者將子視圖按照垂直或水平方向進(jìn)行有序排列。在XML中運(yùn)用線性布局只需在根元素層級(jí)內(nèi)添加一個(gè)<LinearLayout>標(biāo)簽并設(shè)置相應(yīng)的屬性和布局參數(shù)即可。

表2-1線性布局中常用的屬性屬性屬性值作用android:orientationvertical:垂直horizontal:水平設(shè)置布局的方向android:layout_widthandroid:layout_heightwrap_content:根據(jù)內(nèi)容自適應(yīng)大小match_parent:匹配父容器的大小具體像素值:如10dp定義LinearLayout本身的寬度和高度android:layout_gravitycenter_horizontal:水平居中center_vertical:垂直居中center:居中l(wèi)eft、right:左部、右部top、bottom:上部、下部子視圖在LinearLayout內(nèi)部的對(duì)齊方式android:gravity同layout_gravity設(shè)置自身內(nèi)部元素的對(duì)齊方式android:layout_weight整數(shù)控制子視圖在垂直或水平方向上占據(jù)的空間比例android:layout_marginandroid:padding具體像素值:如5dp分別設(shè)置LinearLayout的外邊距和內(nèi)邊距案例2.1

使用線性布局制作如圖2-2所示的用戶登錄界面(參考代碼見LinearLayoutActivity)圖2-2用戶登錄應(yīng)用界面2.2相對(duì)布局相對(duì)布局(RelativeLayout),顧名思義,就是需要有一個(gè)參照物,根據(jù)參照物來確定視圖的位置,該參照物可以是其它視圖,也可以是父容器。通過前面的線性布局案例可以發(fā)現(xiàn),如果需要在多個(gè)方向上進(jìn)行布局,就要嵌套多個(gè)線性布局。界面越復(fù)雜工作量越大,為了減少工作量可以在需要嵌套多個(gè)線性布局才能實(shí)現(xiàn)的布局中使用相對(duì)布局。相對(duì)布局十分靈活,可以實(shí)現(xiàn)復(fù)雜界面的設(shè)計(jì),但掌握起來比較難。表2-2相對(duì)布局中常用的屬性屬性屬性值作用與父容器定位相關(guān)屬性android:layout_alignParentToptrue、false值為true時(shí)此視圖的頂部與父視圖的頂部邊緣對(duì)齊android:layout_alignParentBottomtrue、false值為true時(shí)此視圖的底部與父視圖的底部邊緣對(duì)齊android:layout_alignParentLefttrue、false值為true時(shí)此視圖的左部與父視圖的左部邊緣對(duì)齊android:layout_alignParentRighttrue、false值為true時(shí)此視圖的右部與父視圖的右部邊緣對(duì)齊android:layout_alignParentStarttrue、false值為true時(shí)此視圖的起始邊與父視圖的右部起始邊對(duì)齊android:layout_alignParentEndtrue、false值為true時(shí)此視圖的結(jié)束邊與父視圖的右部結(jié)束邊對(duì)齊android:layout_centerInParenttrue、false值為true時(shí)此視圖位于父視圖的居中位置android:layout_centerHorizontaltrue、false值為true時(shí)此視圖位于父視圖的水平方向上的居中位置android:layout_centerVerticaltrue、false值為true時(shí)此視圖位于父視圖的垂直方向上的居中位置相對(duì)其它視圖定位屬性android:layout_above其他視圖id將此視圖的底部邊緣定位在給定視圖的上方android:layout_below其他視圖id將此視圖的頂部邊緣定位在給定視圖的下方android:layout_toLeftOf其他視圖id將此視圖的右部邊緣定位在給定視圖的左方android:layout_toRightOf其他視圖id將此視圖的左部邊緣定位在給定視圖的右方android:layout_alignTop其他視圖id將此視圖的頂部邊緣和給定視圖的頂部邊緣對(duì)齊android:layout_alignBottom其他視圖id將此視圖的底部邊緣與給定視圖的底部邊緣對(duì)齊android:layout_alignLeft其他視圖id將此視圖的左部邊緣與給定視圖的左部邊緣對(duì)齊android:layout_alignRight其他視圖id將此視圖的右部邊緣與給定視圖的右部邊緣對(duì)齊android:layout_alignStart其他視圖id將此視圖的起始邊與給定視圖的起始邊對(duì)齊android:layout_alignEnd其他視圖id將此視圖的結(jié)束邊與給定視圖的結(jié)束邊對(duì)齊android:layout_alignBaseline其他視圖id將此視圖的基線與給定視圖的基線對(duì)齊案例2.2

相對(duì)布局中視圖相對(duì)于父容器的位置演示(參考代碼見:RelativeLayoutActivity)android:layout_centerInParent="true"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_alignParentTop="true"android:layout_alignParentBottom="true"android:layout_alignParentRight="true"android:layout_alignParentLeft="true"案例2.3

相對(duì)布局中視圖相對(duì)于其它視圖的位置演示(參考代碼見:RelativeLayoutActivity)android:layout_above="@+id/reference_1"android:layout_below="@+id/reference_2"android:layout_toLeftOf="@+id/reference_3"android:layout_toRightOf="@+id/reference_4"android:layout_alignTop="@+id/reference_5"android:layout_alignBottom="@+id/reference_6"android:layout_alignLeft="@+id/reference_7"android:layout_alignRight="@+id/reference_8"案例2.4

用相對(duì)布局完成案例2-1的用戶登錄界面(參考代碼見:RelativeLayoutActivity)RelativeLayoutActivity加載布局文件activity_relative_layout_land.xml,運(yùn)行RelativeLayoutActivity后生成應(yīng)用界面如圖2-2所示,用戶名密碼登陸部分代碼部分得到了精簡(jiǎn),可見相對(duì)布局在復(fù)雜界面設(shè)計(jì)中可一定程度上減少布局嵌套,優(yōu)化代碼。2.3絕對(duì)布局

AbsoluteLayout(絕對(duì)布局)中的控件是通過指定其在父容器中的精確坐標(biāo)來確定的,否則將會(huì)被排在左上角,而手機(jī)應(yīng)用需要適應(yīng)不同的屏幕大小,而這種布局模型不能自適應(yīng)屏幕尺寸大小,所以應(yīng)用的相對(duì)較少。表2-3絕對(duì)布局中常用的屬性屬性屬性值作用android:layout_x具體像素值:如20dp設(shè)置視圖X坐標(biāo)android:layout_y具體像素值設(shè)置視圖Y坐標(biāo)案例2.5

絕對(duì)布局演示(參考代碼見:AbsoluteLayoutActivity)2.4表格布局

Android中也允許使用表格行與列的方式來排列控件即表格布局(TableLayout)。表格布局不需要聲明包含了多少行、多少列,而是通過添加<TableRow>標(biāo)簽和其他控件的方式來確定表格的行數(shù)和列數(shù),使用表格布局有以下注意事項(xiàng);1、如果直接在TableLayout中添加控件,那么控件將和父容器等寬;2、如果想讓控件出現(xiàn)在同一行,那么這些控件的外層一定要加一對(duì)<TableRow>;3、在TableRow中的控件,寬度都是默認(rèn)wrap_content。表2-4

表格布局中常用的屬性屬性屬性值作用android:stretchColumns列的索引值,從0開始,多個(gè)列索引值必須用逗號(hào)隔開,也可用通過“*”代替所有列拉伸列以填滿剩下的多余空白空間。android:shrinkColumns收縮列。當(dāng)可收縮的列過寬(內(nèi)容過多)不會(huì)被擠出屏幕,注意:一列能同時(shí)收縮和拉伸android:collapseColumns隱藏列,從頁(yè)面消失不占空間android:layout_span列數(shù)量列數(shù)跨度,指定當(dāng)前View所占的列數(shù)。如android:layout_span="2"該控件占據(jù)2列android:layout_column列的索引值設(shè)置當(dāng)前View所在的列,如android:layout_column="1"該控件顯示在第2列案例2.6

使用表格布局設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器界面。(參考代碼見:TableLayoutActivity)2.5網(wǎng)格布局

網(wǎng)格布局(GridLayout)相對(duì)于表格布局和線性布局嵌套更加靈活,網(wǎng)格布局中可以自定義網(wǎng)格行數(shù)和列數(shù)、控件位于網(wǎng)格的行列位置、控件跨越的行列數(shù)及控件排列方式等網(wǎng)格布局和線性布局一樣,也分為水平和垂直兩種方式,默認(rèn)水平布局下一個(gè)控件挨著一個(gè)控件從左到右依次排列,達(dá)到設(shè)置列數(shù)后控件會(huì)自動(dòng)換行進(jìn)行排列。表2-5網(wǎng)格布局中常用的屬性屬性屬性值作用android:columnCount整數(shù)定義網(wǎng)格列數(shù)android:rowCount定義網(wǎng)格行數(shù)android:layout_columnSpan設(shè)置當(dāng)前Viw所占的列數(shù)android:layout_rowSpan設(shè)置當(dāng)前Viw所占的行數(shù)android:layout_column設(shè)置當(dāng)前view所在的列注:某控件跨越多行或多列,需要將該控件的lavout_rowSpan或lavout_columnSpan屬性設(shè)置為跨越的行列數(shù),再設(shè)置layout_gravity=“fill”,表明該控件填滿所跨越的行或列。案例2.7

使用網(wǎng)格布局改進(jìn)計(jì)算器界面顯示(參考代碼見:GridLayoutActivity)2.6幀布局

幀布局(FrameLayout)是一種可疊加的布局,后添加的控件會(huì)層疊在先添加的控件上,后添加控件會(huì)覆蓋先添加的控件。表2-6幀布局的常用屬性屬性屬性值作用android:layout_marginTop像素值設(shè)置上外邊距android:layout_marginBottom設(shè)置下外邊距android:layout_marginLeft?設(shè)置左外邊距android:layout_marginRight?設(shè)置右外邊距android:paddingLeft?設(shè)置左內(nèi)邊距android:paddingRight設(shè)置右內(nèi)邊距android:paddingTop設(shè)置上內(nèi)邊距android:paddingBottom?設(shè)置下內(nèi)邊距android:gravitycenter、left、right等位置值控制子View在父容器內(nèi)部的位置案例2.8

幀布局演示(參考代碼見:FrameLayoutActivity)2.7約束布局

約束布局(ConstraintLayout)主要是為了解決布局嵌套過多的問題,它通過定義界面元素之間的相對(duì)位置和尺寸關(guān)系,自動(dòng)調(diào)整布局以適應(yīng)不同的屏幕尺寸和方向。要在約束布局中定義某個(gè)視圖的位置,必須為該視圖添加至少一個(gè)水平約束條件和一個(gè)垂直約束條件,每個(gè)約束條件均表示與其他視圖、父布局或隱形引導(dǎo)線之間連接或?qū)R方式。2.7.1添加刪除約束

成功創(chuàng)建ConstraintLayoutActivity后,在本模塊res資源目錄下打開布局文件activity_constraint_layout.xml,點(diǎn)擊界面“Design”進(jìn)入Design(設(shè)計(jì))界面添加約束條件前先從“Palette”中拖入控件到Design界面中選中“Button”后可見該控件四周出現(xiàn)藍(lán)色矩形框,該方框四個(gè)角有4個(gè)實(shí)心方框,四條邊中心位置有4個(gè)空心圓圈,鼠標(biāo)左鍵拖動(dòng)這四個(gè)4個(gè)實(shí)心方框可對(duì)Button控件進(jìn)行拉伸收縮操作,鼠標(biāo)左鍵按住空心圓圈,將其拖動(dòng)到邊界或其它控件對(duì)應(yīng)位置,即可為該控件添加對(duì)應(yīng)的水平或垂直約束刪除約束時(shí),可以一次性刪除所有約束,也可刪除指定的約束1、刪除所有約束:點(diǎn)擊Design界面中的“ClearAllConstraints”。2、刪除指定的約束:選中約束對(duì)應(yīng)的圓點(diǎn)后按下“Delete”鍵。2.7.2約束布局中的約束方式

1、相對(duì)定位約束相對(duì)定位約束即用目標(biāo)控件對(duì)被約束控件進(jìn)行約束定位,需要注意的是垂直方向的約束,其目標(biāo)控件件的約束也必須是垂直方向的,同理水平方向的約束,其目標(biāo)控件的約束也必須是水平方向的。表2-7常用的相對(duì)定位約束屬性及說明要設(shè)置被約束控件在父控件或目標(biāo)控件居中對(duì)齊方法如下:(1)垂直居中l(wèi)ayout_constraintBottom_toBottomOf="parent"layout_constraintTop_toTopOf="parent"(2)水平居中l(wèi)ayout_constraintLeft_toLeftOf="parent"layout_constraintRight_toRightOf="parent"(3)垂直水平居中l(wèi)ayout_constraintBottom_toBottomOf="parent"layout_constraintTop_toTopOf="parent"layout_constraintLeft_toLeftOf="parent"layout_constraintRight_toRightOf="parent"2、角度定位約束約束布局中的角度定位,通過設(shè)置角度和距離來確定兩個(gè)控件的相對(duì)位置,其中距離是指被約束控件和目標(biāo)控件中心點(diǎn)距離,角度是以Y軸正半軸為旋轉(zhuǎn)起始線順時(shí)針旋轉(zhuǎn)來計(jì)算的。表2-8常用的角度定位約束屬性及說明當(dāng)角度設(shè)置為0時(shí),被約束控件在目標(biāo)控件正上方;當(dāng)角度設(shè)置為90時(shí),被約束控件在目標(biāo)控件正右方;當(dāng)角度設(shè)置為180時(shí),被約束控件在目標(biāo)控件正下方;當(dāng)角度設(shè)置為270時(shí),被約束控件在目標(biāo)控件正左方。屬性屬性值作用android:layout_constraintCircle目標(biāo)控件id用目標(biāo)控件中心點(diǎn)確定定位原點(diǎn)android:layout_constraintCircleAngle角度旋轉(zhuǎn)角度android:layout_constraintCircleRadius像素值被約束控件和目標(biāo)控件中心點(diǎn)距離3、引導(dǎo)線約束可以添加垂直或水平引導(dǎo)線來約束控件,該引導(dǎo)線用戶不可見。引導(dǎo)線定位需要先設(shè)置引導(dǎo)線方向再確定引導(dǎo)線的起始位置,起始位置可用像素值或百分比設(shè)置。表2-9常用的引導(dǎo)線約束屬性及說明屬性屬性值作用android:orientationvertical:垂直horizontal:水平設(shè)置引導(dǎo)線的顯示方向an

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論