Cómo implementar efectos deslizantes en Android
El efecto deslizante de Android se implementa mediante la clase contenedora View ViewFlipper.
ViewFilpper es una clase contenedora de Vista proporcionada por Android. Hereda de la clase ViewAnimator y se utiliza para implementar el cambio de página. También puede establecer un intervalo de tiempo para que se reproduzca automáticamente.
ViewAnimator hereda de FrameLayout, por lo que el diseño de ViewFilpper se puede colocar en varias vistas. La relación de herencia es la siguiente:
1. La actividad se escribe de la siguiente manera:
.importar ?android.app.Activity;?Activity;?
importar?android.os.Bundle;?
importar?android.view.GestureDetector;?
importar?android.view.MotionEvent;?
¿importar?android.view.ViewGroup.LayoutParams;?
¿importar?
¿importar?
¿importar?
¿importar?android.widget.ViewFlipper;?
¿clase pública?ViewFlipperActivity?extends?Activity?implements?android.view.GestureDetector.OnGestureListener ?{?
privado?int[]?{?R.drawable.img1,?R.drawable.img2,?R.drawable.img3,?R.drawable.img4,?R.drawable. img5?}
¿privado?
¿privado?
¿privado
@Override
público?{
super.onCreate(savedInstanceState);?
setContentView(R.layout.main);?
Actividad?=?this;? p>viewFlipper? =?(ViewFlipper)?findViewById(R.id.viewflipper);?
gestureDetector?=?new?GestureDetector(this);//?¿Establecer la detección de eventos de gestos?
for(int?i?=?0;?i?
ImageView?
iv.setImageResource(imgs[i]);?
iv.setScaleType(ImageView.ScaleType.FIT_XY);?
viewFlipper.addView(iv,?new?LayoutParams(LayoutParams.FILL_PARENT,?LayoutParams.FILL_PARENT));?
}
viewFlipper.setAutoStart(true);? //¿Establecer la función de reproducción automática (haga clic en el evento, antes de la reproducción automática)?
viewFlipper.setFlipInterval(3000);?
if(viewFlipper.isAutoStart()? &&?!viewFlipper.isFlipping()){?
viewFlipper. startFlipping();?
}?
}
@Override?
público?bo
olean?onTouchEvent(MotionEvent?event)?{
viewFlipper.stopFlipping();?//?¿Detener la reproducción automática cuando se hace clic en el evento?
viewFlipper.setAutoStart(false);?
return gestoDetector.onTouchEvent(event);?//?¿Registrar evento de gesto?
}?
@Override
público?{
if(e2.getX()?-?e1.getX() ?>?120)?{//?¿Deslizar de izquierda a derecha (de izquierda a derecha y de dentro)?
Animation?rInAnim?=?AnimationUtils.loadAnimation(mActivity,?R.anim.push_right_in);?//?Desliza el dedo hacia la derecha o hacia la izquierda para ingresar al efecto de degradado (alpha?0.1?->?1.0) ?
Animation?rOutAnim?=?AnimationUtils.loadAnimation(mActivity,?R.anim.push_right_out);?//?Desliza el dedo hacia la derecha para deslizar el efecto de degradado a la derecha (alpha?1.0?->? 0.1)?
viewFlipper.setInAnimation(rInAnim);?
viewFlipper.setOutAnimation(rOutAnim);?
viewFlipper.showPrevious();?
return true;?
} else if(e2.getX()?-e1.getX()?-120)?{//?Desliza el dedo de derecha a izquierda (de derecha a izquierda afuera )?
Animation?lInAnim?=?AnimationUtils.loadAnimation(mActivity,?R.anim.push_left_in); //?Deslícese hacia la izquierda e ingrese el efecto de degradado a la izquierda (alpha?0.1?->? 1.0) ?
Animation?lOutAnim?=?AnimationUtils.loadAnimation(mActivity,?R.anim.push_left_out);?//?Desliza el dedo hacia la izquierda para deslizar el efecto de degradado (alpha?1.0?->? 0.1)
viewFlipper.setInAnimation(lInAnim);?
viewFlipper.setOutAnimation(lOutAnim);?
viewFlipper.showNext();?
¿devolver?
}?
¿devolver?verdadero;?
}
@Override?{
¿regresar?
}?
@Override?
¿público?void?onLongPress(MotionEvent?e)?{
} ?
@Override?
público?boolean?onScroll(MotionEvent?e1,?MotionEvent?e2,?float?distanceX,?float?distanceY)?{
¿regresar?
}?
@Override
¿público?{
}
@¿Anular?
>
¿público?booleano?onSingleTapUp(MotionEvent?e)?{
¿retorno?
}?
}??
2. Archivo de configuración main.xml:
>
android:layout_width="fill_parent"? android:layout_height="fill_parent"? android:orientation= ¿"vertical"? > ? android:layout_width="fill_parent"? android:layout_height="fill_parent"/> ? p> p>
Lo anterior completa la pantalla deslizante de gestos:
La animación de la pantalla deslizante de gestos se logra detectando varios eventos de gestos a través de android.view .Clase GestureDetector Implementada, esta clase tiene dos interfaces de devolución de llamada (Interfaz)
A. GestureDetector.OnDoubleTapListist.OnDoubleTapListist.OnDoubleTapListist.OnDoubleTapListist.OnDoubleTapListener se utiliza para notificar a DoubleTap sobre eventos de doble clic, similar al doble clic del mouse. eventos de clic Las tres interfaces Las funciones de devolución de llamada abstractas son las siguientes
1. onDoubleTap(MotionEvent e): Notificación de evento de gesto de doble clic de DoubleTap (activada) después de que ocurre el evento
2. onDoubleTapEvent(MotionEvent e): gesto de doble clic con doble toque Notificaciones (activadores) entre eventos, incluidos eventos hacia abajo, hacia arriba y de movimiento (aquí me refiero a eventos que ocurren entre toques dobles, por ejemplo, un toque doble en la misma ubicación genera un gesto de doble toque). , y también ocurre dentro de un gesto de DoubleTap) La aparición de eventos hacia abajo y hacia arriba, ambos eventos son notificados por esta función)
3. onSingleTapConfirmed(MotionEvent e): se utiliza para determinar que el clic es un SingleTap. de un DoubleTap Si dos clics consecutivos Tap es un gesto de DoubleTap entonces, si hace clic solo una vez, el sistema espera un momento y no recibe el segundo clic. Si el sistema no recibe el segundo clic después de esperar un período de tiempo, determinará que el clic es un solo clic (SingleTap) en lugar de un doble clic (DoubleTap) y activará el evento SingleTapConfirmed.