一般用于一些音乐,视频类的软件项目里面会有需求,后面可能会写一些自定义的seekbar效果
运行效果:
(1)在activity_main里面添加如下代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bg"
android:padding="10dp">
<SeekBar
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/text1"
android:maxHeight="2dp"
android:minHeight="2dp"
android:paddingBottom="3dp"
android:paddingLeft="12dp"
android:max="60"
android:paddingRight="12dp"
android:paddingTop="3dp"
android:progressDrawable="@drawable/layer_progress"
android:thumb="@drawable/shape_circle" />
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:gravity="left"
android:padding="6dp"
android:text="Value:0"
android:textColor="@color/white"
android:textSize="20sp" />
</RelativeLayout>
(2)在drawable文件夹里面新建shape_circle.xml,这个文件用于控制圆点的颜色和大小
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- solid表示远的填充色 -->
<solid android:color="@color/white" />
<!-- stroke则代表远的边框线 -->
<stroke
android:width="1dp"
android:color="@color/white" />
<!-- size控制高宽 -->
<size
android:height="20dp"
android:width="20dp" />
</shape>
(3)在drawable文件夹里面新建layer_progress.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">
<shape>
<corners android:radius="3dp" />
<solid android:color="#282B32" />
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="3dp" />
<solid android:color="#DE5145" />
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="3dp" />
<solid android:color="#ff9933" />
</shape>
</clip>
</item>
</layer-list>
(4)在MainActivity文件中监听进度条的值,并显示
public class MainActivity extends AppCompatActivity {
private SeekBar seekBar;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seekBar = (SeekBar) findViewById(R.id.progress);
textView = (TextView) findViewById(R.id.text1);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// 当拖动条的滑块位置发生改变时触发该方法,在这里直接使用参数progress,即当前滑块代表的进度值
textView.setText("Value:" + Integer.toString(progress));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Log.e("------------", "开始滑动!");
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Log.e("------------", "停止滑动!");
}
});
}
}