我有一个图像的 GridView。图像在下载时显示,我想让它们具有淡入效果,因为图像填充了位图。我添加了代码来执行此操作,但动画适用于所有图像,而不仅仅是当时正在加载的图像。这意味着当设置下一个位图并重新启动动画时,所有图像都会淡出一小部分然后消失。
如何使动画仅适用于当时正在加载的图像?
淡入 XML:
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:interpolator="@android:anim/accelerate_interpolator"
android:duration="2500" android:repeatCount="0"/>
</set>
这是在 ImageAdapter 中加载图像的代码:
public View getView(int position, View convertView, ViewGroup parent) {
try {
BorderedImageView imageView;
imageView = new BorderedImageView(mContext, mPhotoId, position);
Animation myFadeInAnimation = AnimationUtils.loadAnimation(this.mContext , R.anim.fadein);
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView.setLayoutParams(new GridView.LayoutParams(mSize, mSize));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(3,3,3,3);
} else {
imageView = (BorderedImageView) convertView;
}
Bitmap b = photoCollection.GetThumbnail(position);
imageView.startAnimation(myFadeInAnimation);
imageView.setImageBitmap(b);
return imageView;
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
编辑好的实际上很明显为什么会发生这种情况 - 每次下载缩略图时我都会调用 notifydatasetchanged() ,因此每次下载时都会为所有图像运行上述代码。仍然不知道如何解决它!