为啥我不能强制我的一个视图在软件中呈现?
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 在呈现视图控制器时会进行动画滑入?