SimpleOnGestureListener never comes to the onFling (...) method

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(); } 
+6
source share
1 answer

Replace this event:

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

he should work

+16
source

Source: https://habr.com/ru/post/908627/


All Articles