【发布时间】:2012-04-25 08:08:56
【问题描述】:
在我拥有的自定义视图中,我将 Canvas.drawBitmap 与宽度超过 2048 像素的源位图一起使用。这当然会在启用硬件加速时引起问题,每次调用 drawBitmap 时,LogCat 都会显示“W/OpenGLRenderer(4968): Bitmap too large to be uploading into a texture”。
所以为了解决这个问题,我尝试在我看来调用setLayerType(View.LAYER_TYPE_SOFTWARE, null)。唯一的问题是它似乎没有帮助。当我尝试运行我的应用程序时,LogCat 仍然会发出警告,并且最终不会绘制任何内容。
我不明白为什么会这样。 This article on the Android site 明确表示:
您可以使用以下代码在运行时为单个视图禁用硬件加速:
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
我做错了什么吗?为什么 Android 不尊重 setLayerType 调用?
[以防万一:我正在运行 Android 3.2 的三星 Galaxy Tab 10.1 上执行测试]
【问题讨论】:
-
检查 canvas.isHardwareAccelerated()。它可以不同于视图
标签: android android-4.0-ice-cream-sandwich android-custom-view hardware-acceleration