SeekBar的简单使用
##XML:
<SeekBar
android:id="@+id/XXXXXXr"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
属性设置:
android:maxHeight="1dip"//进度条的高度
android:progressDrawable="@drawable/xxxx"//自定义进度条背景
android:thumb="@drawable/xxxx"//自定义拖动Button
android:max="100"//最大进度值
android:progress="50"//当前进度值
##Java:
setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
//fromTouch:进度改变是否是通过用户Touch
//progress:设置的值
}
});
注意,在代码中使用setMax,setProgress方法,会回调onProgressChanged,可以根据业务需求,判断fromTouch来获取是否是用户调节。
##简单样式:
android:thumb,拖动条Button,在res/drawable下定义seekbar_thumb.xml文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 按下状态-->
<item
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/xxxx" />
<!-- 普通无焦点状态 -拖动按钮-->
<item
android:state_focused="false"
android:state_pressed="false"
android:drawable="@drawable/xxx" />
<!-- 有焦点状态-->
<item
android:state_focused="true"
android:state_pressed="false"
android:drawable="@drawable/xxxx" />
<!-- 有焦点 -->
<item
android:state_focused="true"
android:drawable="@drawable/xxxx"/>
</selector>
如果不需要按键背景selector,可以直接 android:thumb=“@drawable/xxx”设置图片
android:progressDrawable,拖动条背景样式,在res/drawable下定义seekbar_define_style.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/"/>
<!-- 拖动时显示 -->
<item
android:id="@android:id/progress"
android:drawable="@drawable/"/><pre name="code" class="html">
<!-- 第二个进度显示 -->
<item android:id="@android:id/secondaryProgress" android:drawable="@drawable/"/>
</layer-list>
##颜色样式:
<?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>
<gradient
android:startColor="#ffffffff"
android:centerColor="#ff000000"
android:endColor="#ff808A87"
android:centerY="0.45"
android:angle="270"/>
</shape>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<gradient
android:startColor="#ffffffff"
android:centerColor="#ffFFFF00"
android:endColor="#ffAABD00"
android:centerY="0.45"
android:angle="270"/>
</shape>
</clip>
</item>
</layer-list>
颜色配置,如果背景单一,可以startColor,centerColor,endColor颜色统一
自定义样式后,拖动球在两端如果显示不完全,可以设置paddingLeft和paddingRight
##配合selector:
SeekBar属性android:progressDrawable="@drawable/selector_seekbar"
selector文件:selector_seekbar.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- seekbar 未激活-->
<item android:drawable="@drawable/xxxxx_fales" android:state_enabled="false"/>
<!-- seekbar 已激活-->
<item android:drawable="@drawable/xxxxx_true" android:state_enabled="true"/>
</selector>
item内对应的@drawable是layer-list xml文件,在layer-list.xml 内可以自行设置对应颜色,比如激活时seekbar的背景、进度条颜色等。