Android攻城獅SeekBar制作可拖動的進度條


SeekBar介紹
聽歌的時候,我們常常喜歡快進或者退回到某一時間段、喜歡控制音量大小。SeekBar可以通過滑塊的位置來標識數值,而且拖動條允許用戶拖動滑塊來改變進度值的大小。
--------------------
SeekBar的主要屬性和方法:
由於 SeekBar 是 PrograssBar 的子類,所以方法和屬性也是類似的。
(1)setMax ——設置SeekBar的最大數值
(2)setProgress ——設置SeekBar當前的數值
(3)setSecondaryProgress——設置SeekBar的第二數值,即當前拖動條推薦的數值。
-----------------------
SeekBar的事件
由於拖動條可以被用戶控制,所以需要對其進行事件監聽,這就需要實現 SeekBar.OnSeekBarChangeListener接口。此接口共需要監聽三個事件:
	數值改變 onProgressChanged
	開始拖動 onStartTrackingTouch
	停止拖動 onStopTrackingTouch

使用SeekBar制作可拖動的進度條的步驟:
1. 在main.xml中添加標簽 SeekBar 和兩個 TextView用於顯示狀態。
2. 在MainActivity中創建並初始化SeekBsr和TextView.
3. 為了監聽用戶的手勢,需要監聽器,令 MainActivity 實現接口 OnSeekBarChangeListener,並重寫3個方法:
    //數值改變的時候調用
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
        textView1.setText("正在拖動");
        textView2.setText("當前進度:"+progress);
    }
    //開始拖動的時候調用
    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        textView1.setText("開始拖動");
    }
    //停止拖動的時候調用
    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        textView1.setText("停止拖動");
    }
4. SeekBar加載監聽器。



自定義SeekBar進度條
SeekBar類似之前學的ProgressBar,都可以改變進度條的樣式,但SeekBar還能改變滑塊的樣式。
android:progressDrawable="@drawable/seekbar_img"(改變進度條的樣式)
android:thumb="@drawable/thumb"(改變滑塊的樣式)

自定義滑塊樣式的步驟:
1. 在 drawale文件夾中創建資源文件 normal.png、select.png 作為滑塊的模型;
2. 在 drawale文件夾中創建選擇器selector資源文件 my_thumb.xml,在selector中添加代碼:
<!--按壓的情況下-->
<item android:drawable="@drawable/select" android:state_pressed="true" android:state_window_focused="true"></item>
<!--獲取到焦點的情況下-->
<item android:drawable="@drawable/select" android:state_focused="true" android:state_window_focused="true"></item>
<!--被選中的情況下-->
<item android:drawable="@drawable/select" android:state_selected="true" android:state_window_focused="true"></item>
<!--無操作的情況下-->
<item android:drawable="@drawable/normal"></item>
3. 在 main.xml 下的 SeekBar 添加屬性:
android:thumb="@drawable/my_thumb"。
-------------------------
自定義進度條樣式的步驟:
和前面學的 ProgressBar 完全一樣。
添加完需要的資源文件后,在 SeekBar中添加屬性:android:progressDrawable="@drawable/progress_bar"

 1 //可拖動的進度條,它的監聽事件:OnSeekBarChangeListener 
 2 //自定義進度條滑塊樣式————在drawable文件夾下
 3 public class MainActivity extends Activity implements OnSeekBarChangeListener {
 4     private SeekBar seekBar;
 5     private TextView textView, textView2;
 6 
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState) {
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.main);
11         seekBar = (SeekBar) findViewById(R.id.seekbar);
12         textView = (TextView) findViewById(R.id.text1);
13         textView2 = (TextView) findViewById(R.id.text2);
14         seekBar.setOnSeekBarChangeListener(this);
15 
16     }
17 
18     // 數值改變
19     @Override
20     public void onProgressChanged(SeekBar seekBar, int progress,
21             boolean fromUser) {
22         // TODO Auto-generated method stub
23         textView.setText("正在拖動");
24         textView2.setText("當前數值:" + progress);
25 
26     }
27 
28     // 開始拖動
29     @Override
30     public void onStartTrackingTouch(SeekBar seekBar) {
31         // TODO Auto-generated method stub
32         textView.setText("開始拖動");
33     }
34 
35     // 停止拖動
36     @Override
37     public void onStopTrackingTouch(SeekBar seekBar) {
38         // TODO Auto-generated method stub
39         textView.setText("停止拖動");
40     }
41 
42 }
----自定義滑塊的選擇器------
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/yes" android:state_pressed="true" android:state_window_focused="true"></item>
    <item android:drawable="@drawable/yes" android:state_focused="true" android:state_window_focused="true"></item>
    <item android:drawable="@drawable/yes" android:state_selected="true" android:state_window_focused="true"></item>
    <item android:drawable="@drawable/no" ></item>

</selector>

 



 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM