je fais un lecteur de musique pour Android, mais je récemment mis à jour avec des gestes swipe mais la chose est que un seul geste (swipe fond travaille) j'ai vérifié la classe geste de balayage et rien ne semble se tromper dans ceAndroid SwipeGesture travaillant uniquement dans une direction, je n'ai aucune idée pourquoi?
voici le code de ma mise en œuvre
LinearLayout LL=(LinearLayout) findViewById(R.id.LL);
LL.setOnTouchListener(new OnSwipeTouchListener() {
public void onSwipeTop() {
mp.stop();
mp.release();
}
public void onSwipeRight() {
mp.stop();
mp.release();
}
public void onSwipeLeft() {
mp.stop();
mp.release();
}
public void onSwipeBottom() {
mp.stop();
mp.release();
}
});
et voici ma classe pour glisser
public class OnSwipeTouchListener extends Activity implements OnTouchListener{
private final GestureDetector gestureDetector = new GestureDetector(new GestureListener());
public boolean onTouch(final View view, final MotionEvent motionEvent) {
// super.onTouch(view, motionEvent);
return gestureDetector.onTouchEvent(motionEvent);
}
private final class GestureListener extends SimpleOnGestureListener {
private static final int SWIPE_THRESHOLD = 70;
private static final int SWIPE_VELOCITY_THRESHOLD = 60;
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
boolean result = false;
try {
float diffY = e2.getY() - e1.getY();
float diffX = e2.getX() - e1.getX();
if (Math.abs(diffX) > Math.abs(diffY))
{
if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD)
{
if (diffX > 0)
{
onSwipeRight();
}
else
{
onSwipeLeft();
}
}
}
else
{
if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD)
{
if (diffY > 0)
{
onSwipeBottom();
} else {
onSwipeTop();
}
}
}
} catch (Exception exception) {
exception.printStackTrace();
}
return result;
}
}
public void onSwipeRight() {
}
public void onSwipeLeft() {
}
public void onSwipeTop() {
}
public void onSwipeBottom() {
}
}
Mais dans mon cas, le balayage fonctionne dans une direction .... pouvez-vous déboguer le code? Si non, pourquoi publiez-vous ces questions avec une approche totalement différente? Je dois d'abord comprendre son code, puis son problème et ensuite le changer en fonction de mes besoins et ensuite vérifier si cela fonctionne pour moi ou pas ... –