4

ここに来てから数か月後、ついに私の問題を提出する番になりました。

インターネットから画像をロードするカスタム ArrayAdapter を備えた ListView があります (行ごとに 1 つの画像)。ArrayAdapter で onImageLoaded メソッドを呼び出す ImageCache クラスを作成しました。

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

問題は、1 つの ImageView で startAnimation (おそらく、fadeIn) が呼び出されるたびに、現在アニメーション化されているすべての ImageView でアニメーションが最初から再実行されているように見え、スクロール時にいくつかの (またはすべての) 画像の奇妙な点滅が発生することです。

Utils.log は、startAnimation が正常に呼び出されたことを示しています (つまり、ListView に表示される新しい ImageView ごとに 1 回だけ)。

私のアニメーション 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>  

これは誰かに起こったことがありますか?私が間違っていることがわかりますか?

ありがとう!

4

1 に答える 1

2

この問題は、毎回新しいアニメーションを作成するのではなく、アニメーションをロードして保存することによって発生します。

ソリューション例:

public void onImageLoaded(ビットマップ画像、ImageViewビュー){

    view.setImageBitmap(画像);
    アニメーションの fadeInAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.fade_in);
    view.startAnimation(fadeInAnimation);
}

このコード行が上記のメソッドに依存していることに注意してください。

アニメーションの fadeInAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.fade_in);

于 2011-12-15T20:21:06.710 に答える