美文网首页
SeekBar 区域限制

SeekBar 区域限制

作者: WoongTalk | 来源:发表于2018-01-03 15:48 被阅读0次

    近期项目中涉及到音频录制进度控制,用到了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) {
        }
    }
    

    相关文章

      网友评论

          本文标题:SeekBar 区域限制

          本文链接:https://www.haomeiwen.com/subject/ezihnxtx.html