2012-02-16 1 views
6

Hi SimpleOnGestureListener ne fonctionne pas dans mon application, c'est comme cela que je l'implémente. Peut-être que vous pouvez repérer ce qui ne va pas. Le truc est que le débogage montre que l'application ne va jamais dans la méthode onFling (...) et gdt.onTouchEvent (event); renvoie toujours false:/ Des idées? MerciSimpleOnGestureListener ne passe jamais à la méthode onFling (...)

ma classe d'activité

public class SimpleActivity extends Activity{ 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.simpleLayout); 

    final ImageView imageView = (ImageView) findViewById(R.id.gggbbb); 
    imageView.setOnTouchListener(new OnFlingGestureListener() { 

     @Override 
     public void onTopToBottom() { 
      System.out.println("top"); 
     } 

     @Override 
     public void onRightToLeft() { 
      System.out.println("right"); 
     } 

     @Override 
     public void onLeftToRight() { 
      System.out.println("left"); 
     } 

     @Override 
     public void onBottomToTop() { 
      System.out.println("bottom"); 
     } 
    }); 



} 


    } 

mon résumé Listener

package com.dmd.client.detailsMenus; 

import android.view.GestureDetector; 
import android.view.GestureDetector.SimpleOnGestureListener; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 

public abstract class OnFlingGestureListener implements OnTouchListener { 

    private final GestureDetector gdt = new GestureDetector(new GestureListener()); 

    @Override 
    public boolean onTouch(final View v, final MotionEvent event) { 
    return gdt.onTouchEvent(event); 
    } 

    private final class GestureListener extends SimpleOnGestureListener { 

    private static final int SWIPE_MIN_DISTANCE = 60; 
    private static final int SWIPE_THRESHOLD_VELOCITY = 100; 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      onRightToLeft(); 
      return true; 
      } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
      onLeftToRight(); 
      return true; 
      } 
      if(e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) { 
      onBottomToTop(); 
      return true; 
      } else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) { 
      onTopToBottom(); 
      return true; 
      } 
      return false; 
    } 
    } 

    public abstract void onRightToLeft(); 

    public abstract void onLeftToRight(); 

    public abstract void onBottomToTop(); 

    public abstract void onTopToBottom(); 

} 

Répondre

16

Remplacer cet événement:

@Override 
public boolean onTouch(final View v, final MotionEvent event) { 
    gdt.onTouchEvent(event); 
    return true; 
} 

il devrait fonctionner

+0

ça marche! Merci –

Questions connexes