在我拥有的自定义视图中,我将 Canvas.drawBitmap 与大于 2048 像素的源位图一起使用。当启用硬件加速时,这当然会导致问题,每次调用 drawBitmap 时,LogCat 都会显示“W/OpenGLRenderer(4968):位图太大而无法上传到纹理中”。
所以为了解决这个问题,我尝试调用setLayerType(View.LAYER_TYPE_SOFTWARE, null)
我的观点。唯一的问题是它似乎没有帮助。当我尝试运行我的应用程序时,LogCat 仍然会发出警告,并且最终不会绘制任何内容。
我不明白为什么会这样。Android网站上的这篇文章明确指出:
您可以使用以下代码在运行时为单个视图禁用硬件加速:
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
有什么我做错了吗?为什么 Android 不尊重 setLayerType 调用?
[以防万一:我正在运行 Android 3.2 的三星 Galaxy Tab 10.1 上进行测试]