2012-05-14 11 views
1

私は画像の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; 
     } 
    } 

これがなぜ起こるかEDIT OKが実際にそれは明らかだ - 私はよサムネイルがダウンロードされるたびにnotifydatasetchanged()を呼び出すので、上記のコードはダウンロードするたびにすべての画像に対して実行されます。 まだそれを修正する方法がまだわからない!

答えて

0

[OK]を今修正しました。

私は自分のImageViewクラスにアニメーションを移動し、アニメーションを開始するメソッドを追加しました。 これは、サムネイルのダウンロードが完了したときに設定された写真コレクションのフラグによってトリガーされます。

+0

コードを投稿してください。 – beholderrk

関連する問題