2011-04-19 10 views
6

Chcę utworzyć aktywność z poziomym widokiem przewijania. Zawartość przewijania będzie się składać z trzech różnych zestawień liniowych. Każdy z tych linelayouts powinien zajmować całą szerokość ekranu urządzenia. Kiedy zaczyna się aktywność, jest tylko jeden linelayout zajmujący całą szerokość ekranu, a gdy użytkownik przesunie się w prawo, kolejny linelayout wyświetli się na całej szerokości. (patrz zdjęcie)Android: poziomy widok przewijania z trzema liniowymi układami

Nie jestem pewien, jak ustawić szerokość liniowych klatek, aby dopasować szerokość ekranu. Wszelkie pomysły, jak rozwiązać ten problem w dobry sposób?

This is what I need

+0

Zobacz ten samouczek. Jest to zrobione z ViewFlipper http://www.codeshogun.com/blog/2009/04/16/how-to-implement-swipe-action-in-android/ –

Odpowiedz

9

myślę, trzeba użyć ViewFlipper zamiast Scrollview. użyj zdarzenia dotykowego na viewflipper do nawigacji i użyj animacji do przewracania dwóch liniowych układów.

ten przykład pomoże Ci View Flipper example

edycja:

czynności:

  • jest ViewFlipper który zawiera Układ1, Layout2, layoout3
  • obecnie Układ1 jest widoczny.
  • rzucać od prawej do lewej, aby wyświetlić następny układ. layout1 -> layout2

animacja będzie obowiązywać w obu widokach (layout1 i layout2).

  • dla 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> 
    
  • dla Układ1 -> 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> 
    
  • następnie ustawić tę animację do dziecka viewflipper użytkownika.

    flipper.setInAnimation(<your class>.this, R.anim.push_right_in); 
    flipper.setOutAnimation(<your class>.this, R.anim.push_right_out); 
    flipper.showNext(); 
    
    • teraz rzucać od lewej do prawej pokazując poprzedni układ. Layout2 -> Układ1

animacja będzie stosować tu na obu poglądów (Układ1 i Layout2).

  • dla Układ1 -> 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> 
    
  • dla 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> 
    
  • następnie ustawić tę animację do dziecka viewflipper użytkownika.

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

to daje płynną animację.

+0

Ten przykład był dokładnie tym, czego potrzebowałem. Ale polecam również spojrzeć na komentarze na przykładzie, aby uzyskać płynne animacje. – Martin

+0

cześć po prostu przeczytaj moją zredagowaną odpowiedź. –

+0

Dzięki za wspaniałą odpowiedź! – Martin

Powiązane problemy