经过几个月的到来之后,终于轮到我提交我的问题:
我有一个带有自定义ArrayAdapter的ListView,它可以从互联网上加载图像(每行一个图像)。我创建了一个ImageCache类,它在我的ArrayAdapter上调用onImageLoaded方法:
public void onImageLoaded(Bitmap image, ImageView view){
view.setImageBitmap(image);
Utils.log("start animation : " + view.toString());
view.startAnimation(mAnim);
}
问题是每次在一个ImageView上调用startAnimation(假设为fadeIn)时,动画似乎从当前动画的所有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>
这曾经发生在任何人身上吗? 你能看出我做错了吗?
谢谢!
答案 0 :(得分: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);