android应用的界面编程----View与ViewGroup的概念
1 UI OverView
Android中所有的UI元素都是通過View與ViewGroup來構(gòu)建的,View是指屏幕中一塊可與用戶進(jìn)行交互的空白,類似于java界面編程中的JPanel。為了界面布局,A Group對象可以包含多個(gè)View或ViewGroup(由于ViewGroup是View的子類)。
View的子類集合主要包括各種Input 控件,ViewGroup的子類集合包括各種布局控件。
2 user Interface layout
每個(gè)應(yīng)用程序的界面UI控件都是由如下圖中的層次關(guān)系構(gòu)成。每個(gè)ViewGroup都是成員View(input 控件或者UI上定義的小部件)的不可見容器。層次結(jié)構(gòu)根據(jù)需要可復(fù)雜可簡單(越簡單性能越好)。
用戶界面構(gòu)建有兩種方法:java代碼構(gòu)建(跟java界面編程相似);借助xml進(jìn)行界面布局。對于View類而言,它是所有UI控件的基類,所以View所包含的xml屬性和方法是所有組件都可以使用的。如下是一個(gè)layout文件示例:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent" android:layout_height="fill_parent"android:orientation="vertical" ><TextView android:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="I am a TextView" /><Button android:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="I am a Button" /> </LinearLayout> View Code當(dāng)你的App加載上述的布局資源的時(shí)候,Android會(huì)將布局中的每個(gè)節(jié)點(diǎn)進(jìn)行實(shí)例化成一個(gè)個(gè)對象,然后你可以為這些定義一些額外的行為,查詢對象的狀態(tài),或者修改布局。?
3 view類的xml屬性及其說明
| XML屬性 | 說明 |
| android:alpha | 設(shè)置該組件的透明度 |
| android:background | 設(shè)置該組件的背景顏色 |
| android:clickable | 設(shè)置該組件是否可以激發(fā)單擊事件 |
| android:contentDescription | 設(shè)置該組件的主要描述信息 |
| android:drawingCasheQuanlity | 設(shè)置該組件所使用的繪制緩存質(zhì)量 |
| android:fadeScrollbars | 設(shè)置該組件不使用滾動(dòng)條時(shí),是否淡出顯示滾動(dòng)條 |
| android:fadingEdge | 設(shè)置滾動(dòng)該組件時(shí)邊界是否使用淡出效果 |
| android:fadingEdgeLength | 設(shè)置淡出邊界長度 |
| android:focusable | 設(shè)置該組件是否可以得到焦點(diǎn) |
| android:focusableInTouchMode | 設(shè)置該組件在觸摸模式下是否可以得到焦點(diǎn) |
| android:id | 設(shè)置該組件ViewById來獲取它 |
| android:isScrollContainer | 設(shè)置該組件是否可以作為可滾動(dòng)容器使用 |
| android:keepScreenOn | 設(shè)置該組件是否會(huì)強(qiáng)制手機(jī)屏幕一直打開 |
| android:longClickable | 設(shè)置該組件是否可以響應(yīng)長單擊事件 |
| android:minHeight | 設(shè)置該組件的最小高度 |
| android:minWidth | 設(shè)置該組件的最小寬度 |
| android:nextFocusDown | 設(shè)置焦點(diǎn)在該組件上,且按向下鍵時(shí)獲得焦點(diǎn)的組件id |
| android:nextFocusRight | 設(shè)置焦點(diǎn)在該組件上,且按向右鍵時(shí)獲得焦點(diǎn)的組件id |
| android:nextFocusLeft | 設(shè)置焦點(diǎn)在該組件上,且按向左鍵時(shí)獲得焦點(diǎn)的組件id |
| android:nextFocusUp | 設(shè)置焦點(diǎn)在該組件上,且按向上鍵時(shí)獲得焦點(diǎn)的組件id |
| android:onClick | 為該組件的單擊事件綁定監(jiān)聽器 |
| android:padding | 在組件的四邊設(shè)置填充區(qū)域 |
| android:paddingLeft | 在組件的左邊設(shè)置填充區(qū)域 |
| android:paddingRight | 在組件的右邊設(shè)置填充區(qū)域 |
| android:paddingBottom | 在組件的底邊設(shè)置填充區(qū)域 |
| android:paddingTop | 在組件的頂邊設(shè)置填充區(qū)域 |
| android:rotation | 設(shè)置該組件的旋轉(zhuǎn)角度 |
| android:rotationX | 設(shè)置該組件繞X軸旋轉(zhuǎn)的角度 |
| android:rotationY | 設(shè)置該組件繞Y軸旋轉(zhuǎn)的角度 |
| android:saveEnabled | 設(shè)置為false,當(dāng)該組件被凍結(jié)時(shí)不會(huì)保存其狀態(tài) |
| android:scaleX | 設(shè)置該組件水平方向的縮放比 |
| android:scaleY | 設(shè)置該組件垂直方向的縮放比 |
| android:scrollX | 設(shè)置該組件初始化后的水平滾動(dòng)條偏移 |
| android:scrollY | 設(shè)置該組件初始化后垂直滾動(dòng)條偏移 |
| android:scrollbarAlwaysDrawHorizontalTrack | 設(shè)置該組件是否顯示水平滾動(dòng)條的軌跡 |
| android:scrollbarAlwaysDrawVerticalTrack | 設(shè)置該組件是否顯示垂直滾動(dòng)條的軌跡 |
| android:scrollbarDefaultDelayBeforeFade | 設(shè)置滾動(dòng)條在淡出隱藏之前延遲多少毫秒 |
| android:scrollbarFadeDuration | 設(shè)置滾動(dòng)條淡出隱藏需要多少秒 |
| android:scrollbarSize | 設(shè)置垂直滾動(dòng)條的寬度和水平滾動(dòng)條的高度 |
| android:scrollbarStyle | 設(shè)置滾動(dòng)條的風(fēng)格和位置:insideOverlay |
| android:scrollThumbHorizontal | 設(shè)置該組件水平滾動(dòng)滑塊對對應(yīng)的Drawable對象 |
| android:scrollThumbVertical | 設(shè)置該組件垂直滾動(dòng)滑塊對對應(yīng)的Drawable對象 |
| android:scrollTrackbHorizontal | 設(shè)置該組件水平滾動(dòng)軌道對對應(yīng)的Drawable對象 |
| android:scrollTrackbVertical | 設(shè)置該組件垂直滾動(dòng)軌道對對應(yīng)的Drawable對象 |
| android:scrollbar | 設(shè)置該組件滾動(dòng)時(shí)顯示幾個(gè)滾動(dòng)條:none horizontal,vertical |
| android:soundEffectsEnabled | 設(shè)置該組件被單擊時(shí)是否使用音效 |
| android:tag | 為組件設(shè)置一個(gè)字符串tag值,可以通過view的getTag 獲取字符串,或通過findViewByTag查找該組件 |
| android:transformPivotX | 設(shè)置該組件旋轉(zhuǎn)時(shí)旋轉(zhuǎn)中心的X坐標(biāo) |
| android:transformPivotY | 設(shè)置該組件旋轉(zhuǎn)時(shí)旋轉(zhuǎn)中心的Y坐標(biāo) |
| android:translationX | 設(shè)置該組件在x方向上的位移 |
| android:translationY | 設(shè)置該組件在Y方向上的位移 |
| android:visibility | 設(shè)置該組件是否可見 |
?4 ViewGroup類
ViewGroup繼承了View類,故其可以當(dāng)作普通的View來使用;但ViewGroup是一個(gè)抽象類,實(shí)際都是使用ViewGroup的子類作為容器類。ViewGroup容器控制容器內(nèi)組件的分布依賴于ViewGroup.LayoutParams與ViewGroup.MarginLayoutParams兩個(gè)內(nèi)部類。這兩個(gè)內(nèi)部類也提供了一些XML屬性,ViewGroup容器內(nèi)子組件可以指定這些xml屬性。
4.1 ViewGroup.LayoutParams所支持的兩個(gè)xml屬性
| xml屬性 | 說明 |
| android:layout_height | 指定該子組件的布局高度fill_parent/match_parent/wrap_parent |
| android:layout_width | 指定該子組件的布局寬度fill_parent/match_parent/wrap_parent |
4.2 ViewGroup.MarginLayoutParams:控制子組件周圍的頁邊距
| xml屬性 | 說明 |
| android:layout_marginBottom | 指定該子組件下邊的頁邊距 |
| android:layout_marginLeft | 指定該子組件左邊的頁邊距 |
| android:layout_marginRight | 指定該子組件右邊的頁邊距 |
| android:layout_marginTop | 指定該子組件上邊的頁邊距 |
?
?
?
?
?
3 線性布局管理器LinearLayout
線性布局由LinearLayout類代表,將容器里的組件一個(gè)挨一個(gè)地排列起來,LinearLayout不會(huì)自動(dòng)換行,到末尾后剩余的組件將不會(huì)被顯示出來。LinearLayout支持的常用xml屬性及其說明。
| xml屬性 | 說明 |
| android:baselineAligned | 該屬性為false,將會(huì)阻止布局管理器與它的子元素基線對其 |
| android:divider | 設(shè)置垂直布局時(shí),兩個(gè)按鈕之間的分隔條 |
| android:gravity | 設(shè)置布局管理器內(nèi)組件的對齊方式。該屬性支持top/button/left/right/center_vertical/fill_vertical... |
| android:measureWithLargestChild | 當(dāng)屬性設(shè)置為true時(shí),所有帶權(quán)重的子元素都會(huì)具有最大元素的最小尺寸 |
| android:orientation | 設(shè)置布局管理器內(nèi)組件的排列方式vertical/horizontal默認(rèn)值 |
3.1 LinearLayout.LayoutParams控制
| xml屬性 | 說明 |
| android:layout_gravity | 指定該布局管理器內(nèi)子組件布局方式 |
| android:layout_weight | 指定該子元素在linearLayout中所占的權(quán)重 |
轉(zhuǎn)載于:https://www.cnblogs.com/penghuster/p/4878703.html
總結(jié)
以上是生活随笔為你收集整理的android应用的界面编程----View与ViewGroup的概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构与算法——选择排序
- 下一篇: ★★★★★★★★★★★★★★★★★★★★