2011-04-19 18 views
6

Quiero crear una actividad con una vista de desplazamiento horizontal. El contenido de la vista de desplazamiento será tres lineales diferentes. Cada una de estas imágenes lineales debe ocupar todo el ancho de la pantalla del dispositivo. Por lo tanto, cuando la actividad comienza, solo hay una distribución lineal ocupando todo el ancho de la pantalla y cuando el usuario desliza hacia la derecha, se muestra otra distribución lineal en todo el ancho. (vea la imagen)Android: vista de desplazamiento horizontal con tres diseños lineales

No estoy seguro de cómo establecer el ancho de los lineales para que se ajusten al ancho de la pantalla. ¿Alguna idea sobre cómo resolver esto de una buena manera?

This is what I need

+0

Mira este tutorial. Está hecho con ViewFlipper http://www.codeshogun.com/blog/2009/04/16/how-to-implement-swipe-action-in-android/ –

Respuesta

9

Yo creo que hay que utilizar en lugar de ViewFlipper ScrollView. usa el evento táctil en viewflipper para navegación y usa la animación para voltear dos diseños lineales.

este ejemplo le ayudará a View Flipper example

Editado:

pasos:

  • hay una ViewFlipper que contiene Layout1, Layout2, layoout3
  • Actualmente Layout1 es visible.
  • arroja de derecha a izquierda para mostrar el siguiente diseño. layout1 -> layout2

la animación se aplicará aquí en ambas vistas (layout1 y layout2).

  • para Layout2 -> push_right_in.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/decelerate_interpolator"> 
    
    <translate android:fromXDelta="100%" android:toXDelta="0%" 
        android:duration="400" /> 
    </set> 
    
  • para Layout1 -> push_right_out.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/decelerate_interpolator"> 
    
    <translate android:fromXDelta="0%" android:toXDelta="-100%" 
        android:duration="400" /> 
    
    </set> 
    
  • a continuación, establezca esta animación para niños de viewflipper.

    flipper.setInAnimation(<your class>.this, R.anim.push_right_in); 
    flipper.setOutAnimation(<your class>.this, R.anim.push_right_out); 
    flipper.showNext(); 
    
    • ahora lanzar de izquierda a derecha para mostrar la disposición anterior. Layout2 -> Layout1

la animación se aplicará aquí en ambas vistas (Layout1 y Layout2).

  • para Layout1 -> push_left_in.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/decelerate_interpolator"> 
    
    <translate android:fromXDelta="-100%" android:toXDelta="0%" 
    android:duration="400" /> 
    </set> 
    
  • para Layout2 -> push_left_out.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/decelerate_interpolator"> 
    
    <translate android:fromXDelta="0%" android:toXDelta="100%" 
    android:duration="400" /> 
    
    </set> 
    
  • a continuación, establezca esta animación para niños de viewflipper.

    flipper.setInAnimation(<your class>.this, R.anim.push_left_in); 
    flipper.setOutAnimation(<your class>.this, R.anim.push_left_out); 
    flipper.showPrevious(); 
    

esto le dará una animación suave.

+0

Ese ejemplo era exactamente lo que necesitaba. Pero te recomiendo que también eches un vistazo a los comentarios sobre el ejemplo para que las animaciones sean fluidas. – Martin

+0

hola acaba de leer mi respuesta editada. –

+0

¡Gracias por una gran respuesta! – Martin

Cuestiones relacionadas