最近项目中做了一个头像选择功能,没有使用系统自带的裁剪功能,自己写的图片裁剪,发现在裁剪全景图片时候出现了问题,无法正常显示,图片变成了黑色。
在ecplice中没有报错!!!打印出一条黄色警告语句:
Bitmap too large to be uploaded into a texture (440x2302, max=2048x2048)
查了一些资料,出现的原因:
从Android3.0 (API level 11)开始,Android的2D显示管道被被设计得更加支持硬加速了,并且程序默认支持加速,即
android:hardwareAccelerated="true".
硬件加速使用GPU承担了所有在View的canvas上执行的绘制操作。
硬件加速是个好东西,可以让ListView、WebView滑动的更流畅,但是也总是会出现一些莫名其妙的的问题。
1、edittext文件重叠
2、大图图片显示不出来
。。。
解决方法:
1、直接关闭硬件加速
整个应用application:
<application
android:hardwareAccelerated="false"
。。。。。。>
单个activity:
<activity
android:hardwareAccelerated="false"
。。。。。。>
2、将图片分成不同的块,每次加载需要的块。
android提供了一个方法:
public void drawBitmap (Bitmap bitmap, Rect src, RectF dst, Paint paint) |
public
Bitmap decodeRegion (Rect rect, BitmapFactory.Options options)
参考:、
http://api.apkbus.com/reference/android/graphics/BitmapRegionDecoder.html