有关硬件加速器的问题hardwareAccelerated

本文讨论了Android中硬件加速器hardwareAccelerated可能导致的大图加载问题,包括Bitmap too large to be uploaded into a texture的错误。通过关闭硬件加速或者使用BitmapRegionDecoder分块加载图片来解决此问题。此外,还提到了内存溢出问题的解决策略,如减小图片尺寸、及时释放Bitmap对象和调整程序heap size。
摘要由CSDN通过智能技术生成

今天也遇到了这样的问题,在用整张图片当做背景的时候,报错了,还以为内存溢出,但不是,是提示的最大储存位数不够。balabala·····

<!-- hardwareAccelerated是硬件加速,在这儿将其关掉是为了加载大的背景图,如果硬件加速是true
那么会对大的位图限制有限制,不允许大图显示,此时报出Bitmap too large to be uploaded into a texture (2880x5120, max=4096x4096)
的错误,这里简单粗暴的将hardwareAccelerated设置为false。更好的办法可以将图片分成不同的块,每次加载需要的块。
android提供了一个这样的方法http://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html
可以研究下谷歌的这个方法。
 -->

我就找了找弄了一个最残暴的方法,将硬件加速器hardwareAccelerated设置为false就不报错了,可以正常运行了。不过还有更好的方法,当然从网上借鉴来的方法,来学习应用到我的程序中。http://blog.zfdang.com/2013/03/summary-of-image-processing-in-android/   总结的比较大神,看懂了也。分享给大家也作为我的学习笔记。以下为其内容:

第一个问题是out of memory

1 java.lang.OutOfMemoryError: bitmap size exceeds VM budget

这个据说是VM对一个程序申请的所有的bitmap对象会有一个最大值的要求。解决这个问题有几个方法:

1. 从源文件生成图片时,直接将图片缩小,而不是加载原始大小的图片。如下代码:

01 Bitmap bitmap = null;
02 if (mUseZoomOut || mUseZoomIn) {
03     // decode image size (decode metadata only, not the whole image)
04     o = new BitmapFactory.Options();
05     o.inJustDecodeBounds =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值