我一直在打破我的头过去几个小时,谷歌搜索了地狱,并没有在StackOverflow或其他地方的例子为我工作,所以在这里它去...自定义视图与按钮实现OnGestureListener
我有一个自定义视图,即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;
}
试图回归真实的任意组合;返回false;我能想到...会感谢任何帮助! :)
谢谢!
感谢您的回复,但我更喜欢不使用SurfaceView,因为它不适用于此,主要是因为我的问题应该是在正确的方法中设置正确的“返回true; return false”。 –