現(xiàn)在很多短視頻都會用到seekBar去調(diào)節(jié)視頻進度,所以seekBar很有必要學(xué)習(xí)一下
本文的主要知識點有:
- 自定義seekBar的樣式;
- seekBar的簡單使用。
關(guān)于seekBar的樣式
系統(tǒng)提供的樣式實在是太丑了,所以一般使用seekBar的時候都會自定義樣式的,關(guān)于seekBar的自定義樣式,其實就是設(shè)置一個Drawable到seekBar中去,設(shè)置之后效果還是可以得,所以我們下面就開始擼代碼吧!
1.首先就是在布局文件中設(shè)置SeekBar的xml
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxHeight="3dp"
android:minHeight="3dp"
android:progressDrawable="@drawable/seekbar_bg"
android:thumb="@drawable/seekbar_thumb_bg"/>
這里說明幾點:
- maxHeight和minHeight 這個屬性如果不進行設(shè)置的話拖動條會很寬很寬的,著實難看;
- progressDrawable就是進度條的顏色設(shè)置,后面我會把具體寫法貼出來的;
- thumb是設(shè)置焦點和按下等一些操作使拖動按鈕改變的
2.seekbar的背景設(shè)置也就是上面的seekbar_bg
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<solid android:color="#ff51495e"/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<solid android:color="#f9062a"/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<solid android:color="#2db334"/>
</shape>
</clip>
</item>
</layer-list>
上面就是設(shè)置三層顏色的,其中background是底色,secondaryProgress是緩沖的顏色,progress是當前進度的顏色
3.設(shè)置thumb(也就是設(shè)置拖動時、獲取焦點等拖動塊的顏色)就是上面themb對應(yīng)的seekbar_thumb_bg
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--獲取焦點和沒有按下的時候-->
<item android:drawable="@drawable/seekbar_thumb_normal" android:state_focused="true" android:state_pressed="false"/>
<!--獲取焦點但按下的時候-->
<item android:drawable="@drawable/seekbar_thumb_pressed" android:state_focused="true" android:state_pressed="true"/>
<!--沒有獲取焦點按下的時候-->
<item android:drawable="@drawable/seekbar_thumb_pressed" android:state_focused="false" android:state_pressed="true"/>
<!--默認的時候-->
<item android:drawable="@drawable/seekbar_thumb_normal"/>
</selector>

seekbar_thumb_normal.png

seekbar_thumb_pressed.png
基本上就這些東西了,別覺得我顏色配的丑,我只是覺得這樣明顯一些哈哈!
關(guān)于seekBar的使用
其實作為android的這個空間,沒有什么主要的,就是一個監(jiān)聽和幾個設(shè)置進度的方法
1.常用方法
- setProgress(int value) 設(shè)置滑塊的位置
- setMax(int value) 設(shè)置進度條的最大長度
- setOnSeekBarChangeListener(OnSeekBarCHangeListener l) 設(shè)置SeekBar的進度改變事件
- onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) 這個主要是監(jiān)聽進度改變的,這里的progress就是當前的進度,這個fromUser我也沒弄懂是什么意思,還請知道的大神說一下!
- onStartTrackingTouch(SeekBar seekBar) 這個是監(jiān)聽開始拖動滾動條時的操作
- onStopTrackingTouch(SeekBar seekBar) 停止拖動滾動條的操作
- setSecondaryProgress(int secondaryProgress) 設(shè)置緩沖的進度
別的還真不知道寫什么了,以后有什么不知道的在往上面添加吧!