2015-04-24
SeekBar:
一種特殊的進度條,包含一個滑塊用於調節進度值。
API 中目錄結構如下:
包含幾種特殊的屬性:
1: max:設置進度條的最大值 。對應方法:setMax(int max); max=100,代表它的取值范圍是0-100,共101個值;
2: progress: 設置默認的進度值 對應有方法: setProgress(int progress);
3:secondaryProgresss : 設置默認緩沖值 對應的方法 setSecondaryProgress(int secondaryProgresss );
以上的方法和成員都是繼承自ProgressBar;而SeekBar自帶的特殊屬性如下:
4:thumb : 滑塊屬性,應該對應是一個drawable資源;
5:progressDrawable,表示SeekBar的背景圖片
6:SeekBar類包含一個setOnSeekBarChangeListener的方法。當用戶使用seekBar的時候會觸動該方法,一般用於設置監聽事件
SeekBar.OnSeekBarChangeListener:是一個public static interface 。包含有三個方法:
用戶在使用時必須實現該接口中的方法,或者使用匿名內部類。
二:用戶自定義的SeekBar樣式:
當前的SeekBar不能滿足用戶需求的時候,我們可以自定義SeekBar來實現各自想要的功能和視覺體驗。
簡單的自定義:在xml中自定義,可以實現不同的背景圖和滑塊,讓SeekBar 的UI體驗更好。
復雜的自定義:用java代碼重寫MySeekBar代碼extends SeekBar;可以給MySeekBar添加一些控件和功能。
先看看簡單的實現:
自定義SeekBar的滑塊定義為:android:thumb="@drawable/thumb_bar"。
這時需要在res/drawable文件下自定義一個thumb_bar.xml
它調用的thumb_bar.xml的內容如下
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 按下狀態 -->
<item android:state_pressed="true"
android:drawable="@drawable/thumb_dn" />
<!-- 焦點狀態 -->
<item android:state_focused="true"
android:drawable="@drawable/thumb_up" />
<!-- 默認狀態 -->
<item android:drawable="@drawable/thumb_up" />
</selector>
//注釋:以上代碼來源網上
注意圖中的Selector 標記和狀態標記。通過Selector可以在不同狀態中選擇不同的圖片,比如當用戶按下時,用A照片,不按時用B照片。
自定義SeekBar背景圖的實現:android:progressDrawable="@drawable/bg_bar"。
與自定義的滑塊實現機制差不多:都是在屬性中引用一個XML文件,然后在xml文件中自定義圖片。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 背景圖 -->
<item android:id="@+android:id/background" android:drawable="@drawable/bar_dn" />
<!-- 第二進度圖 -->
<item android:id="@+android:id/SecondaryProgress" android:drawable="@drawable/bar_dn" />
<!-- 進度度 -->
<item android:id="@+android:id/progress" android:drawable="@drawable/bar_up" />
</layer-list>
===============================================================
標記的作用:layer-list:layer-list可以將多個圖片按照順序層疊起來。其中的Item有兩個重要的xml屬性:android:id 和 android:drawable屬性。
//注釋:圖片資源;來源網絡
最終結果顯示如下: