Android Outofmemory可绘制
这是我的viewpager的可绘制阵列,当我运行它时,会导致内存不足错误,有没有办法减小图像大小等? 我做了很多搜索,但我不能使用它们。。 请帮忙Android Outofmemory可绘制,android,out-of-memory,Android,Out Of Memory,这是我的viewpager的可绘制阵列,当我运行它时,会导致内存不足错误,有没有办法减小图像大小等? 我做了很多搜索,但我不能使用它们。。 请帮忙 GalImages = new int[] { R.drawable.tutorials_01_android_en,R.drawable.tutorials_02_android_en,R.drawable.tutorials_03_android_en,R.drawable.tutorials_04};break @Override publi
GalImages = new int[] { R.drawable.tutorials_01_android_en,R.drawable.tutorials_02_android_en,R.drawable.tutorials_03_android_en,R.drawable.tutorials_04};break
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
final int temp = position;
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
imageView.setImageResource(GalImages[position]);
((ViewPager) container).addView(imageView, 0);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {}
});
return imageView;
}
这不是因为文件太大。由于Android缓存了Drawables,所以在使用少量图像后,内存就会耗尽。但我找到了另一种方法,跳过android默认缓存系统
Soultion:
在资源中创建一个可绘制文件夹,并将图像移动到资源中的“可绘制”文件夹,然后使用以下函数获取BitmapDrawable
public static Drawable getAssetImage(Context context, String filename) throws IOException {
AssetManager assets = context.getResources().getAssets();
InputStream buffer = new BufferedInputStream((assets.open("drawable/" + filename + ".png")));
Bitmap bitmap = BitmapFactory.decodeStream(buffer);
return new BitmapDrawable(context.getResources(), bitmap);
}
参考文献:
另外,在清单文件中添加下面的行
android:largeHeap="true"
根据您的分辨率,尝试将您的Drawable从较低的MPI移动到HDPI或甚至更高维度的文件夹,如XHDPI
我的图像的尺寸范围是400-800像素。我把我的抽屉储存在我的Galaxy S4上的MDPI内存中。我将它们移动到HDPI,解决了问题。正如穆罕默德所提到的,尝试将drawable(或MDPI)中的图像作为HDPI或更高版本移动到另一个维度文件夹 始终尽可能使用压缩PNG。有很多在线站点可以进行大规模压缩
参考资料:只要您的图像不是很大,您就可以为PNG使用可绘制nodpi文件夹。我可以确认这为我解决了问题。将android:largeHeap:“true”添加到清单文件中,并将可绘制图像移动到文件夹
mipmap hopi
中
[android][java][android studio]之前提到过@Muhammad, 创建包含多个图像(hdpi、ldpi、mdpi、xdpi等)为我解决了这个问题 因为我花了一些时间来考虑如何添加这些文件 下面是一些解释它的打印屏幕: 可绘制-->新建-->批处理可绘制导入(用于多个文件)
然后添加文件 然后选择了决议
看看这个问题。我也面临着同样的问题,你有什么解决办法吗?我几乎不敢相信像这样简单的事情能立刻解决我的记忆问题。非常感谢。不要用android解决此类问题:largeHeap=“true”,这不是解决方案