4

经过几个月来这里,然后终于轮到我提交我的问题了:

我有一个带有自定义 ArrayAdapter 的 ListView,它从 Internet 加载图像(每行一个图像)。我创建了一个 ImageCache 类,它在我的 ArrayAdapter 上调用 onImageLoaded 方法:

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

问题是每次在 ONE ImageView 上调用 startAnimation(假设是一个淡入淡出)时,动画似乎从当前正在动画的所有 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>  

这曾经发生在任何人身上吗?你能看到我做错了什么吗?

谢谢!

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 回答