【发布时间】:2013-08-26 07:09:07
【问题描述】:
我对@987654321@ 有疑问(实现OnTouchListener)。我在两个活动中使用OnSwipeImageListener。
在ImageView 上的一项活动是OnTouchListener 和OnClickListener,而在ImageView 上的另一项活动只有OnTouchListener。
如果我在MotionEvent.ACTION_DOWN 下将return v.onTouchEvent(event) 更改为true,则第一个活动上的OnClickListener 不起作用,这样第二个活动上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);
}
【问题讨论】:
标签: java android onclicklistener ontouchlistener motionevent