2015-07-12 54 views
-1

Google+ app screenshot如何在每個ListView項目中動畫視圖?

如果你已經使用Google+應用在Android上,你一定注意到上收到的評論用動畫的每個ListView項一淡入淡出和動畫一個展現的意見之一。

我想爲某些視圖(如TextView等)在我的每個ListView項目中實現這種類型的動畫。

我可以實現fadeIn和fadeOut動畫部分,但問題是我在哪裏將其動畫代碼放到獨立工作的每個充氣ListView項目

任何幫助,將不勝感激。提前致謝。

+0

你也可以在ListView中做到這一點。請張貼更多關於您想要製作動畫元素的信息並根據哪些標準?這對於告訴您需要放置代碼的位置很重要。 –

+0

我想在每個ListView項目中有兩個TextViews。人們會淡入在應用程序啓動時說「7:45 pm」,然後在2-3秒後TextView將淡出,並且一個新的TextView表示「1小時45分鐘左右」將淡入舊的TextView位置,再次在2 -3秒這個新的TextView將fadeOut爲最初的TextView「下午7點45分」讓路。你明白我的觀點了嗎? –

回答

1

請使用BaseAdapter並在您的getView()方法中添加必要的動畫代碼。

只需在視圖首次膨脹時膨脹視圖並開始動畫。 (提示 - 當convertView == null

使用ViewHolder模式來唯一保持各單列表項的元素,並開始動畫沒有你需要的每個項目內的任何View

要啓動動畫,創建XML的動畫,並開始喜歡這個動畫,

   Animation anim = AnimationUtils.loadAnimation(this, R.anim.slide_up); 
       anim.setInterpolator(new DecelerateInterpolator()); 
       anim.setDuration(500); 
       anim.setStartOffset(100); 
       anim.setAnimationListener(new Animation.AnimationListener() { 
        @Override 
        public void onAnimationStart(Animation animation) { 

        } 

        @Override 
        public void onAnimationEnd(Animation animation) { 
         progress.setVisibility(View.INVISIBLE); 
        } 

        @Override 
        public void onAnimationRepeat(Animation animation) { 

        } 
       }); 

       progress.startAnimation(anim); 

爲了給你如何創建XML動畫的想法,

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <alpha 
     android:duration="200" 
     android:fromAlpha="1.0" 
     android:toAlpha="0.0" /> 

    <translate 
     android:duration="200" 
     android:fromYDelta="0%p" 
     android:toYDelta="5%p" /> 
</set> 

您可以使用一個將多個動畫組合在一起並一次播放的動畫。

也請探索動畫API更詳細,你會發現有用的方法,如setRepeatMode()setRepeatCount(),這將幫助你實現理想的結果。

此外,你不需要兩個獨立的TextViews,你可以使用一個。只要正確使用動畫偵聽器即可。

希望它有幫助。

+0

存在問題。動畫工作正常,但也許由於視圖回收,動畫效果從一個列表項目跳轉到另一個列表項目,即使不應該在特定列表項目上執行任何動畫。任何解決方案 –

+0

如果動畫工作正常,那麼我所說的應該是正確的。只有在適配器和ViewHolder模式沒有正確實現的情況下,纔會出現這種問題。 –

+0

我已經使用了ViewHolder模式,視圖也被回收了。除動畫以外,所有值均正確分配。我嘗試了很多東西,但沒有任何效果。 –