Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Detectar el gesto de desplazamiento en fragmento

Hola he implementado un Fragment , y quiero detectar el evento táctil en mi fragmento.

Pero soy incapaz de detectar ese acontecimiento, de hecho, ningún acontecimiento se detecta en absoluto. Funciona bien en Activity , pero no funciona en fragmentos.

El siguiente es mi código:

  public class Swipe_Fragment extends Fragment implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener { private SimpleGestureFilter detector; private LinearLayout swipLinear; private static int DEFAULT = 50; private int brightness; private GestureDetectorCompat mDetector; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.swipe_screen, container, false); swipLinear = (LinearLayout) rootView.findViewById(R.id.swipLinear); brightness = DEFAULT; mDetector = new GestureDetectorCompat(getActivity(), this); // Set the gesture detector as the double tap // listener. mDetector.setOnDoubleTapListener(this); // Detect touched area // detector = new SimpleGestureFilter(getActivity(), this); return rootView; } @Override public boolean onDoubleTap(MotionEvent arg0) { Toast.makeText(getActivity(), "onDoubleTap", Toast.LENGTH_LONG).show(); return false; } @Override public boolean onDoubleTapEvent(MotionEvent e) { Toast.makeText(getActivity(), "onDoubleTapEvent", Toast.LENGTH_LONG).show(); return false; } @Override public boolean onSingleTapConfirmed(MotionEvent e) { Toast.makeText(getActivity(), "onSingleTapConfirmed", Toast.LENGTH_LONG).show(); return false; } @Override public boolean onDown(MotionEvent e) { Toast.makeText(getActivity(), "onDown", Toast.LENGTH_LONG).show(); return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Toast.makeText(getActivity(), "onFling", Toast.LENGTH_LONG).show(); return false; } @Override public void onLongPress(MotionEvent e) { Toast.makeText(getActivity(), "onLongPress", Toast.LENGTH_LONG).show(); } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { Toast.makeText(getActivity(), "onScroll", Toast.LENGTH_LONG).show(); return false; } @Override public void onShowPress(MotionEvent e) { Toast.makeText(getActivity(), "onShowPress", Toast.LENGTH_LONG).show(); } @Override public boolean onSingleTapUp(MotionEvent e) { Toast.makeText(getActivity(), "onSingleTapUp", Toast.LENGTH_LONG).show(); return false; } } 

  • Sensor de proximidad en Galaxy S4 (Air Gestures)
  • Cómo detectar un gesto de desplazamiento en la vista web
  • Agregando un niño en un GestureOverlayView en el punto donde toqué en android?
  • Diferencia entre hacer clic y tocar en Android
  • Cómo implementar la pantalla Detalles de contacto como Lollipop
  • Deslizar una parte de la pantalla
  • Cómo implementar doble toque para vista de superficie en android
  • Cómo obtener un Gesture View como en la aplicación oficial de Facebook
  • One Solution collect form web for “Detectar el gesto de desplazamiento en fragmento”

    Finalmente conseguí una solución del código abajo, que es de Android Fragment onCreateView with Gestures .

      final GestureDetector gesture = new GestureDetector(getActivity(), new GestureDetector.SimpleOnGestureListener() { @Override public boolean onDown(MotionEvent e) { return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.i(Constants.APP_TAG, "onFling has been called!"); final int SWIPE_MIN_DISTANCE = 120; final int SWIPE_MAX_OFF_PATH = 250; final int SWIPE_THRESHOLD_VELOCITY = 200; try { if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) return false; if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { Log.i(Constants.APP_TAG, "Right to Left"); } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { Log.i(Constants.APP_TAG, "Left to Right"); } } catch (Exception e) { // nothing } return super.onFling(e1, e2, velocityX, velocityY); } }); v.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return gesture.onTouchEvent(event); } }); 

    Esto va en el método onCreateView() del fragmento.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.