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