2011-07-28 8 views
0

私はoutofmemoryerrorスレッドをすべて読みました。私はmamnyイメージのサイズを変更しようとしています。私は250x250の最大サイズで私のサーバーにこれらの画像を保存しています。私はリストにそれらをロードしようとしています。私はキャッシュシステムを実装して、それは素晴らしい動作します。問題は、サーバーから画像サイズをキャッシュしていて、キャッシュからプルするたびにサイズ変更を行っていることです。imageview OutOfMemoryError例外:例外を避けるためにサイズ変更されたイメージをキャッシュしようとしています

画像をキャッシュに入れる前に画像のサイズを変更したいと思います。私はリスト内の画像のサイズを変更するのにxmlを使用しています。私はキャッシュにイメージを置く場所

<ImageView android:id="@+id/img_user" android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:src="@drawable/noimgsmall" 
     android:scaleType="fitCenter"/> 

マイリストアダプタがあります。問題は、この時点で画像ビューのサイズがわからないことです。

Drawable cachedImage = null; 
       cachedImage = imageLoader.loadImage(
         store.getLogoUrl(), 
         new ImageThreadLoader.ImageLoadedListener() { 
          public void imageLoaded(Drawable imageBitmap) { 
           View itemView = parent.getChildAt(position - 
             ((ListView) parent).getFirstVisiblePosition()); 
           if (itemView == null) { 
            return; 
           } 
           ImageView img = (ImageView) 
           itemView.findViewById(R.id.img_user); 
           if (img == null) { 
            return; 
           } 
           img.setImageDrawable(imageBitmap); 
          } 
         } 
       ); 
       logoImageView.setImageDrawable(cachedImage); 

キャッシュするイメージのサイズはどのように把握できますか?

答えて

1

私がやったことは、イメージを実際の縮尺のサイズにリサイズしてキャッシングすることでした。これ以上のメモリ問題はありません。あなたはリストビューでできる限り、Aviodのサイズを変更する必要があります。

関連する問題