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 に答える