Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android不常見系統控件一覽

Android不常見系統控件一覽

編輯:關於Android編程

1.概述:這裡所說的不常見只是相對於button,textView等這些非常常見的控件而言,並不是說真的很冷爆冷門。這些控件中有為提高效率的如merge、SurfaceView,也有為簡化代碼編寫的如GridLayout、SearchView,還有指導新式google風格的如Viewpage,ActionBar等。在此做一個總覽可按需檢取

2.merge:融合標簽,這個標簽和FrameLayout類似,只能通過重力設置布局(android:layout_gravity),所不同的是merge標簽沒有布局層。如下圖:上面的是框架布局所形成的布局層,下面的是merge標簽形成的布局層。我們知道在布局應該勁量減少布局的深度以達到優化內存的目的,merge標簽正是這個作用。

小提示:在android xml布局文件中開頭大寫的標簽必定有相對應的視圖類,而小寫的標簽都是功能性的標簽如include、fragment。

3.RadioGroup:這其實是一個常用的控件了。這裡提一下的原因是他繼承自線性布局,所以只能排一行,若想排兩行就得另辟蹊徑了。

4.RatingBar:評分控件,他繼承自ProgressBar,他通過將觸摸點對於的進度值轉換成分值。

5.Switch:開關控件,繼承自CompoundButton,有一個是否選中的狀態,其呈現有兩個部分,文字和狀態圖標,這些和CcheckBox都是很類似的,其中CcheckBox也是繼承自CompoundButton。

6.Space:空白控件,就是空白的一塊。他是一個輕量級的視圖,為什麼?分析源碼可知這個類的onDraw方法什麼也不做。所以他比設置一個invisible的控件填充視圖空隙是要省資源的多。

7.GridLayout:格子布局,GridLayout能輕松搞定相對或表格布局需復雜實現的功能如計算器,metro風格的界面。你不需要設置子視圖的寬高,只需要設置他所處的位置和所跨越的格子,當然你若設置了也是有用的,其中的效果和表格布局一樣是一個“長板效應”,即最長(寬)的那個格子決定這行(列)的高(寬)。這裡提幾個主要的屬性:

android:rowCount:格子布局有幾行

android:columnCount:格子布局有幾列

android:orientation:布局方向

android:layout_column:該格子處於第幾列

android:layout_row:該格子處於第幾行

android:layout_columnSpan:該格子占據幾列

android:layout_rowSpan:該格子占據幾行

使用格子布局你可以用這樣的思路來使用:把格子布局想象為一個充滿布局視圖後便另起一行(列)的線性布局。

8.SearchView:搜索控件,其效果是一個可以收縮的控件,也可以通過內容提供者添加搜索歷史和搜索建議。在googleplay的搜索功能就是他實現的。

9.SlidingDrawer:滑動抽屜布局,有微信搖一搖搖出妹子後的效果,不過這個控件已經被廢棄了,並沒有替代的控件。他由兩個部分組成,一個是可見部分,一個是隱藏部分(屜子)。可見部分有一個按鈕叫handle點擊他可以開關抽屜。

10.TabHost:選項卡,雖然沒有廢棄,但基本上和廢棄了差不多。現在實現選項卡功能的方式不可勝計,TabHost的確無優點可言。

11.Gallery:也是一個被廢棄了的控件,其替代控件是viewpage。

12.VideoView、MediaController:影音顯示和控制控件,VideoView是一個繼承自SurfaceView的控件(關於Surface下面還會重點講下),並內置了播放功能可以簡單的實現播放功能。MediaController是一個動態創建的(不要在布局文件中使用。因為他是浮動顯示的,像所有的影音軟件那樣碰下屏幕就在底部顯示,過段時間就自動影藏起來)並附加到一個VideoView的控件,他有暫停,播放等功能。

13.日期和時間控件:CalendarView日歷,Chronometer計時器,DigitalClock數字時鐘,AnalogClock鐘表儀器。

14.ViewAnimator:動畫切換控件,帶動畫的視圖切換控件,繼承自FrameLayout,他有兩個動畫屬性inAnimation/outAnimation來控制進出的現實效果,每次都只能顯示一個子視圖,你可以通過addView方法添加子視圖也可以在布局文件中添加子設圖。他的子類有ImageSwitcher,TextSwitcher,ViewSwitcher,這些子類都只能有兩個子視圖。ViewFlipper也是他的子類,可以添加多個子視圖,還可以像幻燈片那樣自動播放。

15.AdapterViewFlipper:帶適配器的視圖幻燈片,只要設置一個設配器便可像幻燈片那樣逐一顯示。和上面提到的ViewFlipper一樣都是可以自動播放的,當然也可以手動控制。

16.StackView:帶適配器的堆視圖,不是逐一顯示而是堆積層疊顯示。和AdapterViewFlipper一樣都繼承自AdapterViewAnimator類。

17.ViewStub:根視圖,一個按需動態顯示的控件。通過android:layout="@layout/"預設一個布局(只能接收布局文件且ViewStub必須置於ViewGroup內)。再用inflate方法顯示。他的優點是可以精確指定視圖的位置,他也是一個輕量級的,和Space控件一樣他的onDraw方法也是什麼也不做。其inflate方法實現的功能是 parent.addView(),所以他的父視圖必須是ViewGroup。

18.GestureOverlayView:手勢視圖控件,其效果如同手寫輸入法相似,亦可將手勢軌跡轉換為文件。

19.:表面視圖控件,android系統不允許非ui線程直接操作視圖,必須通過handle、異步這樣的方式更新,但是大量的視圖更新(比如游戲)勢必造成ui線程的堵塞。SurfaceView是一種非ui線程卻能在屏幕繪制的控件,這樣直接操作的方式大大提高了程序的響應效率。不僅如此據說這個控件是直接和硬件打交道的,所以速度非常之快。SurfaceView是縱深排序的,他總在所在窗口的後面顯示。如果SurfaceView的遮擋物是透明的,每次變化都會重新計算其透明效果這是影響性能的。可以通過SurfaceHolder來訪問控制SurfaceView,通過getHolder方法取得SurfaceHolder,SurfaceHolder可以添加SurfaceHolder.Callback回調接口來控制SurfaceView

20.TextureView:紋理視圖控件,用於顯示內容流,如視頻,3d動畫。和SurfaceView一樣他們都不是在ui線程繪畫的,不同的是TextureView有更多的操作,不會像SurfaceView一樣創建一個單獨的窗體,其實TextureView就是繼承自View的控件,只能用於硬件加速上。他通過TextureView.SurfaceTextureListener來獲取視圖。

21.ZoomButton/ZoomControls:縮放按鈕/縮放控制,區別是前者只可以縮或放,後者都可以。

22.TwoLineListItem:用於listview的一種特定格式,它需要兩個TextView(ID值為text1,text2),還有一個可選的第三個VIew(ID值為selectedIcon)。

23.DialerFilter:字義是撥號過濾,文檔也沒有解釋。可以通過設置setMode設置模式,主要由數字和信件兩種模式的組合。

24.其次還有ViewPage,ActionBar,PopMenu這些雖然是新控件,但是使用的頻率已經越來越高,特別是ActionBar可以說是谷歌風格設計的代表。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved