解决:Bitmap too large to be uploaded into a texture exception

Bitmap too large to be uploaded into a texture (440x2302, max=2048x2048)  

从Android3.0 (API level 11)开始,Android的2D显示管道被被设计得更加支持硬加速了.硬加速使用GPU承担了所有在View的canvas上执行的绘制操作。硬件加速是个好东西,可以让ListView、WebView滑动的更流畅,但是也总是会出现莫名其妙的的问题。问题1:EditText中文字的重叠在某些4.x的机器中,如果打开了硬件加速,EditText会出现奇怪的文字重叠的情况。Bitmap too large to be uploaded into a texture (440x2302, max=2048x2048) - Kenny - Kenny出现原因:JellyBean的硬件加速bug,在此我们关掉硬件加速即可。

解决方案:在EditText中加入一x

解决方案:在EditText中加入一句:

android:layerType="software"

问题2:图片无法显示
做的程序里有的时候会需要加载大图,但是硬件加速中 OpenGL对于内存是有限制的。如果遇到了这个限制,LogCat只会报一个Warning:  Bitmap too large to be uploaded into a texture (587x7696, max=2048x2048) 

<activity
            android:name = "icyfox.webviewimagezoomertest.MainActivity"
            android:label = "@string/app_name"
            android:hardwareAccelerated = "false" />

简单说就是硬件加速的时候,对图片的大小有限制。不同设备可能有不同的最大值。这个问题悲催的地方是,程序貌似没有捕获到这个exception, 结果是程序也不报错,图片也显示不出来。只有看debug log才能发现这个error message.

比较好的解决方法是类似google map的实现:将图片分成不同的块,每次加载需要的块。android提供了一个方法:

http://developer.android.com/reference/android/graphics/BitmapRegionDecoder.html

1 public void drawBitmap (Bitmap bitmap, Rect src, RectF dst, Paint paint)
2  
3 public Bitmap decodeRegion (Rect rect, BitmapFactory.Options options)

采取上述操作后,就可以加载很多图片,同时也可以显示超级大图了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值