首先看下效果
1,android:splitTrack="false" 滑块背景透明
2,android:thumbOffset="0dp" 不让滑块超出 seebar宽度
3,progressDrawable 资源
<?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="@android:color/white"/> <corners android:radius="@dimen/volume_slider_height"/> </shape> </item> <item android:id="@android:id/progress"> <clip> <shape> <solid android:color="@android:color/transparent"/> </shape> </clip> </item> <!--二级进度--> <item android:id="@android:id/secondaryProgress"> <clip> <shape> <corners android:radius="50dp"/> <gradient android:endColor="#0066ff" android:centerColor="#0099ff" android:startColor="#00ffff" /> </shape> </clip> </item> </layer-list>
4,布局文件
<SeekBar android:id="@+id/volume_row_slider" android:layout_width="@dimen/slider_width" android:layout_height="@dimen/slider_height" android:layout_gravity="center_vertical" android:splitTrack="false" android:minHeight="@dimen/slider_height" android:progress="0" android:maxHeight="@dimen/slider_height" android:paddingLeft="0dp" android:paddingRight="0dp" android:thumbOffset="0dp" android:thumb="@drawable/ctouch_seekbar_thumb" android:progressDrawable="@drawable/volume_row_seekbar" />
android:maxHeight 为了使得seebar高度充满 设置的宽高
5,动态设置二级进度使进度和滑块位置匹配
float width=getResources().getDimension(R.dimen.slider_width); float height=getResources().getDimension(R.dimen.slider_height); int oneProgressDp=(int) (width/100); mSliderR =height/2*1.0f/oneProgressDp; mSecondProgress= (int) (100-mSliderR*2); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean b) { seekBar.setSecondaryProgress((int) (mSliderR+mSecondProgress*1.0/100*progress)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } });