0

我有一个GridView我不断添加视图的。当视图添加到网格时,我希望它做一个动画。但是,由于我必须用来setAdapter()刷新GridView,它最终会为所有视图设置动画,因为它们都被重新添加。有没有办法解决?

这是我要添加的视图的代码:

public class GridImageView extends ImageView {


public GridImageView(Context context) {
    super(context);
}

public GridImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public GridImageView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

@Override
protected void onAttachedToWindow() {
    super.onAttachedToWindow();
    ScaleAnimation anim = new ScaleAnimation(0,1,0,1);
    anim.setDuration(1000);
    anim.setFillAfter(true);
    this.startAnimation(anim);
 }
}

一如既往,感谢您的帮助

4

1 回答 1

0

感谢 Luksprog 的建议,我在我的自定义视图中设置了一个标志,该标志将确定视图在添加到网格视图时是否应该动画。

public class GridImageView extends ImageView
{

   private boolean _animate = false;
   public GridImageView(Context context) {
       super(context);
   }

   public GridImageView(Context context, AttributeSet attrs) {
       super(context, attrs);
   }

   public GridImageView(Context context, AttributeSet attrs, int defStyle) {
       super(context, attrs, defStyle);
   }

   @Override
   protected void onAttachedToWindow() {

       if(_animate){

            super.onAttachedToWindow();
            ScaleAnimation anim = new ScaleAnimation(0,1,0,1);
            anim.setDuration(1000);
            anim.setFillAfter(true);
            this.startAnimation(anim);
       }
   }


   public void set_animate(boolean _animate) {
       this._animate = _animate;
   }

}

我的适配器在其GetView()函数中检查它是否是数组列表中的最后一个,如果是,则将标志设置为 true。

    if( i == ( _gridDetailsArrayList.size() - 1 ))
        holder.gridImage.set_animate(true);
于 2013-06-06T08:41:22.230 回答