0

私のアプリケーションでは、複数の高解像度画像を含む3つの画面があります。画面で使用される画像の数は約70〜75です。 、私は、私はコードを書いたgetViewメソッド()メソッドでは、複数の画像を使用しているときにAndroid OutOfMemoryError

adapter = new ImageAdapter(this); 
gridview.setAdapter(adapter); 

int x = (int)(width/5.1f); 
imageView.setId(position); 
imageView.setLayoutParams(new GridView.LayoutParams(x,x)); 
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
imageView.setPadding(4, 20, 4, 20); 

をBaseAdapterを拡張するアダプタクラスを使用してグリッドレイアウトで画像を追加するコードを書かれているが、この画面をロードしている間、それはメモリの問題の多くを示し、 logcatでエラーが発生しました。

java.lang.OutOfMemoryError: bitmap size exceeds VM budget 

複数の高解像度画像でメモリの問題を処理するコードを書く方法を教えてください。ありがとう。

+1

70-75 ...何が驚きですか? )ImageAdapterのコードをここに配置してください –

+1

サムネイルを使用する必要があります。ソリューションのみを使用してください。 – Ferdau

+0

このリンクもチェックしてください http://stackoverflow.com/questions/4611822/java-lang-outofmemoryerror-bitmap-size-exceeds-vm -budget – user1298288

答えて

0

画像の解像度を調整する方法がない場合は、BitmapFactory.Options().inJustDecodeBounds = trueとして開き、画像に希望の調整サイズを渡してから、BitmapFactory.Options().inJustDecodeBounds = falseを使用して再度デコードします。

ビットマップイメージの実際のバイトサイズは、ピクセル数にピクセルに割り当てられたバイト数を掛けて計算されます。 ARGB_8888(推奨)はピクセルあたり4バイトを割り当てます。したがって、サイズは幅*高さ* 4バイトになります。

詳細については、AndroidからLoading Large Bitmaps Efficientlyレッスンをお読みください。このpostも役立ちます。

関連する問題