Android 向上/向下滑动滚动视图时检测“向上/向下操作”
众所周知,当您滚动或滑动scrollview时,您将获得一个ACTION\u CANCEL事件。我需要知道ACTION\u UP和ACTION\u DOWN事件何时发生,但是ACTION\u CANCEL会阻止ACTION\u UP/ACTION\u DOWN在您持续上下滑动时发出。我尝试实现onInterceptTouchEvent,甚至使用getActionMasked,但两种解决方案都不起作用 当用户在刷卡过程中松开手指时,是否有办法知道我的scrollview何时生成了动作 更新: 显然,我正在对Android如何处理运动和触摸事件进行一些假设。我发现以下视频很有帮助,它很好地概述了Android的触摸系统,甚至涵盖了我正在做的事情:Android 向上/向下滑动滚动视图时检测“向上/向下操作”,android,Android,众所周知,当您滚动或滑动scrollview时,您将获得一个ACTION\u CANCEL事件。我需要知道ACTION\u UP和ACTION\u DOWN事件何时发生,但是ACTION\u CANCEL会阻止ACTION\u UP/ACTION\u DOWN在您持续上下滑动时发出。我尝试实现onInterceptTouchEvent,甚至使用getActionMasked,但两种解决方案都不起作用 当用户在刷卡过程中松开手指时,是否有办法知道我的scrollview何时生成了动作 更新: 显然
这可能不是最好的方法,但如果你能试试这样的方法
public class CustomScrollView extends ScrollView {
public CustomScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
Timer ntimer = new Timer();
MotionEvent event;
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt)
{
checkAgain();
super.onScrollChanged(l, t, oldl, oldt);
}
public void checkAgain(){
try{
ntimer.cancel();
ntimer.purge();
}
catch(Exception e){}
ntimer = new Timer();
ntimer.schedule(new TimerTask() {
@Override
public void run() {
if(event.getAction() == MotionEvent.ACTION_UP){
// ScrollView Stopped Scrolling and Finger is not on the ScrollView
}
else{
// ScrollView Stopped Scrolling But Finger is still on the ScrollView
checkAgain();
}
}
},100);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
this.event = event;
return super.onTouchEvent(event);
}
}
您是否扩展了ScrollView?我确实扩展了它并覆盖了InterceptTouch,但正如所述,一旦滚动开始并且您抬起手指,将不会发出动作。\u UP。我想知道动作\u UP和不滚动。我需要知道手指什么时候离开屏幕。