使用适配器为网格视图中最后添加的子项添加动画

时间:2013-06-05 16:01:49

标签: java android

我有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);
 }
}

一如既往,感谢您的帮助

1 个答案:

答案 0 :(得分: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);