【发布时间】:2012-03-03 06:56:38
【问题描述】:
我试图在像我这样的其他问题中找到解决方案,但一无所获。
我正在将一堆图像加载到画布中。但是,我收到 java.lang.OutOfMemoryError: bitmap size超出 VM 预算。我正在使用真正的手机进行测试(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。每个是 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 图像...它是白色的...如果您突出显示并拖动它,您将看到该图像...
【问题讨论】:
-
-1 ...这个问题一周被问5次...
-
-1 同意 selvin.u 从不检查 SO。
-
双重同意。这就是搜索的简单程度:stackoverflow.com/… 这将返回大约 5000 个结果
-
你的图片很大,大部分都是空白。在不浪费所有空间的情况下创建新图像怎么样?
-
是的,伙计们可能是个骗子,但什么是骗子?如何使用那个标记按钮并做一些有建设性的事情,而不是因为它是多么“欺骗”而大吃一惊。 ://
标签: android android-ndk drawable android-canvas out-of-memory