近期项目中涉及到音频录制进度控制,用到了SeekBar。
需求录制暂停时可拖动进度条进行播放,配置如下xml,得到SeekBar的UI:
record.png
<?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="#ECF0F1" />
</shape>
</item>
<!-- 播放时已录制进度条背景 -->
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="3dp" />
<solid android:color="#C6CACE" />
</shape>
</clip>
</item>
<!-- 录制/播放进度条背景 -->
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="3dp" />
<solid android:color="#16BC5C" />
</shape>
</clip>
</item>
</layer-list>
另需实现播放时播放进度拖动范围限制在已录制范围,即
播放时橙色进度条只能在深灰色进度条范围内拖动
实现方式如下,mSeekBarProgress为已录制进度:
recordSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (progress > mSeekBarProgress) {
recordSeekbar.setProgress(mSeekBarProgress);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
}
网友评论