众所周知,当您滚动或滑动滚动视图时,您将收到ACTION_CANCEL事件。我需要知道ACTION_UP和ACTION_DOWN事件何时发生,但如果你连续向上和向下滑动,ACTION_CANCEL将阻止发出ACTION_UP / ACTION_DOWN。我尝试实现onInterceptTouchEvent,甚至使用了getActionMasked,但两种解决方案都没有工作。
当用户在滑动期间松开手指时,我的滚动视图何时生成了ACTION_UP?
更新:
我显然对Android处理动作和触摸事件的方式做了一些假设。我发现以下视频很有帮助,可以很好地概述Android的触控系统,它甚至涵盖了我正在做的事情:
答案 0 :(得分:0)
这可能不是最好的方法,但如果可以请尝试这样的事情......
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);
}
}