我有一个使用Android SeebBar
来显示和更改MediaPlayer
进度的应用。
问题:
当我触摸并拖动查找栏拇指时,有时它可以很好地工作并且我的MediaPlayer进度成功更改,但是有时我触摸并拖动查找栏拇指时,它显示了按下状态波纹效果,但没有改变其位置,并感觉到了它的生命卡住了。
我尝试通过日志记录来检测问题,然后发现在Seekbar中使用onStopTrackingTouch
方法后onStartTrackingTouch
被自动调用而没有松开手指并且onProgressChanged
没有被调用。
代码:
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Log.d(">>>>>>", "I'm in onStartTrackingTouch");
}
@Override
public void onProgressChanged(SeekBar seekBar, int seekPosition, boolean fromUser) {
Log.d(">>>>>>", "I'm in onProgressChanged");
// Here i'm just changing seek position of MediaPlayer
// but sometimes it invokes successfully sometimes it doesn't :(
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Log.d(">>>>>>", "I'm in onStopTrackingTouch");
}
});
输出:
有时候我会得到:
>>>>>> I'm in onStartTrackingTouch
>>>>>> I'm in onProgressChanged
>>>>>> I'm in onProgressChanged
>>>>>> I'm in onProgressChanged
>>>>>> ...
>>>>>> I'm in onStopTrackingTouch
有时:
>>>>>> I'm in onStartTrackingTouch
>>>>>> I'm in onStopTrackingTouch
仍然按下我的手指,onProgressChanged
却不起作用。