我的 OnSwipeImageListener
有问题(实现 OnTouchListener
)。我在两个 Activity 中使用 OnSwipeImageListener
。
ImageView
上的一个 Activity 是 OnTouchListener
和 OnClickListener
,而 ImageView
上的另一个 Activity 是仅OnTouchListener
。
如果我将 MotionEvent.ACTION_DOWN
下的 return v.onTouchEvent(event)
更改为 true
,则 OnClickListener
上第一个 Activity 不起作用,这样第二个 Activity 上的 ImageView
滑动不起作用。我调试了几次,发现 MotionEvent.ACTION_UP
从未被调用。
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
dX = event.getX();
dY = event.getY();
return v.onTouchEvent(event);
case MotionEvent.ACTION_UP:
uX = event.getX();
uY = event.getY();
float deltaX = dX - uX;
float deltaY = dY - uY;
// horizontal
if(Math.abs(deltaX) > MIN_DISTANCE) {
//Left to right
if(deltaX < 0) {
this.onLeftToRight();
return v.onTouchEvent(event);
} else if (deltaX > 0) {
this.onRightToLeft();
return v.onTouchEvent(event);
}
else {
//Swipe too short
return v.onTouchEvent(event);
}
}
// vertical
if (Math.abs(deltaY) > MIN_DISTANCE) {
if(deltaY < 0) {
this.onTopToBottom();
return v.onTouchEvent(event);
} else if (deltaY > 0) {
this.onBottomToTop();
return v.onTouchEvent(event);
}
else {
//Swipe too short
return v.onTouchEvent(event);
}
}
}
return v.onTouchEvent(event);
}
最佳答案
如果你想获得ACTION_UP,你应该劫持ACTION_DOWN。
当您刚刚处理 ACTION_DOWN 时,不要返回“v.onTouchEvent(event)
”,而是返回“true
”。
关于java - MotionEvent.ACTION_UP 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18438505/