2014-03-18 85 views
2

我的Android應用的一項活動使用帶有幾個文字瀏覽和一個imageview的線性佈局。 textviews和imageview從sqlite數據庫獲取數據。 我也有兩個按鈕(prev,next)來回導航數據庫。工作正常。用於線性佈局的Android幻燈片動畫

現在我想給我的應用程序添加動畫:當我按下下一個按鈕時,linearlayout(帶有textviews和圖像)應該滑動到左側,並且包含來自下一行的數據的linearlayout應該從對。另一種方式爲prev按鈕。

任何想法如何解決這個問題?

+0

是包含數據的LinearLayout另一個活動? :) –

回答

1

您可以使用translate補間動畫來實現此目的。

放置的LinearLayout保持textviews,ImageView的和按鈕在父線性/相對佈局:

<LinearLayout android:id="@+id/parent_layout"> 
    <LinearLayout android:id="@+id/container_layout"> 
     <Textview /> 

     <ImageView /> 

     <Buttons /> 
    </LinearLayout> 
</LinearLayout> 

定義兩個平移在res /動畫文件夾,一個用於先前和另一個用於下一

吐溫動畫
`previous.xml` - 

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="1000" 
    android:fromXDelta="-100%p" 
    android:toXDelta="0"> 
</translate> 

`next.xml` - 

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="1000" 
    android:fromXDelta="100%p" 
    android:toXDelta="0"> 
</translate> 

初始化動畫和在活動的onCreate()方法得到的「容器」佈局的參考:

Animation previousAnim = AnimationUtils.loadAnimation(MainMenuActivity.this, R.anim.previous); 
Animation nextAnim = AnimationUtils.loadAnimation(MainMenuActivity.this, R.anim.next); 
LinearLayout containerLayout = (LinearLayout) findViewById(R.id.container_layout); 

當next和prev被點擊,瀏覽該數據庫,更新textviews,imageviews等,並觸發動畫

previousButtonOnClick { 
    //navigate db and update views 
    containerLayout.startAnimation(previousAnim); 
} 

nextButtonOnClick { 
    //navigate db and update views 
    containerLayout.startAnimation(nextAnim); 
} 
+0

娜娜,謝謝你的迴應。 – gerhard

+0

第二部分:我試過了:如果我點擊prev/next按鈕,當前的線性佈局會立即清除而不是滑出。新值按照預期滑入。 – gerhard

+0

然後開始動畫,檢查是否在「清除」之前滑出 –