1.xml布局
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_below="@id/tv_address"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginLeft="@dimen/dp_50"
android:layout_marginRight="@dimen/dp_50"
>
<TextView
android:id="@+id/tv_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0M"
android:textSize="@dimen/sp_12"
android:textColor="#5f5efe"
android:textStyle="bold"
android:layout_gravity="center"
/>
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_30"
android:max="1000"
android:thumb="@drawable/thumb"
android:progressDrawable="@drawable/seekbar_light"
android:maxHeight="@dimen/dp_1_5"
android:minHeight="@dimen/dp_1_5"
/>
</LinearLayout>
2.thumb.xml drawable里面 这个里面用来改变自定义滑动条的大小
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape>
<size
android:height="17dp"
android:width="17dp" />
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item android:drawable="@mipmap/places_pop_circle"/>
</layer-list>
3.seekbar_light.xml drawable里面 滑动的时候划过的距离变色
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<gradient
android:startColor="#dddddd"
android:centerColor="#dddddd"
android:endColor="#dddddd" />
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<gradient
android:startColor="#5f5efe"
android:centerColor="#5f5efe"
android:endColor="#5f5efe"
/>
</shape>
</clip>
</item>
</layer-list>
4.activity里面代码
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(progress>0 && progress<50){
progress = 0;
}else if(progress>50 && progress<=150){
progress = 100;
}else if(progress>150 && progress<=250){
progress = 200;
}else if(progress>250 && progress<=350){
progress = 300;
}else if(progress>350 && progress<=450){
progress = 400;
}else if(progress>450 && progress<=550){
progress = 500;
}else if(progress>550 && progress<=650){
progress = 600;
}else if(progress>650 && progress<=750){
progress = 700;
}else if(progress>750 && progress<=850){
progress = 800;
}else if(progress>=850 && progress<=950){
progress = 900;
}else if(progress>950){
progress = 1000;
}
tv_distance.setText(progress+"M");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int seekProgress = mSeekBar.getProgress();
if(seekProgress<50){
mSeekBar.setProgress(0);
}else if(seekProgress>=50 && seekProgress<150){
mSeekBar.setProgress(100);
}else if(seekProgress>=150 && seekProgress<250){
mSeekBar.setProgress(200);
}else if(seekProgress>=250 && seekProgress<350){
mSeekBar.setProgress(300);
}else if(seekProgress>=350 && seekProgress<450){
mSeekBar.setProgress(400);
}else if(seekProgress>=450 && seekProgress<550){
mSeekBar.setProgress(500);
}else if(seekProgress>=550 && seekProgress<650){
mSeekBar.setProgress(600);
}else if(seekProgress>=650 && seekProgress<750){
mSeekBar.setProgress(700);
}else if(seekProgress>=750 && seekProgress<850){
mSeekBar.setProgress(800);
}else if(seekProgress>=850 && seekProgress<950){
mSeekBar.setProgress(900);
}else if(seekProgress>=950){
mSeekBar.setProgress(1000);
}
}
});