近期項目中涉及到音頻錄制進度控制涣脚,用到了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>
另需實現(xiàn)播放時播放進度拖動范圍限制在已錄制范圍,即
播放時橙色進度條只能在深灰色進度條范圍內拖動
實現(xiàn)方式如下神年,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) {
}
}