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何时生成了动作 更新: 显然

众所周知,当您滚动或滑动scrollview时,您将获得一个ACTION\u CANCEL事件。我需要知道ACTION\u UP和ACTION\u DOWN事件何时发生,但是ACTION\u CANCEL会阻止ACTION\u UP/ACTION\u DOWN在您持续上下滑动时发出。我尝试实现onInterceptTouchEvent,甚至使用getActionMasked,但两种解决方案都不起作用

当用户在刷卡过程中松开手指时,是否有办法知道我的scrollview何时生成了动作

更新:

显然,我正在对Android如何处理运动和触摸事件进行一些假设。我发现以下视频很有帮助,它很好地概述了Android的触摸系统,甚至涵盖了我正在做的事情:


这可能不是最好的方法,但如果你能试试这样的方法

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和不滚动。我需要知道手指什么时候离开屏幕。