水平进度条:自定义SeekBar背景
水平进度条:解决系统SeekBar宽度不准确、滑动颜色显示不准的问题
水平进度条:RangeSeekBar具体使用
-
先看效果:
-
添加依赖:
maven {
url 'https://jitpack.io' }
implementation 'com.github.Jay-Goo:RangeSeekBar:v3.0.0'
- 布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginRight="10px"
android:layout_toLeftOf="@id/rsb"
android:text="00:00"
android:textColor="@color/white"
android:textSize="48px" />
<com.jaygoo.widget.RangeSeekBar
android:id="@+id/rsb"
android:layout_width="810px"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
app:rsb_gravity="center"
app:rsb_mode="single"
app:rsb_progress_drawable="@drawable/shape_seekbar_progress"
app:rsb_progress_drawable_default="@drawable/shape_seekbar_progress_default"
app:rsb_progress_height="8px"
app:rsb_thumb_drawable="@drawable/seekbar_thumb"
app:rsb_thumb_height="44px"
app:rsb_thumb_width="44px" />
<TextView
android:id="@+id/tv_listen_duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10px"
android:layout_toRightOf="@id/rsb"
android:text="05:00"
android:textColor="@color/white"
android:textSize="48px" />
</RelativeLayout>
- 滑道背景色shape文件:
shape_seekbar_progress_default.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#1A1A1A"/>
</shape>
- 进度条颜色文件:
shape_seekbar_progress.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#8831C27C" />
</shape>
- 滑动按钮背景文件:
seekbar_thumb.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:useLevel="false">
<solid android:color="#ffffff" />
<size
android:width="44px"
android:height="44px" />
</shape>
- 根据不同的音乐、视频文件,代码动态设置不同的最大值,以及设置监听:
public class MainActivity extends AppCompatActivity {
RangeSeekBar rangeSeekBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rangeSeekBar = findViewById(R.id.rsb);
rangeSeekBar.setRange(0f, 200f); //代码动态设置最大值
rangeSeekBar.setProgress(50f); //设置当前进度
rangeSeekBar.setOnRangeChangedListener(new OnRangeChangedListener() {
@Override
public void onRangeChanged(RangeSeekBar view, float leftValue, float rightValue, boolean isFromUser) {
}
@Override
public void onStartTrackingTouch(RangeSeekBar view, boolean isLeft) {
}
@Override
public void onStopTrackingTouch(RangeSeekBar view, boolean isLeft) {
}
});
}
}