我的onScroll
并且onTouchEvent
被调用,但不是onDown
方法。事实上,当我在distaceX
中记录onDown
时,我发现其中有几个已经注销,而第一个总是相对于我结束最后一个滚动的位置。
@Override
public boolean onTouchEvent(MotionEvent me){
this.detector.onTouchEvent(me);
return super.onTouchEvent(me);
}
@Override
public boolean onDown(MotionEvent e) {
Log.d("---onDown---",".");
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
Log.d("---onScroll---", "" + distanceX);
return false;
}
为什么不会调用onDown
的任何想法?
编辑:
我将onTouchEvent
更改为以下块,只记录了ACTION_MOVE。
float gestureDistance = 0;
@Override
public boolean onTouchEvent(MotionEvent me){
switch (me.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
Log.d("actionDown", "gestureDistance:" + gestureDistance);
break;
case MotionEvent.ACTION_UP:
Log.d("actionUp", "gestureDistance:" + gestureDistance);
break;
case MotionEvent.ACTION_MOVE:
Log.d("actionMove", "gestureDistance:" + gestureDistance);
break;
default:
Log.d("action default", "default");
break;
}
编辑: 我认为问题是我的视图是WebView。我可以阻止webview窃取我的活动吗?
答案 0 :(得分:1)
你为什么不这样做:
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
//Do something on action down.
case MotionEvent.ACTION_UP:
//Do something on action up.
break;
case MotionEvent.ACTION_MOVE:
//Do something when moving.
break;
}
return true;
}
希望这会有所帮助。
答案 1 :(得分:1)
将此添加到我的onCreate
修复了问题。
webView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
detector.onTouchEvent(event);
return true;
}
});