1

プログラムに読み込んでいる画像がいくつかあり、OutOfMemoryError を引き起こしているようです。透明なアルファ レイヤーがあるため、.png ファイルを使用することをお勧めしますが、この SO リンクによると、イメージに BitmapFactory コマンドを使用して OoME を回避する方がよい場合があります。.png ファイルで BitmapFactory コマンドを使用することは可能ですか? .png ファイルに固執するか、それらすべてをビットマップまたは画像の他の形式に変換しようとする方が良いですか? 約 393k 相当の画像しかありません。

エラーコード:

05-01 03:07:36.197: E/AndroidRuntime(561): Caused by: java.lang.OutOfMemoryError
05-01 03:07:36.197: E/AndroidRuntime(561):  at android.graphics.Bitmap.nativeCreate(Native Method)
05-01 03:07:36.197: E/AndroidRuntime(561):  at android.graphics.Bitmap.createBitmap(Bitmap.java:605)
05-01 03:07:36.197: E/AndroidRuntime(561):  at android.graphics.Bitmap.createBitmap(Bitmap.java:551)
05-01 03:07:36.197: E/AndroidRuntime(561):  at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:437)
05-01 03:07:36.197: E/AndroidRuntime(561):  at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:524)
05-01 03:07:36.197: E/AndroidRuntime(561):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:499)
05-01 03:07:36.197: E/AndroidRuntime(561):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:351)
05-01 03:07:36.197: E/AndroidRuntime(561):  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)
05-01 03:07:36.197: E/AndroidRuntime(561):  at android.content.res.Resources.loadDrawable(Resources.java:1937)
05-01 03:07:36.197: E/AndroidRuntime(561):  at android.content.res.TypedArray.getDrawable(TypedArray.java:601)

編集:私の画像は一種のカスタム画像ビューで読み込まれます

 <LinearLayout
     android:orientation="horizontal"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:gravity="bottom"
     android:layout_weight="0.55"
     android:id="@+id/dicemenu">

     <com.surreall.yacht.SquareButton        
        android:layout_height="fill_parent"
        android:layout_width="0dip"          
        android:layout_weight="1"
    >
        <ImageView
        android:id="@+id/die1"
        android:layout_gravity="center"
        android:adjustViewBounds="true"
        android:scaleType="centerInside"
        android:layout_height="wrap_content"
        android:layout_width="0dp"          
        android:layout_weight="1" 
        android:layout_margin="9dp" 
        />

      </com.surreall.yacht.SquareButton>

カスタムイメージビューは次のようになります(長い話でしたが、ここで見つかった問題から得た解決策でした:

package com.surreall.yacht;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.LinearLayout;

public class SquareButton extends LinearLayout {

    public SquareButton(Context context) {
        super(context);
    }

    public SquareButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    // This is used to make square buttons.
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, widthMeasureSpec);
    }
}
4

1 に答える 1

1

Bitmap.recycle()画像が不要になったときに試してみてください

于 2012-05-01T08:26:48.433 に答える