如果你已經使用Google+應用在Android上,你一定注意到上收到的評論用動畫的每個ListView項一淡入淡出和動畫一個展現的意見之一。
我想爲某些視圖(如TextView等)在我的每個ListView項目中實現這種類型的動畫。
我可以實現fadeIn和fadeOut動畫部分,但問題是我在哪裏將其動畫代碼放到獨立工作的每個充氣ListView項目。
任何幫助,將不勝感激。提前致謝。
如果你已經使用Google+應用在Android上,你一定注意到上收到的評論用動畫的每個ListView項一淡入淡出和動畫一個展現的意見之一。
我想爲某些視圖(如TextView等)在我的每個ListView項目中實現這種類型的動畫。
我可以實現fadeIn和fadeOut動畫部分,但問題是我在哪裏將其動畫代碼放到獨立工作的每個充氣ListView項目。
任何幫助,將不勝感激。提前致謝。
請使用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,你可以使用一個。只要正確使用動畫偵聽器即可。
希望它有幫助。
存在問題。動畫工作正常,但也許由於視圖回收,動畫效果從一個列表項目跳轉到另一個列表項目,即使不應該在特定列表項目上執行任何動畫。任何解決方案 –
如果動畫工作正常,那麼我所說的應該是正確的。只有在適配器和ViewHolder模式沒有正確實現的情況下,纔會出現這種問題。 –
我已經使用了ViewHolder模式,視圖也被回收了。除動畫以外,所有值均正確分配。我嘗試了很多東西,但沒有任何效果。 –
你也可以在ListView中做到這一點。請張貼更多關於您想要製作動畫元素的信息並根據哪些標準?這對於告訴您需要放置代碼的位置很重要。 –
我想在每個ListView項目中有兩個TextViews。人們會淡入在應用程序啓動時說「7:45 pm」,然後在2-3秒後TextView將淡出,並且一個新的TextView表示「1小時45分鐘左右」將淡入舊的TextView位置,再次在2 -3秒這個新的TextView將fadeOut爲最初的TextView「下午7點45分」讓路。你明白我的觀點了嗎? –