2011-04-19 187 views
6

我想使用水平滾動視圖創建活動。 scrollview的內容將是三個不同的線性佈局。這些線性佈局應占用設備屏幕的全部寬度。因此,當活動開始時,只有一個線性佈局佔據屏幕的整個寬度,而當用戶向右滑動時,另一個線性佈局將以全寬度顯示。 (見圖)Android:使用三種線性佈局的水平滾動視圖

我不知道如何設置linearlayouts的寬度,以便它們適合屏幕的寬度。關於如何以良好的方式解決這個問題的任何想法?

This is what I need

+0

看看這個教程。它完成與ViewFlipper http://www.codeshogun.com/blog/2009/04/16/how-to-implement-swipe-action-in-android/ – 2011-04-19 09:25:28

回答

9

我認爲你必須使用ViewFlipper而不是滾動視圖。 在viewflipper上使用觸摸事件進行導航,並使用動畫來翻轉兩個線性佈局。

這個例子可以幫助你 View Flipper example

編輯:

步驟:

  • 有一個ViewFlipper包含佈局1,佈局2,layoout3
  • 目前佈局1可見。
  • 從右向左傾斜顯示下一個佈局。佈局1 - >佈局2

動畫將在這裏適用的兩種觀點(佈局1和佈局2)。

  • 的佈局2 - > 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> 
    
  • 的佈局1 - > 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> 
    
  • 然後設置這個動畫viewflipper的孩子。

    flipper.setInAnimation(<your class>.this, R.anim.push_right_in); 
    flipper.setOutAnimation(<your class>.this, R.anim.push_right_out); 
    flipper.showNext(); 
    
    • 現在一扔從左至右爲顯示以前的佈局。佈局2 - >佈局1

動畫將在這裏適用的兩種觀點(佈局1和佈局2)。

  • 的佈局1 - > 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> 
    
  • 的佈局2 - > 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> 
    
  • 然後設置這個動畫viewflipper的孩子。

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

這會給你一個平滑的動畫。

+0

這個例子正是我所需要的。但我建議你也看看這個例子的評論,讓動畫順利。 – Martin 2011-04-19 16:11:09

+0

嗨,剛剛閱讀我編輯的答案。 – 2011-04-20 05:06:58

+0

非常感謝您的回答! – Martin 2011-04-20 14:06:56