Son birkaç saattir kafamı kırıyordum, google'dan cehennemden dışarı googledim ve StackOverflow'taki örneklerin hiçbiri ya da benim için çalışılan diğer yerlerden hiçbiri burada kalmıyor ...Düğmeleri ile özel görünümü uygular OnGestureListener
Özel bir görünümüm var, bu extends LinearLayout and implements GestureDetector.OnGestureListener
.
Özel düzenimde, her biri bir tıklama dinleyicisi olan 3 Düğme var. İstediğim şey, bir şeyi gerçekleştirmek için görünümde her yerde Fling yapabilmenin yanı sıra düğmelere tıklayabilmeniz.
OnFling işlevi harika çalışıyor ancak bu düğmelerden birini değil, görünümde dolaşıyorsam. Düğmelerden birini aşarsam, çoğu durumda bir tıklama yapar veya bazılarında hiçbir şey yapmaz.
İşte benim kod ilgili bölümü:
@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;
}
gerçek getiri herhangi bir kombinasyonunu çalıştı; yanlış dönüş; Düşünebilirim ... Herhangi bir yardım için minnettarım! :)
Teşekkürler! Üstte SurfaceView ile http://developer.android.com/reference/android/view/SurfaceView.html
, senin düğmeleri hala çalışması gerekir ve fling'iniz herhangi olmadan düğmelerin üzerinde elde edebilmek olmalıdır:
Yanıtladığınız için teşekkürler, ancak SurfaceView'ı bunun için tasarlanmadığını ve esas olarak benim sorunumun doğru yöntemleri "doğruyu döndürmek, yanlış döndürmek" doğru yöntemlerle yapılması nedeniyle kullanılmasını tercih ediyorum. –