OnSwipeImageListener
(実装)に問題がありOnTouchListener
ます。OnSwipeImageListener
を2 つのアクティビティで使用します。
の 1 つのアクティビティImageView
は でOnTouchListener
ありOnClickListener
、 の他のアクティビティImageView
は のみOnTouchListener
です。
return v.onTouchEvent(event)
をtrue
下に変更MotionEvent.ACTION_DOWN
するOnClickListener
と、最初のアクティビティが機能せず、このように 2 番目のアクティビティのスワイプが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);
}