为啥我不能强制我的一个视图在软件中呈现?

Posted

技术标签:

【中文标题】为啥我不能强制我的一个视图在软件中呈现?【英文标题】:Why can't I force one of my Views to render in software?为什么我不能强制我的一个视图在软件中呈现? 【发布时间】: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()。它可以不同于视图 【参考方案1】:

先尝试调整位图的大小。使用 createBitmap。

【讨论】:

以上是关于为啥我不能强制我的一个视图在软件中呈现?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 UIView 子视图没有在父视图中呈现? (附代码)

为啥即使发布者发出一个值,我的视图也没有在 SwiftUI 中呈现

为啥我的 UIBarButtonItem 在呈现视图控制器时会进行动画滑入?

如何强制视图呈现自己?

为啥我的 UISearchController 不能正确呈现?

为啥我的 ajax 部分视图呈现在新页面上?