지난 몇 시간 동안 내 머리를 아프게하고 Google에서 지루해 해 봤습니다. 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와 http://developer.android.com/reference/android/view/SurfaceView.html
, 당신의 버튼은 여전히 작동해야하고 놀아나는 어떤없이 버튼을 극복 할 수 있어야한다 :
답장을 보내 주셔서 감사합니다.하지만 SurfaceView를 사용하지 않는 것이 좋습니다. 주로이 문제는 올바른 방법으로 올바른 "return true; return false"를 설정해야하기 때문에 의도하지 않았습니다. –