gpt4 book ai didi

android - View.isHardwareAccelerated() 始终为 false

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:32 26 4
gpt4 key购买 nike

我有一个在许多设备上都经过硬件加速的 View 。在该 View 中,我需要能够检查是否使用了硬件加速。 According to Android SDK documentation ,这是使用 View.isHardwareAccelerated() 完成的。有趣的是,在支持硬件加速的设备上进行测试时,此方法总是返回 false,即使 View 本身实际上是硬件加速的。 (我已经最终验证了这一点)它变得更加困惑:

如果我调用 View.getLayerType(),我会看到它始终设置为 View.LAYER_TYPE_NONE。如果我调用 View.setLayerType(View.LAYER_TYPE_SOFTWARE) 我可以有效地禁用硬件加速。我可以通过调用 View.setLayerType(View.LAYER_TYPE_HARDWARE)View.setLayerType(View.LAYER_TYPE_NONE) 重新启用它。为什么 View.LAYER_TYPE_NONE 启用硬件加速???

继续,对于支持硬件加速的设备,我似乎可以通过检查是否设置了 View.LAYER_TYPE_SOFTWARE 来检查状态,但是我怀疑这种方法不会工作不支持硬件加速的设备。我想知道我是在滥用 View.isHardwareAccelerated() 还是只是出了问题。

编辑:我想我更接近于理解这个问题了。这个问题也很有帮助:

Detect Hardware Acceleration at Runtime: Android

我的工作理论是,当调用构造函数时,View 还不知道它是否是硬件加速的,而这正是我正在检查的地方。如果是这种情况,我想知道我可以在扩展 View 的类中覆盖什么,这将使我能够成功检查硬件加速。我怀疑 View.onSizeChanged(...) 会起作用,但我想避免使用可能被多次调用的东西。

编辑#2:看起来就是这样。我将支票移动到 View.onSizeChanged() 中,它现在可以正确报告。不过,我仍然想知道在我的 View 中是否有更好的地方可以移动这张支票。

最佳答案

我自己也一直在思考这个问题。很高兴看到您了解问题所在。文档确实正确地描述了这一点,但不是很清楚。 “返回:如果 View 附加到一个窗口并且该窗口是硬件加速的,则为真”

关于android - View.isHardwareAccelerated() 始终为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12119753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com