滑片控件,图像主要由4个部分组成 background、progessDrawable、secondProgressDrawable以及thumb
基本属性在.xml文件中可以定义
<SeekBar android:id="@+id/seek"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="50"
android:secondaryProgress="75" />
在.java中 可以通过通过以下函数进行需要的操作
mSeekBar = (SeekBar)findViewById(R.id.seek);
mSeekBar.setOnSeekBarChangeListener(this);
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) { //当thumb移动时
}
public void onStartTrackingTouch(SeekBar seekBar) { //当thumb刚开始移动
}
public void onStopTrackingTouch(SeekBar seekBar) { //当thumb结束移动
mTrackingText.setText(getString(R.string.seekbar_tracking_off));
}
当自定义图片文件时可以通过.xml文件进行设置
android:thumb="@drawable/thumb"
android:progressDrawable="@drawable/progress"
在@drawable/thumb.xml中,设置thumb在不同状态下加载的图片或是不同状态唯一图片,则不需写新建thumb.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_pressed"/>
<item
android:state_focused="false"
android:state_pressed="false"
android:drawable="@drawable/thumb_normal"/>
</selector>
在@drawable/progressDrawable.xml中,设置background以及progress图像
<?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>
<corners android:radius="5dip" />
<gradient
android:startColor="#ff9d9e9d"
android:centerColor="#ff5a5d5a"
android:centerY="0.75"
android:endColor="#ff747674"
android:angle="270"
/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#80ffd300"
android:centerColor="#80ffb600"
android:centerY="0.75"
android:endColor="#a0ffcb00"
android:angle="270"
/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#ffffd300"
android:centerColor="#ffffb600"
android:centerY="0.75"
android:endColor="#ffffcb00"
android:angle="270"
/>
</shape>
</clip>
</item>
</layer-list>
android:drawable="@drawable/progress_mediumbacon" 也可以通过简单加载图片的方式
过程中有一些小的问题:
1.加载.9文件 <nine-patch android:src="@drawable/progress"/>
2.自定子图像时,调整progress的高度时 thumb无法中心对齐,高度通过设置最大最小高度来调整
<SeekBar android:maxHeight = "5dip"
android:minHight="5dip"
3.加载thumb图片过大,在移动到最左端或是最右端时,可能出现被切效果,需要通过设置thumbOffset来调节
<SeekBar android:thumbOffset ="7dip"