第五講:用戶界面 View(一)

1、什麼是Viewandroid

咱們上節課說,Activity是Android程序的顯示層,每個顯示窗口都是一個Activity;但是Activity自己沒法顯示在屏幕上,咱們能夠把它理解成是一個抽象層,一個殼子;就譬如一個JSP頁面,它自己並無顯示出來任何東西,負責顯示的是他生成的HTML標籤。那麼Android裏誰纔是真正顯示出來的部分?--是View和ViewGroup,而ViewGroup其實也是View的子類。web

有了上述的概念,咱們如今能夠講明白一個Activity中的顯示元素是如何顯示出來的了。首先UI組件是按層次結構來由外到內的方式逐步展現的。要將一個屏幕元素層次樹綁定在一個屏幕上顯示,Activity會調用它的setContentView()方法而且傳入這個層次樹的根節點引用。當Activity被激活而且得到焦點時,系統會通知activity而且請求根節點去計算並繪製樹,根節點就會請求它的子節點去繪製它們本身。每一個樹上的ViewGroup節點會負責繪製它的子節點。ViewGroup會計算它的有效空間,佈局全部的子顯示對象,並最終調用全部的子顯示對象的 Draw()方法來繪製顯示對象。各個子顯示對象能夠向父對象請求它們在佈局中的大小和位置,但最終決定各個子顯示對象的大小和位置的是父對象。佈局

Android程序藉助View和ViewGroup對象來構建用戶界面。Android提供了比HTML多得多的,現成的用戶界面組件,譬如如今網站上常見的五角星評分效果組件RatingBar。RatingBar的顯示效果以下圖所示:網站

image

2、經常使用Layout介紹ui

ViewGroup是個特殊的View,它繼承於Android.view.View。它的功能就是裝載和管理下一層的View對象或ViewGroup對象,也就說他是一個容納其它元素的的容器。ViewGroup是佈局管理器(layout)及view容器的基類。 ViewGroup中,還定義了一個嵌套類ViewGroup.LayoutParams。這個類定義了一個顯示對象的位置、大小等屬性,view經過LayoutParams中的這些屬性值來告訴父級,它們將如何放置。orm

image

ViewGroup是一個抽象類,因此真正充當容器的是他的子類們。咱們在這裏將介紹 幀佈局FrameLayout,線性佈局LinearLayout,絕對佈局AbsoluteLayout,相對佈局RelativeLayout,表格佈局TableLayout等幾個經常使用佈局,大約要分3講講完。xml

一、幀佈局 FrameLayout:對象

是最簡單的一個佈局對象。在他裏面的的全部顯示對象愛你過都將固定在屏幕的左上角,不能指定位置,但容許有多個顯示對象,只是後一個會直接覆蓋在前一個之上顯示,會把前面的組件部分或所有擋住。下圖的例子裏,FrameLayout中放了3個ImageView組件,第一個是藍色的,第二個是綠色的,第三個是樹狀圖(透明的png格式)。ImageView就至關於Html中的img標籤,接下來會講到這個組件。繼承

下面看一個FrameLayout的例子:utf-8

<?xml version=」1.0″ encoding=」utf-8″?>

<FrameLayout android:id=」@+id/FrameLayout01″
android:layout_width=」fill_parent」 android:layout_height=」fill_parent」
xmlns:android=」http://schemas.android.com/apk/res/android」>

<ImageView android:id=」@+id/ImageView01″ android:src=」@drawable/p1″
android:layout_width=」wrap_content」 android:layout_height=」wrap_content」></ImageView>

<ImageView android:id=」@+id/ImageView02″ android:src=」@drawable/p2″
android:layout_width=」wrap_content」 android:layout_height=」wrap_content」></ImageView>

<ImageView android:id=」@+id/ImageView03″ android:src=」@drawable/p3″
android:layout_width=」wrap_content」 android:layout_height=」wrap_content」></ImageView>

</FrameLayout>

完整的代碼在PPT附帶的目錄中,須要的朋友能夠留言向我索要。

image
(FrameLayout的顯示效果)

二、線性佈局 LinearLayout:

線性佈局是全部佈局中最經常使用的類之一,也是RadioGroup, TabWidget, TableLayout, TableRow, ZoomControls類的父類。LinearLayout可讓它的子元素垂直或水平的方式排成一行(不設置方向的時候默認按照垂直方向排列)。

下面看一個LinearLayout的例子:別被例子的長度嚇住,仔細看一下其實就是一個LinearLayout中放5個TextView標籤而已,TextView至關於Html標籤中的Label。

<?xml version=」1.0″ encoding=」utf-8″?>
<LinearLayout xmlns:android=」http://schemas.android.com/apk/res/android」
android:orientation=」vertical」
android:layout_width=」fill_parent」
android:layout_height=」fill_parent」
android:gravity=」center_horizontal」
>
<TextView
android:layout_width=」fill_parent」
android:layout_height=」wrap_content」
android:text=」給小寶寶起個名字:」
android:textSize=」20px」
android:textColor=」#0ff」
android:background=」#333″

/>
<TextView
android:layout_width=」wrap_content」
android:layout_height=」wrap_content」
android:text=」遙遙是男孩的小名」
android:textSize=」20px」
android:textColor=」#0f0″
android:background=」#eee」
android:layout_weight=」3″
/>
<TextView
android:layout_width=」wrap_content」
android:layout_height=」wrap_content」
android:text=」瑤瑤是女孩的小名」
android:textColor=」#00f」
android:textSize=」20px」
android:background=」#ccc」
android:layout_weight=」1″
/>

<TextView
android:layout_width=」fill_parent」
android:layout_height=」wrap_content」
android:text=」海因是男孩的大名」
android:textColor=」#f33″
android:textSize=」20px」
android:background=」#888″
android:layout_weight=」1″
/>
<TextView
android:layout_width=」fill_parent」
android:layout_height=」wrap_content」
android:text=」海音是女孩的大名」
android:textColor=」#ff3″
android:textSize=」20px」
android:background=」#333″
android:layout_weight=」1″
/>
</LinearLayout>

下圖是顯示效果:

image

好吧下次再講。

相關文章
相關標籤/搜索