我试图设置图像作为背景(PiePlot),但我得到OutOfMemory
异常。设置背景时发生OutOfMemory错误
bg图片大小为170kb。
我尝试了5kb的背景样本图片,它毫无例外地工作。
我尝试以下操作:
@Override
protected void onDestroy() {
super.onDestroy();
unbindDrawables(mView);
System.gc();
}
private void unbindDrawables(View view) {
if (view.getBackground() != null) {
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}
但如果/当叫onDestroy()
这是非常有用的。但是,当启动应用程序时,这将不起作用,因此应用程序崩溃。
我想这也:
BitmapDrawable bitmapDrawable = (BitmapDrawable) ctx.getResources().getDrawable(R.drawable.bg2);
BitmapFactory.Options bitopt = new BitmapFactory.Options();
bitopt.inSampleSize = 10;
plot.setBackgroundImage(bitmapDrawable); //plot is PiePlot object
但相同的结果,即应用程序崩溃。
任何帮助表示赞赏。
什么参数应该传递给这个方法?我有'BitmapDrawable'对象....以及如何决定** inSampleSize Factor **,你在这里建议'4' ... – GAMA
inSampleSize值意味着你的图像会减少***倍....这里我给4这意味着我的图像会减少4倍到实际图像,你必须通过你的图像作为参数 –
传递你的bimap图像...... –