tactiles subir por pantalla navegacion gestos deslizar cualquier con como bajar android swipe gesture-recognition onfling

subir - navegacion por gestos android 8



Android-Detección de gestos(deslizar hacia arriba/abajo) en una vista particular (3)

Estoy tratando de implementar OnGestureListener en Android.
Tengo tres vistas de texto en mi diseño.
Lo que estoy tratando de lograr es configurar la escucha de gestos para dos de las vistas de texto.
Aquí está el diseño -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rlMain" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/tvOne" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginBottom="10dp" android:layout_marginTop="5dp" android:gravity="center" android:text="One" /> <TextView android:id="@+id/tvTwo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/tvOne" android:layout_centerHorizontal="true" android:layout_marginBottom="10dp" android:layout_marginTop="5dp" android:gravity="center" android:text="Two" /> <TextView android:id="@+id/tvThree" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/tvTwo" android:layout_centerHorizontal="true" android:layout_marginBottom="10dp" android:layout_marginTop="5dp" android:gravity="center" android:text="Three" />

Y aquí está la actividad -

import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view.MotionEvent; public class TimeActivity extends Activity implements OnGestureListener { GestureDetector gestureScanner; @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.wheelview); gestureScanner = new GestureDetector(this); } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub return gestureScanner.onTouchEvent(event); } @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // TODO Auto-generated method stub Log.i("Test", "On Fling"); return true; } @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // TODO Auto-generated method stub return false; } @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; }

}

En la actualidad se está llamando a Fling para las tres vistas de texto.
¿Hay alguna manera a través de la cual pueda configurar la escucha de gestos para algunas vistas particulares en el diseño ?
Cualquier ayuda será muy apreciada.


Una sugerencia

Si no quieres detectar todos los gestos, prueba esta clase: SimpleGestureListener creado por mí mismo.

Ahora aquí hay algunos fragmentos para el uso de esta clase.

Uso

public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private GestureDetector mDetector; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SimpleGestureListener simpleGestureListener = new SimpleGestureListener(); simpleGestureListener.setListener(new SimpleGestureListener.Listener() { @Override public void onScrollHorizontal(float dx) { Log.i(TAG,"horizontal = " +dx); } @Override public void onScrollVertical(float dy) { Log.i(TAG,"vertical = " +dy); } }); mDetector = new GestureDetector(this, simpleGestureListener); } @Override public boolean onTouchEvent(MotionEvent event) { mDetector.onTouchEvent(event); return super.onTouchEvent(event); } }

Puede ser utilizado para detectar el gesto de deslizar:

  • izquierda o derecha
  • arriba o abajo

Haz esto en tu método onCreate .

findViewById(R.id.tvOne).setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event){ return gestureScanner.onTouchEvent(event); } });


Puede configurar OnTouchListener s para TextView individuales.

findViewById(R.id.tvOne).setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { // Your code here } }