在过去的几个小时里,我一直在头疼,用谷歌搜索了谷歌,StackOverflow 或其他地方的例子都没有对我有用,所以就这样......
我有一个自定义视图,即extends LinearLayout and implements GestureDetector.OnGestureListener
.
在我的自定义布局中,我有 3 个按钮,每个按钮都有一个点击监听器。我想要的是能够在视图中到处乱扔以执行某些操作,而且还能够单击按钮。
如果我在视图内而不是在其中一个按钮上进行操作,我的 onFling 功能会非常有效。如果我跳过其中一个按钮,它在大多数情况下会执行点击操作,或者在某些情况下不会执行任何操作。
这是我的代码的相关部分:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) {
return false;
}
// right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
viewFlipper.setInAnimation(slideLeftIn);
viewFlipper.setOutAnimation(slideLeftOut);
viewFlipper.showNext();
return true;
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
viewFlipper.setInAnimation(slideRightIn);
viewFlipper.setOutAnimation(slideRightOut);
viewFlipper.showPrevious();
return true;
}
return false;
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return true;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return gestureDetector.onTouchEvent(event);
}
return false;
}
尝试了返回 true 的任意组合;返回假;我能想到...将不胜感激任何帮助!:)
谢谢!