2012-05-14 62 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; 
     } 
    } 

編輯 OK實際上這是顯而易見的,爲什麼出現這種情況 - 我每次下載縮略圖時都會調用notifydatasetchanged(),所以每次下載時,上面的代碼都會運行所有圖像。 但仍然不知道如何解決它,但!

回答

0

好的,我現在已經解決了這個問題。

我將動畫移動到我自己的ImageView類中,並添加了一個方法來啓動動畫。 這是由縮略圖下載完成時設置的我收集的照片上的一個標記觸發的。

+0

你可以發表一些代碼嗎? – beholderrk

相關問題