Tôi đã phá vỡ đầu của tôi trong vài giờ qua, googled địa ngục ra khỏi google và không ai trong số các ví dụ trên StackOverflow hoặc những nơi khác làm việc cho tôi như vậy ở đây ...Chế độ xem tùy chỉnh với các nút thực hiện OnGestureListener
Tôi có chế độ xem tùy chỉnh, extends LinearLayout and implements GestureDetector.OnGestureListener
.
Trong bố cục tùy chỉnh của tôi, tôi có 3 Nút, mỗi nút có trình nghe nhấp chuột. Những gì tôi muốn là để có thể Fling ở khắp mọi nơi trong xem để thực hiện một cái gì đó mà còn để có thể bấm vào các nút.
Chức năng onFling của tôi hoạt động tuyệt vời nếu tôi trượt bên trong chế độ xem nhưng không phải trên một trong các nút. Nếu tôi lướt qua một trong các nút, nó thực hiện một cú nhấp chuột trong hầu hết các trường hợp hoặc không có gì trong một số.
Dưới đây là phần có liên quan của mã của tôi:
@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;
}
thử bất kỳ sự kết hợp của return true; return false; Tôi có thể nghĩ đến ... Sẽ đánh giá cao sự giúp đỡ nào! :)
Cảm ơn!
cảm ơn bạn đã trả lời nhưng tôi không muốn sử dụng SurfaceView vì nó không dành cho điều này và chủ yếu là vì vấn đề của tôi phải là vấn đề đặt đúng "trả về true; return false" theo đúng phương pháp. –