2012-02-10 10 views
-4

私のような他の質問で解決策を見つけようとしましたが、何も見つかりませんでした。Android:ビットマップサイズがVMの予算を超えています。キャンバスに画像を読み込む

私はキャンバスに画像の束を読み込んでいます。しかし、java.lang.OutOfMemoryError:ビットマップサイズがVMの予算を超えています。私はテストのために実際の電話を使用しています(Nexus One)。アプリがクラッシュします。それは私のサムスンの振動で正常に動作します。

ここに私のコードだ:

CustomDrawableView.java

package com.images.testimage; 

import android.content.Context; 
import android.content.res.Resources; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.drawable.Drawable; 
import android.view.View; 

public class CustomDrawableView extends View { 
private Drawable canada; 
private Drawable usa; 
private Drawable mexico; 

public CustomDrawableView(Context context) { 
    super(context); 


    Resources res = context.getResources(); 
    canada = res.getDrawable(R.drawable.canada); 
    canada.setBounds(0, 0, 0 + canada.getMinimumWidth(), 0 + canada.getMinimumHeight()); 

    usa = res.getDrawable(R.drawable.usa); 
    usa.setBounds(0,0,usa.getMinimumWidth(), 
      usa.getMinimumHeight()); 

    mexico = res.getDrawable(R.drawable.mexico); 
    mexico.setBounds(0,0,mexico.getMinimumWidth(), 
      mexico.getMinimumHeight()); 
} 

protected void onDraw(Canvas canvas) { 
    canada.draw(canvas); 
    usa.draw(canvas); 
    mexico.draw(canvas); 
} 
} 

カナダ、米国とメキシコは、PNG画像です。それぞれは5kbです。

ここではメインのコードです:

TestImageActivity.java

package com.images.testimage; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 

public class TestImagesActivity extends Activity { 

/** Called when the activity is first created. */ 

CustomDrawableView mCustomDrawableView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mCustomDrawableView = new CustomDrawableView(this); 
    setContentView(mCustomDrawableView); 
    setRequestedOrientation(0); 

} 


@Override 
protected void onDestroy() { 
    super.onDestroy(); 
} 

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.options_menu, menu); 
    return true; 
} 
} 

は、私が唯一の米国とカナダのような2枚の画像をロードするとき、それは私のNexus Oneの上で動作します。 3ではない。私はそれらのような20以上の国のように読み込むと仮定します。助けてください?

ここではサンプルcanada.pngの画像は、可能な解決策の

enter image description here

+0

-1 ...この質問は1週間に5回尋ねられます... – Selvin

+0

-1 selvin.uと同意しないでください。 –

+0

二重合意。これは簡単に検索できます:http://stackoverflow.com/search?q=Android+bitmap+size+exceeds+VM+budgetこれは約5000の結果を返します – hooked82

答えて

0

一つ...あなたはそれを強調表示し、ドラッグした場合、あなたは画像が表示されます。.. ...その白色だ減らすです画像解像度。残念ながら、他に良いことはありません。

関連する問題