在Seekbar中使用onStartTrackingTouch方法后,将自动调用onStopTrackingTouch,而无需松开手指

时间:2018-09-05 19:20:22

标签: android gesture android-seekbar

我有一个使用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却不起作用。

0 个答案:

没有答案