seekbar拖动时返回到拖动开始位置的原因

本文探讨了Google音乐应用中的SeekBar实现机制,特别是在MediaPlaybackActivity.java文件中的代码片段。该应用定义了一个SeekBar监听器,其核心功能在于设置seek操作的最小有效时间间隔为250毫秒。若seek操作完成时间少于这一阈值,则视为无效操作,并使进度条返回至初始位置。

google源码中默认seek操作最小时间间隔为250ms,如果从开始seek到seek结束花费的时间小于等于250ms,则认为不是有效的seek操作,表现为seekbar上的进度块会回到拖动的开始位置继续播放。

代码文件:packages/apps/Music/src/com/android/music/MediaPlaybackActivity.java

private OnSeekBarChangeListener mSeekListener = new OnSeekBarChangeListener() { public void onStartTrackingTouch(SeekBar bar) { mLastSeekEventTime = 0; mFromTouch = true; } public void onProgressChanged(SeekBar bar, int progress, boolean fromuser) { if (!fromuser || (mService == null)) return; long now = SystemClock.elapsedRealtime(); if ((now - mLastSeekEventTime) > 250) { // 默认seek操作最小时间间隔为250ms mLastSeekEventTime = now; mPosOverride = mDuration * progress / 1000; try { mService.seek(mPosOverride); } catch (RemoteException ex) { } // trackball event, allow progress updates if (!mFromTouch) { refreshNow(); mPosOverride = -1; } } } public void onStopTrackingTouch(SeekBar bar) { mPosOverride = -1; mFromTouch = false; } };

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值