Я пытался найти решения в других вопросах, таких как мой, но ничего не смог найти.
Я загружаю кучу изображений на холст. Тем не менее, я получаю java.lang.OutOfMemoryError: размер растрового изображения превышает бюджет виртуальной машины. Я использую реальный телефон для тестирования (Nexus One). Приложение вылетает. Он отлично работает на моем Samsung Vibrate.
Вот мой код:
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. Каждый 5 КБ.
Вот основной код:
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;
}
}
Он работает на моем Nexus One, когда я загружаю только 2 изображения, такие как США и Канада. Не с 3. Я полагаю, чтобы загрузить еще 20 стран, как те. Помогите пожалуйста?
Вот пример изображения canada.png ... Он белого цвета ... если вы выделите его и перетащите, вы увидите изображение ...