Rileva il gesto di scorrimento in frammento

Ciao ho implementato un Fragment e voglio individuare evento touch sul mio frammento.

Ma non sono in grado di rilevare tale evento, in realtà, nessun evento è stato rilevato. Funziona bene in Activity , ma non funziona su frammenti.

  • Imansible aggiornare la mia applicazione in Google Play: errore aapt
  • R non può essere risolto - Android, no import android.R; dichiarazione
  • Quando utilizzare un fornitore di contenuti
  • Lottando con il frammento di supporto di giocatori di Youtube
  • Perché richiede così tanto tempo per MediaPlayer di Android di preparare alcuni flussi in diretta per la riproduzione?
  • Ottenere trasmissioni multiple da intenti?
  • Di seguito è il mio codice:

      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; } } 

  • Crea un elenco di livelli con angoli arrotondati in modo programmato
  • Applicazione di chat da Android da zero
  • Imansible build app ionico su android
  • Android EditText con TextInputLayout si blocca quando raggiunge il limite di counterMaxLength dopo l'aggiornamento della libreria di supporto 23.2.0
  • Android: Come mantenere il GPS attivo fino a quando non viene fornita una posizione più precisa?
  • Creazione di un layout personalizzato per le preferenze
  • One Solution collect form web for “Rileva il gesto di scorrimento in frammento”

    Infine ho trovato una soluzione dal codice qui sotto, che è da Android Fragment onCreateView con i gesti .

      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); } }); 

    Questo va nel metodo onCreateView() del frammento.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.