天天看點

安卓學習基礎篇——進階使用者界面設計(一)進階控件拖動條和星級評分條

進階控件

自動完成文本(AutoCompleteTextView)

自動完成文本用于實作允許使用者輸入一定字元後,顯示一個下拉菜單,提供使用者從中選擇,當使用者選擇某個選項後,按使用者選擇自動填寫該文本框。AutoCompleteTextView繼承自EditText,是以它支援EditText提供的屬性,同時 ,它還支援其他一些屬性。      

進度條(ProgressBar)

當一個應用程式在背景執行時,前台界面不會有任何資訊,這時使用者根本不知道程式是否在執行以及執行進度等,是以需要使用進度條來提示程式執行的進度。在Android中,進度條用于向使用者顯示某個耗時操作完成的百分比。      
進度條支援的屬性:      
1.android:max   用于設定進度條的最大值。      
2.andorid:progress   用于指定進度條已完成的進度值      
3.android:progressDrawable   用于設定進度條軌道的繪制形式      
除了以上的屬性之外,進度條元件還提供了下面兩個常用方法用于操作進度。      
1.setProgress(int progress)方法:用于設定進度完成的百分比      
2.incrementProgress(int diff)方法:用于設定進度條的進度增加或減少。當參數值為正數時,表示進度增加;為負數時,表示進度減少。      
如下為一個xml檔案中的一個進度條例子:      
<ProgressBar 
        	android:id="@+id/progress_bar"
       	 	android:layout_width="fill_parent"
        	android:layout_height="wrap_content"
        	android:max="100"
        	style="@android:style/Widget.ProgressBar.Horizontal"/>
           
其中style屬性用來指定進度條的風格,一下為一些常用的style屬性值:
           
style="@android:style/Widget.ProgressBar.Small"        //小型圓形進度條
style="@android:style/Widget.ProgressBar.Inverse"        //中型圓形進度條
style="@android:style/Widget.ProgressBar.Large"       //大型圓形進度條
style="@android:style/Widget.ProgressBar.Large.Inverse"  //大型圓形進度條
style="@android:style/Widget.ProgressBar.Horizontal"     //水準進度條
style="@android:style/Widget.ProgressBar.Small.Inverse"   //小型圓形進度條
其中,帶有Inverse參數和不帶有Inverse參數的style屬性差別在于:當進度條控件所在的界面背景顔色為白色時,需要使用帶有Inverse參數的style屬性,否則進度條将看不見。        


        

拖動條和星級評分條

拖動條(Seek Bar)

拖動條與進度條類似,所不同的是,拖動條允許使用者拖動滑塊來改變值,通常用于實作對某種數值的調節。例如,調節圖檔的透明度或是音量等。      
可以在xml檔案中添加一個<SeekBar>标簽來添加一個拖動條。      
SeekBar元件允許使用者改變拖動滑塊的外觀,這可以使用android:thumb屬性實作,該屬性的屬性值為一個Drawable對象,該Drawable對象将作為自定義滑塊。      
由于拖動條可以被使用者控制,是以需要為其添加OnSeekBarChangeListener監聽器。      

星級評分條(RatingBar)

xml屬性如下: android:isIndicator 用于指定該星級評分條是否允許使用者改變,true為不允許改變 android:numStars 用于指定該星級評分條總共有幾個星星 android:rating 用于指定該星級評分條預設的星級 android:stepSize 用于指定每次最少需要改變多少個星級,預設為0.5個 除了如上幾個屬性,星級評分條還提供了如下3個比較常用的方法: getRating()方法:用于擷取登記,表示選中了幾顆星; getStepSize()方法:用于擷取每次最少要改變多少個星級; getProgress()方法:用于擷取進度,擷取到的值為getRating()方法傳回值與getStepSize()方法傳回值之積;

頁籤

頁籤主要由TabHost、TabWidget和FrameLayout3個元件組成,用于實作一個多标簽頁的使用者界面,通過它可以将一個複雜的對話框分割成若幹個标簽頁,實作對資訊的分類顯示和管理。 在Android中實作頁籤的一般步驟如下: 1.在布局檔案中添加頁籤所需的TabHost、TabWidget和FrameLayout元件; 2.編寫各标簽中要顯示内容所對應的XML布局檔案; 3.在Activity中,擷取并初始化TabHost元件; 4.為TabHost對象添加标簽頁; 其中第一步在xml檔案中添加頁籤的步驟如下: 1.首先添加一個TabHost元件,并在該元件下添加布局管理器; 2.在布局管理器中添加TabWidget元件作為标簽組和一個FrameLayout元件作為标簽内容;示例代碼如下:
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" >

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical">
        <TabWidget 
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
        </FrameLayout>
    </LinearLayout>

</TabHost>
           
其中 應用xml布局檔案添加頁籤時,必須使用系統的id來為各元件指定id屬性,否則将出現異常。
雜記:對于一個沒有被載入或者想要動态載入的界面, 都需要使用inflate來載入. 
   
    首先我們要知道,什麼是已經被載入的layout,什麼是還沒有載入的.我們啟動一個應用,與入口Activity相關的layout{常見的是main.xml}就是被載入的,即在Oncreate()中的.而其他的layout是沒有被載入的.就要動态載入了或通過另一個activity.
   
   
    
     在實際開發種LayoutInflater這個類還是非常有用的,它的作用類似于 findViewById(),
    
    
     不同點是LayoutInflater是用來找layout下xml布局檔案,并且執行個體化!而findViewById()是找具體xml下的具體 widget控件.
    
         

圖像切換器(ImageSwitch)

用于實作類似Windows作業系統下的圖檔檢視器。下一站、上一張的功能。在使用ImageSwtich時,必須實作ViewSwitch.ViewFactory接口,并通過makeView()方法來建立用于顯示圖檔的ImageView。makeView()方法将傳回一個顯示圖檔的ImageView。在使用圖檔切換器時,還有一個方法非常重要,就是setImageResource()方法,該方法用于指定要在ImageSwitch中顯示的圖檔資源。

網格視圖(GridView)

網格視圖(GridView)是按照行、列分布的方式來顯示多個元件,通常用于顯示圖檔或是圖示等,在使用網格視圖時,首先要在螢幕上添加GridView元件,通常用<GridView>在xml檔案中标記。 ridView支援的xml屬性如下: 1.andorid:columnWidth 用于設定列的寬度 2.android:gravity 用于設定對齊方式 3.android:horizontalSpacing 用于設定各元素之間的水準距離 4.android:numColumns 用于設定列數,其屬性值通常為大于1的值,如果隻有一列,那麼最好使用ListView實作 5.android:stretchMode 用于設定拉伸模式,其中屬性值可以是none(不拉伸),spacingWidth(僅拉伸元素之間的距離),colunmnWidth(僅拉伸表格元素本身)或spacingWidthUniform(表格元素本身、元素之間的間距一起拉伸) 6.android:verticalSpacing 用于設定各元素之間的垂直距離 GridView與ListView類似,都需要通過Adapter來提供要顯示的資料。在使用GridView元件時,通常使用SimpleAdapter或者BaseAdapter類為GridView元件提供資料。

畫廊視圖(Gallery)

畫廊視圖表示,能夠按照水準方向顯示内容,并且可以用手指直接拖動圖檔移動,一般用來浏覽圖檔,被選中的選項位于中間,并且可以響應事件顯示資訊。 Gallery支援的xml屬性如下: 1.android:animationDuration 用于設定清單項切換時的動畫持續時間 2.android:gravity 用于設定對齊方式 3.android:spacing 用于設定清單項之間的間距 4.android:unselectedAlpha 用于設定沒有選中的清單項的透明度 使用畫廊視圖也要使用Adapter提供要顯示的資料。通常使用BaseAdapter類為Gallery提供資料。

繼續閱讀