SeekBar监听进度变化及拖动后响应进度变化

1.监听进度变化

/**
 * 播放进度显示
 */
private Boolean isShowDuration = true;  //是否显示
private ExecutorService executorService;    //线程池
long cur = 0;   //进度值
long dur = 0;   //总长度
int pro ;       //转换后,显示在progressBar上的进度值
int bufferedPercent ;       //转换后,显示在progressBar上的当前缓冲百分比
private void setPlayDurtionThread() {
    if (executorService == null) {
        executorService = Executors.newSingleThreadExecutor();
    }
    executorService.execute(new Runnable() {
        @Override
        public void run() {
            //Logutil.i( "开始进度线程");
            isShowDuration = true;
            while (isShowDuration) {
                try {
                    if (mVideoView != null && mVideoView.isPlaying()) {
                        cur = mVideoView.getCurrentPosition();
                        dur = mVideoView.getDuration();
                        if (cur < 0 || cur > dur) continue;    //不正常数据
                        //计算进度值
                        pro = (dur == 0) ? 0 : (int) (cur * seekBarPlayer.getMax() / (float) dur + 0.5);
                        //获取当前缓冲百分比
                        bufferedPercent = (seekBarPlayer.getMax()*mVideoView.getBufferedPercentage()/100);
//                            Logutil.d("ShortVideoSlipLoopFragment setPlayDurtionThread", "percent="+mVideoView.getBufferedPercentage()+", bufferedPercent="+bufferedPercent);

                        ((Activity)context).runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                if (!isShowDuration) return;
                                seekBarPlayer.setProgress(pro);
//                                    seekBarPlayer.setSecondaryProgress(bufferedPercent);
                            }
                        });

                    }
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            //Logutil.i("结束进度线程");
        }
    });
}

2.拖动后响应进度变化

SeekBar seekBarPlayer = view.findViewById(R.id.seekBar);      //播放进度条
seekBarPlayer.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    //当进度条停止修改时触发
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        //取得当前进度条的刻度
        int progress = seekBar.getProgress();
        //对应的响应操作
        //......
    }
});

原文章的地址找不到了,如果原作者有需要,可提供地址让我标明原文地址!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值