第2七、2八、2九、30章學習總結
第27章 佈局
- (一) 線性佈局
線性佈局在開發中使用最多,具備垂直方向與水平方向的佈局方式,經過設置屬性「android:orientation」控制方向,屬性值垂直(vertical)和水平(horizontal),默認水平方向。
android:gravity:內部控件對齊方式,經常使用屬性值有center、center_vertical、center_horizontal、top、bottom、left、right等。
這個屬性在佈局組件RelativeLayout、TableLayout中也有使用,FrameLayout、AbsoluteLayout則沒有這個屬性。
center:居中顯示,這裏並非表示顯示在LinearLayout的中心,當LinearLayout線性方向爲垂直方向時,center表示水平居中,可是並不能垂直居中,此時等同於center_horizontal的做用;一樣當線性方向爲水平方向時,center表示垂直居中,等同於center_vertical。
top、bottom、left、right顧名思義爲內部控件居頂、低、左、右佈局。
這裏要與android:layout_gravity區分開,layout_gravity是用來設置自身相對於父元素的佈局。
android:layout_weight:權重,用來分配當前控件在剩餘空間的大小。
使用權重通常要把分配該權重方向的長度設置爲零,好比在水平方向分配權重,就把width設置爲零。
- (二) RelativeLayout
相對佈局可讓子控件相對於兄弟控件或父控件進行佈局,能夠設置子控件相對於兄弟控件或父控件進行上下左右對齊。
RelativeLayout能替換一些嵌套視圖,當咱們用LinearLayout來實現一個簡單的佈局但又使用了過多的嵌套時,就能夠考慮使用RelativeLayout從新佈局。
相對佈局就是必定要加Id才能管理。
- (三) FrameLayout
幀佈局或叫層佈局,從屏幕左上角按照層次堆疊方式佈局,後面的控件覆蓋前面的控件。
該佈局在開發中設計地圖常常用到,由於是按層次方式佈局,咱們須要實現層面顯示的樣式時就能夠
採用這種佈局方式,好比咱們要實現一個相似百度地圖的佈局,咱們移動的標誌是在一個圖層的上面。
在普通功能的軟件設計中用得也很少。層佈局主要應用就是地圖方面。
- (四) AbsoluteLayout
絕對佈局中將全部的子元素經過設置android:layout_x 和 android:layout_y屬性,將子元素的座標位置固定下來,即座標(android:layout_x, android:layout_y) ,layout_x用來表示橫座標,layout_y用來表示縱座標。屏幕左上角爲座標(0,0),橫向往右爲正方,縱向往下爲正方。實際應用中,這種佈局用的比較少,由於Android終端通常機型比較多,各自的屏幕大小。分辨率等可能都不同,若是用絕對佈局,可能致使在有的終端上顯示不全等。
- (五) TableLayout
表格佈局,適用於多行多列的佈局格式,每一個TableLayout是由多個TableRow組成,一個TableRow就表示TableLayout中的每一行,這一行能夠由多個子元素組成。實際上TableLayout和TableRow都是LineLayout線性佈局的子類。可是TableRow的參數android:orientation屬性值固定爲horizontal,且android:layout_width=MATCH_PARENT,android:layout_height=WRAP_CONTENT。因此TableRow實際是一個橫向的線性佈局,且因此子元素寬度和高度一致。
注意:在TableLayout中,單元格能夠爲空,可是不能跨列,意思是隻能不能有相鄰的單元格爲空。
TableLayout經常使用屬性:
android:shrinkColumns:設置可收縮的列,內容過多就收縮顯示到第二行
android:stretchColumns:設置可伸展的列,將空白區域填充滿整個列
android:collapseColumns:設置要隱藏的列
列的索引從0開始,shrinkColumns和stretchColumns能夠同時設置。
子控件經常使用屬性:
android:layout_column:第幾列
android:layout_span:佔據列數
- (六) GridLayout(網格佈局)
做爲android 4.0 後新增的一個佈局,與前面介紹過的TableLayout(表格佈局)其實有點大同小異;
不過新增了一些東東
①跟LinearLayout(線性佈局)同樣,他能夠設置容器中組件的對齊方式
②容器中的組件能夠跨多行也能夠跨多列(相比TableLayout直接放組件,佔一行相比較)
由於是android 4.0新增的,API Level 14,在這個版本之前的sdk都須要導入項目。這裏不解釋。
經常使用屬性:
排列對齊:
①設置組件的排列方式: android:orientation="" vertical(豎直,默認)或者horizontal(水平)
②設置組件的對齊方式: android:layout_gravity="" center,left,right,buttomandroid
設置佈局爲幾行幾列:
①設置有多少行: android:rowCount="4" //設置網格佈局有4行
②設置有多少列: android:columnCount="4" //設置網格佈局有4列app
設置某個組件位於幾行幾列
注:都是從0開始算的哦!
①組件在第幾行: android:layout_row = "1" //設置組件位於第二行
②組件在第幾列: android:layout_column = "2" //設置該組件位於第三列框架
設置某個組件橫跨幾行幾列:
①橫跨幾行: android:layout_rowSpan = "2" //縱向橫跨2行
②橫跨幾列: android:layout_columnSpan = "3" //橫向橫跨2列佈局
第28章監聽器
監聽器是一個存在於View類下的接口,通常以On******Llistener命名,實現該接口須要複寫相應的on****(View v)方法。
監聽器有三種實現方法:
1.在Activity中定義一個內部類繼承監聽器接口(這裏是OnClickListener)
2.實現匿名內部類。這種方法適合只但願對監聽器進行一次性使用的狀況,在該代碼塊運行完畢以後,該監聽器也就不復存在了。
3.利用佈局文件中的onClick屬性,並在實現文件中實現該方法。注意的是這裏的方法名應該和佈局文件中onClick屬性的方法名相同,該方法必須是public方法。學習
第29章操做欄
操做欄使用android.app.ActionBar類來表示。
通常來講,Android 默認的狀態欄樣式表現爲黑底白字,若是咱們應用的標題欄背景色也爲黑色,那就能與狀態欄很好地銜接在一塊兒,體驗極佳。反之,若是爲其餘的顏色,整個界面的呈現效果就會大打折扣。
幸運的是,Android 4.4 版本開始,系統提供了相應的 API,支持狀態欄全透明化,界面 Content View 能夠延伸到狀態欄上,填充狀態欄背景色。而在 Android 5.0 版本開始,系統在此基礎上作了進一步優化和規範,可以實現動態改變狀態欄背景色,在透明度上默認呈現爲半透明化,可定製化程度更高。優化
第30章 菜單
菜單的分類spa
菜單是Android應用中很是重要且常見的組成部分,主要能夠分爲三類:選項菜單、上下文菜單/上下文操做模式以及彈出菜單。它們的主要區別以下:設計
選項菜單是一個應用的主菜單項,用於放置對應用產生全局影響的操做,如搜索/設置。
上下文菜單是用戶長按某一元素時出現的浮動菜單。它提供的操做將影響所選內容,主要應用於列表中的每一項元素(如長按列表項彈出刪除對話框)。上下文操做模式將在屏幕頂部欄(菜單欄)顯示影響所選內容的操做選項,並容許用戶選擇多項,通常用於對列表類型的數據進行批量操做。
彈出菜單以垂直列表形式顯示一系列操做選項,通常由某一控件觸發,彈出菜單將顯示在對應控件的上方或下方。它適用於提供與特定內容相關的大量操做。
使用XML定義Menucode
理論上而言,使用XML和Java代碼均可以建立Menu。可是在實際開發中,每每經過XML文件定義Menu,這樣作有如下幾個好處:xml
使用XML能夠得到更清晰的菜單結構
將菜單內容與應用的邏輯代碼分離
可使用應用資源框架,爲不一樣的平臺版本、屏幕尺寸建立最合適的菜單(如對drawable、string等系統資源的使用)
要定義Menu,咱們首先須要在 res 文件夾下新建 menu 文件夾,它將用於存儲與Menu相關的全部XML文件。
咱們可使用