动画适用于网格中的所有图像视图?

时间:2012-05-14 08:28:09

标签: android android-animation

我有一个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(),因此每次下载缩略图时都会运行上述代码。 仍然不确定如何解决它!

1 个答案:

答案 0 :(得分:0)

好的,我现在已经修好了。

我将动画移动到我自己的ImageView类中,并添加了一个启动动画的方法。 这是由我在缩略图下载完成时设置的照片集上的标志触发的。