版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Android應(yīng)用界面本章學(xué)習(xí)目標(biāo)
熟悉Android的View及ViewGroup類
掌握常用的布局
掌握Android開發(fā)當(dāng)中常用的UI組件
用戶注冊(cè)實(shí)例2.1View概念A(yù)ndroid應(yīng)用的絕大部分UI組件都放在android.widget包和android.view包中。多個(gè)視圖組件(View)可以存放在一個(gè)視圖容器(ViewGroup)中,該容器可以與其他視圖組件共同存放在另一個(gè)視圖容器當(dāng)中,但是一個(gè)界面文件必須有且僅有一個(gè)容器作為根節(jié)點(diǎn)。Android應(yīng)用的界面都是由View和ViewGroup對(duì)象構(gòu)建的,ViewGroup繼承了View類,也可以當(dāng)成普通的View來使用,但主要還是當(dāng)成容器來使用。2.1View概念圖2-1圖形用戶界面層次圖Android推薦使用XML布局文件來定義用戶界面,因此所有組件都提供了兩種方式來控制組件的行為:在XML布局文件中通過XML屬性進(jìn)行控制。在JAVA程序代碼中通過調(diào)用方法進(jìn)行控制。實(shí)際上不管使用哪種方式,它們控制Android用戶界面行為的本質(zhì)是一樣的。大部分時(shí)候,控制UI組件的XML屬性還有對(duì)應(yīng)的方法。2.1View概念View類常用的XML屬性、相關(guān)方法及簡(jiǎn)要說明如表2-1所示XML屬性方法說明android:alpha setAlpha(float)設(shè)置透明度android:backgroundsetBackgroundResource(int)設(shè)置背景android:idsetId(int)設(shè)置組件標(biāo)識(shí)android:visibilitysetVisibility(int)設(shè)置組件是否可見android:keepScreenOnsetkeepScreenOn(boolean)設(shè)置組件是否會(huì)強(qiáng)制手機(jī)屏幕一直打開Android:longClickablesetLongClickable(boolean)設(shè)置是否響應(yīng)長單擊事件android:scaleX setScaleX(float)設(shè)置水平方向的縮放比android:scaleY setScaleY(float)設(shè)置垂直方向的縮放比android:scrollX
設(shè)置水平方向的滾動(dòng)偏移android:scrollY
設(shè)置垂直方向的滾動(dòng)偏移XML屬性方法說明
android:scrollbars定義該組件滾動(dòng)時(shí)顯示幾個(gè)滾動(dòng)條,該屬性支持如下屬性值:none:滾動(dòng)條不顯示horizontal:顯示水平滾動(dòng)條vertical:顯示垂直滾動(dòng)條android:rotationXsetRotationX(float)設(shè)置繞X軸旋轉(zhuǎn)的角度android:rotationYsetRotationY(float)設(shè)置繞Y軸旋轉(zhuǎn)的角度
android:scrollbarStyle
setScrollBarStyle(int)設(shè)置滾動(dòng)條風(fēng)格和位置,該屬性具有如下屬性值:insideOverlayinsideInsetoutsideOverlayoutsideInsetandroid:tag
為該組件設(shè)置一個(gè)字符串類型的tag,通過View的getTag()獲取該字符串a(chǎn)ndroid:fadeScrollbarssetScrollbarFadingEnabled(boolean)當(dāng)不使用該組件的滾動(dòng)條時(shí),是否淡出顯示滾動(dòng)條android:contentDescriptionsetContentDescription(CharSequence)設(shè)置該組件的內(nèi)容描述信息android:focusablesetFocusable(boolean)設(shè)置該組件是否可以得到焦點(diǎn)android:onClick
設(shè)置組件的單擊事件android:paddingsetPadding(int,int,int,int)在組件的四邊設(shè)置填充區(qū)域XML屬性方法說明android:transformPivotXsetPivotX(float)設(shè)置該組件旋轉(zhuǎn)時(shí)旋轉(zhuǎn)中心的X坐標(biāo)android:transformPivotYsetPivotY(float)設(shè)置該組件旋轉(zhuǎn)時(shí)旋轉(zhuǎn)中心的Y坐標(biāo)android:translationXsetTranslationX(float)設(shè)置該組件在X方向上的位移android:translationYsetTranslationY(float)設(shè)置該組件在Y方向上的位移android:translationZsetTranslationZ(float)設(shè)置該組件在Z(垂直屏幕)方向上的位移android:soundEffectsEnabledsetSoundEffectsEnabled(boolean)設(shè)置該組件被單擊時(shí),是否使用音效android:minHeightsetMinimumHeight(int)該組件的最小高度android:minWidthsetMinimumWidth(int)該組件的最小寬度對(duì)于View類而言,它是所有UI組件的父類,因此它包含的XML屬性和方法是所有組件都可以使用的。2.2布局管理器2.2.1組件的寬高單位幾個(gè)常用的寬高單位:px:代表像素,即在屏幕中可以顯示的最小元素單元。分辨率越高的手機(jī),屏幕的像素點(diǎn)就越多。因此,如果使用px來設(shè)置控件的大小,在分辨率不同的手機(jī)上控件的顯示出來的大小也不一樣。pt:代表磅數(shù),一般pt都會(huì)作為字體的單位來顯示。pt和px的情況相似,在不同分辨率的手機(jī)上,用pt作為字體單位顯示的大小也不一樣。dp:代表密度無關(guān)像素,又稱dip,使用dp的好處是在無論屏幕的分辨率如何總能顯示相同的大小,一般使用dp作為控件與布局的寬高單位。sp:代表可伸縮像素,采用與dp相同的設(shè)計(jì)理念,設(shè)置字體大小時(shí)使用。2.2.2
布局管理器在Android開發(fā)當(dāng)中,界面的設(shè)計(jì)是通過布局文件實(shí)現(xiàn)的,布局文件采用XML的格式,每個(gè)應(yīng)用程序默認(rèn)會(huì)創(chuàng)建一個(gè)activity_main.xml布局文件,它是應(yīng)用啟動(dòng)的界面。2.2.3創(chuàng)建和使用布局文件1.
打開項(xiàng)目,找到layout文件夾,右鍵點(diǎn)擊new—XML—LayoutXmlFile,然后就會(huì)創(chuàng)建一個(gè)新的布局文件。2.添加組件,新創(chuàng)建的布局文件可以通過在xml文件中添加組件,也可以通過在圖形用戶界面上進(jìn)行直接的拖拉操作,然后再次通過代碼進(jìn)行調(diào)整,這種方式減少了用戶的代碼編寫量。2.2.4布局的類型一個(gè)優(yōu)秀的布局設(shè)計(jì)對(duì)UI界面起到重要的作用,在Android中常用布局主要有7種,分別是:線性布局(LinearLayout)相對(duì)布局(RelativeLayout)表格布局(TableLayout)網(wǎng)格布局(GridLayout)絕對(duì)布局(AbsoluteLayout)幀布局(FrameLayout)扁平化布局(ConstraintLayout)(1)線性布局(LinearLayout)線性布局是Android中較為常用的布局方式,它使用<LinearLayout>標(biāo)簽,主要分為水平線性布局和垂直線性布局。<LinearLayout
xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"
android:orientation="horizontal"><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button1"/><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button2"/><Button…./></LinearLayout>(2)相對(duì)布局(RelativeLayout)相對(duì)布局分為相對(duì)于容器和控件兩種。為了更好的確定布局中控件的位置,相對(duì)布局提供了很多屬性,具體如表2-2所示。屬性聲明功能描述android:layout_alignParentLeft是否跟父布局左對(duì)齊android:layout_alignParentRight是否跟父布局右對(duì)齊android:layout_alignParentTop是否跟父布局頂部對(duì)齊android:layout_alignParentBottom是否跟父布局底部對(duì)齊android:layout_toRightOf在指定控件右邊android:layout_toLeftOf在指定控件左邊android:layout_above在指定控件上邊android:layout_below在指定控件下邊android:layout_alignBaseline與指定控件水平對(duì)齊android:layout_alignLeft與指定控件左對(duì)齊android:layout_alignRight與指定控件右對(duì)齊android:layout_alignTop與指定控件頂部對(duì)齊android:layout_alignBottom與指定控件底部對(duì)齊<?xmlversion="1.0"encoding="utf-8"?><RelativeLayout
xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".relativelayout.MainActivity"><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_marginTop="100dp"android:layout_marginLeft="50dp"android:text="Button1"/><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"
android:layout_toRightOf="@+id/button"
android:layout_below="@+id/button"android:layout_marginTop="15dp"android:text="Button2"/></RelativeLayout>(3)表格布局(TableLayout)表格布局的方式不同于前面兩種,表格布局就是讓控件以表格的形式來排列控件,只要將控件放在單元格中,控件就可以整齊地排列。表格布局使用<TableLayout>標(biāo)簽,行數(shù)由TableRow對(duì)象控制,每行可以放多個(gè)控件,列數(shù)由最寬的單元格決定,假設(shè)第一行有兩個(gè)控件,第二行有3個(gè)控件,那么這個(gè)表格布局就有3列。在控件中使用layout_column屬性指定具體的列數(shù),該屬性的值從0開始,代表第一列。<TableLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"
android:stretchColumns="1"><TableRowandroid:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"
android:layout_column="0"android:text="Button1"/></TableRow><TableRowandroid:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"
android:layout_column="1"/></TableRow></TableLayout>表格布局設(shè)計(jì)了兩行,每行一個(gè)按鈕的布局,使用android:stretchColumns=“1”,屬性拉伸第二列,android:layout_column=“0”屬性表示顯示在第一列中。需要注意的是,TableRow不需要設(shè)置寬度和高度,其寬度一定是自動(dòng)填充容器,高度根據(jù)內(nèi)容改變。但對(duì)于TableRow的其他控件來說,是可以設(shè)置寬度和高度的。(4)網(wǎng)格布局(GridLayout)網(wǎng)格布局是由Gridlayout所代表,它是Android4.0新增的布局管理器,因此需要在4.0之后的版本才能使用。它的作用類似與table,它把整個(gè)容器劃分為rows×columns個(gè)網(wǎng)格,每個(gè)網(wǎng)格可以放置一個(gè)組件。GridLayout提供了setRowCount(int)和setColumnCount(int)方法來控制該網(wǎng)格的行數(shù)量和列數(shù)量。<?xmlversion="1.0"encoding="utf-8"?>
<GridLayoutxmlns:android="/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:columnCount="4"
android:rowCount="4"
android:orientation="horizontal">
<Buttonandroid:text="/"
android:layout_column="3"/>
<Buttonandroid:text="1"/>
<Buttonandroid:text="2"/>
<Buttonandroid:text="3"/>
<Buttonandroid:text="*"/>
<Buttonandroid:text="4"/>
<Buttonandroid:text="5"/>
<Buttonandroid:text="6"/>
<Buttonandroid:text="-"/>
<Buttonandroid:text="7"/>
<Buttonandroid:text="8"/>
<Buttonandroid:text="9"/>
<Buttonandroid:text="+"
android:layout_gravity="fill"
android:layout_rowSpan="2"/>
<Buttonandroid:text="0"/>
<Buttonandroid:text="="
android:layout_gravity="fill"
android:layout_columnSpan="2"/>
</GridLayout>(5)幀布局(FrameLayout)幀布局是Android布局中最簡(jiǎn)單的一種,幀布局為每個(gè)加入其中的控件創(chuàng)建了一塊空白區(qū)域。采用幀布局的方式設(shè)計(jì)界面時(shí),只能在屏幕左上角顯示一個(gè)控件,如果添加多個(gè)控件,這些會(huì)依次重疊在屏幕左上角顯示,且會(huì)透明顯示之前的文本。<FrameLayout
xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/button10"android:layout_width="314dp"android:layout_height="315dp"android:text="Button1"/><Buttonandroid:id="@+id/button11"android:layout_width="216dp"android:layout_height="140dp"android:text="Button2"/><Buttonandroid:id="@+id/button12"android:layout_width="103dp"android:layout_height="wrap_content"android:text="Button3"/></FrameLayout>(6)絕對(duì)布局(AbsoluteLayout)絕對(duì)布局是通過指定x、y坐標(biāo)來控制每一個(gè)控件的位置,放入該布局的控件需要通過android:layout_x和android:layout_y兩個(gè)屬性指定其在屏幕上確切的位置。把屏幕看作一個(gè)坐標(biāo)軸,左上角為(0,0),往屏幕下方為y正半軸,右方為x正半軸。<AbsoluteLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"
android:layout_x="71dp"
android:layout_y="25dp"android:text="Button"/></AbsoluteLayout>(7)扁平化布局(ConstraintLayout)ConstraintLayout是AndroidStudio2.2中主要的新增功能之一。在傳統(tǒng)的Android開發(fā)當(dāng)中,界面基本都是靠編寫XML代碼完成的,雖然AndroidStudio也支持可視化的方式來編寫界面,但是操作起來并不方便,而ConstraintLayout就是為了解決這一現(xiàn)狀而出現(xiàn)的。它和傳統(tǒng)編寫界面的方式恰恰相反,ConstraintLayout非常適合使用可視化的方式來編寫界面,但并不太適合使用XML的方式來進(jìn)行編寫。當(dāng)然,可視化操作的背后仍然還是使用的XML代碼來實(shí)現(xiàn)的,只不過這些代碼是由AndroidStudio根據(jù)用戶的操作自動(dòng)生成的。<?xmlversion="1.0"encoding="utf-8"?><android.support.constraint.ConstraintLayoutxmlns:android="/apk/res/android"xmlns:app="/apk/res-auto"android:id="@+id/lay_root"android:layout_width="match_parent"android:layout_height="mat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)景觀設(shè)計(jì)中的多肉植物元素運(yùn)用
- 2025房屋買賣合同范本個(gè)人
- 2025年度知識(shí)產(chǎn)權(quán)質(zhì)押合同:創(chuàng)業(yè)公司以其專利權(quán)作為貸款擔(dān)保協(xié)議3篇
- 2024電商平臺(tái)交易促成居間合同版B版
- 2025集體合同、工資集體協(xié)議文
- 2025年度田地租賃合同:現(xiàn)代農(nóng)業(yè)示范園區(qū)土地使用權(quán)出讓協(xié)議3篇
- 小微企業(yè)財(cái)務(wù)管理的優(yōu)化策略
- 南昌工學(xué)院《計(jì)算流體力學(xué)與傳熱學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 專業(yè)裝修設(shè)計(jì)協(xié)議范例手冊(cè)(2024年版)版B版
- 2024年風(fēng)電領(lǐng)域施工人力協(xié)調(diào)協(xié)議版B版
- 2025北京豐臺(tái)初二(上)期末數(shù)學(xué)真題試卷(含答案解析)
- 四川省2024年中考數(shù)學(xué)試卷十七套合卷【附答案】
- 生產(chǎn)車間5s管理培訓(xùn)課件
- 監(jiān)考要求、操作流程及指導(dǎo)語
- 腰椎骨折病人的護(hù)理ppt
- 標(biāo)準(zhǔn)內(nèi)包骨架油封規(guī)格及公差
- 2021年上海市初中學(xué)生化學(xué)競(jìng)賽(第二十八屆天原杯)復(fù)賽試題及答
- 歌曲作品委托演唱?jiǎng)?chuàng)作合同 模板
- CAMDS操作方法及使用技巧
- 淺談如何上好試卷講評(píng)課
- 股票買賣絕招之高開假陰線攻擊日選股公式
評(píng)論
0/150
提交評(píng)論