当用户停止在特定视图中移动时,我需要在我的应用程序中进行检测。我在我的应用程序中创建类似于marque文本的东西,当用户触摸视图并在其上移动时,它可以进行交互。我需要在用户抬起手指后开始滚动视图。正如我注意到,如果我将手指移过视图几秒钟,当我抬起手指时,MotionEvent.ACTION_UP
不会被调用。我捕获的最后一个事件是ACTION_MOVE
。那么我怎样才能检测用户在几秒钟内移动视线后何时抬起手指?是否有某种功能可以检测出来?
以下是我正在使用的代码:
txt.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, final MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.e("","event down : "+event.getAction());
handler.removeCallbacks(runnable);
break;
case MotionEvent.ACTION_UP:
Log.e("","event up : "+event.getAction());
if(myTimer!=null){
myTimer.cancel();
}
break;
case MotionEvent.ACTION_MOVE:
Log.d("","move");
// handler.removeCallbacks(runnable);
checkX();
break;
}
return true;
}
});
提前致谢!
答案 0 :(得分:2)
我认为该事件可能在手势完成之前发送ACTION_CANCEL
动作。或者,如果它在您正在检查的视图之外拖动,则可能是ACTION_OUTSIDE
。
确认/调试此方法的最佳方法是放入Log.d()
语句,打印MotionEvent.getActionMasked()
值,然后检查ACTION_MOVE
事件后调用的操作结束。