奇效

2011-07-18 17 views
4

現在來這裏的幾個月後,然後它終於輪到我提交我的問題:奇效

我有從網上(每一個圖像加載圖片自定義ArrayAdapter一個ListView行)。我做了我的ArrayAdapter調用一個onImageLoaded方法的ImageCache類:

public void onImageLoaded(Bitmap image, ImageView view){ 
    view.setImageBitmap(image); 
    Utils.log("start animation : " + view.toString()); 
    view.startAnimation(mAnim); 
} 

問題是每次startAnimation(按說淡入)被稱爲一個ImageView的,動畫似乎從ALL開始重新運行ImageView-s當前正在動畫,在滾動時導致幾個(或全部)圖像閃爍一些奇怪。

Utils.log聲稱startAnimation通常被調用(即每個出現在ListView中的新ImageView只有一次)。

我的動畫XML的內容是這樣:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/linear_interpolator" 
    android:shareInterpolator="true"> 
    <alpha 
     android:fromAlpha="0.0" 
     android:toAlpha="1.0" android:duration="400"/> 
</set> 

這已經發生過任何人嗎? 你能看到我做錯了什麼嗎?

謝謝!

回答

2

問題是由加載動畫並存儲它引起的,而不是每次都創建一個新的動畫。

解決方案例如:

 
public void onImageLoaded(Bitmap image, ImageView view){ 

    view.setImageBitmap(image); 
    Animation fadeInAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.fade_in); 
    view.startAnimation(fadeInAnimation); 
} 

注意這行代碼的癮上述方法:

Animation fadeInAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.fade_in);

+1

是的,這是正確的,謝謝。前段時間我發現了它,應該已經發布瞭解決方案,我的錯誤。無論如何,這可能對其他人有用。 – darma