SeekBar
继承于ProgressBar
,实际上就是一个可以拖动的进度条。
在XML文件中创建SeekBar
SeekBar
的几个常用属性和ProgressBar
完全相同。android:max
用来指定最大进度,android:progress
用来指定当前显示的进度。如果有需要的话,还可以使用android:secondaryProgress
来指定第二进度。
<SeekBar
android:id="@+id/seek_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="50" />
为SeekBar设置监听器
SeekBar
使用的监听器是OnSeekBarChangedListener
,需要重写三个方法:
onStopTrackingTouch()
:在停止滑动的时候调用;onStartTrackingTouch()
:在开始滑动的时候调用;onProgressChanged()
:在正在拖动的时候调用。
在设置监听器之前,首先要对SeekBar
实例化。
seekBar = (SeekBar) findViewById(R.id.seek_bar);
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
textView1.setText("停止拖动");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
textView1.setText("开始拖动");
textView2.setText(seekBar.getProgress() + "");
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
textView1.setText("正在拖动");
textView2.setText(seekBar.getProgress() + "");
}
});
上面的代码用两个TextView
显示出了当前的状态和进度。
自定义SeekBar
自定义SeekBar
和自定义ProgressBar
很相似。但SeekBar
除了可以对android:progressDrawable
进行自定义以外,还可以对android:thumb
进行自定义。后者可以改变游标的样式。
android:thumb
通常也被定义为一个State List:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/select" android:state_pressed="true"/>
<item android:drawable="@drawable/select" android:state_selected="true"/>
<item android:drawable="@drawable/normal"/>
</selector>
最后,可以在style文件中修改android:thumb
属性,也可以直接在SeekBar
中指定android:thumb
属性:
android:thumb="@drawable/my_thumb"