Hi, SimpleOnGestureListener does not work in my application, so I implement it. Maybe you can determine what is wrong. The fact is that debugging shows that the application never enters the onFling (...) method and gdt.onTouchEvent (event); always returns false: / Any ideas ?? thanks
my activity class
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"); } }); } }
my abstract 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(); }
source share