私はここ数時間頭を悩ませていました.Googleをグーグルで検索しましたが、StackOverflowや他の場所の例はどれもうまくいきませんでした.
私はカスタムビューを持っていextends LinearLayout and implements GestureDetector.OnGestureListener
ます.
私のカスタム レイアウトには 3 つのボタンがあり、それぞれにクリック リスナーがあります。私が望むのは、ビュー内のどこでも Fling を実行して何かを実行できるだけでなく、ボタンをクリックできるようにすることです。
私の onFling 関数は、ボタンの 1 つではなくビュー内でフリングする場合にうまく機能します。ボタンの 1 つにカーソルを合わせると、ほとんどの場合、クリックが実行されるか、何も実行されない場合があります。
私のコードの関連部分は次のとおりです。
@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;
}
return true の任意の組み合わせを試しました。false を返します。私は考えることができました...助けていただければ幸いです!:)
ありがとう!