我有一个观点,即是硬件加速在许多设备上。 内观,我需要能够检查硬件加速是否被使用。 根据Android的SDK文档 ,这是用做View.isHardwareAccelerated()
有趣的是,在支持硬件加速设备进行测试时,此方法始终返回false,即使意见本身实际上正在硬件加速。 (我确凿地验证了这一点),它变得更加混乱:
如果我做一个呼叫View.getLayerType()
我看到它总是被设置为View.LAYER_TYPE_NONE
。 如果我做调用View.setLayerType(View.LAYER_TYPE_SOFTWARE)
我可以有效地禁用硬件加速。 通过调用我可以重新启用它View.setLayerType(View.LAYER_TYPE_HARDWARE)
OR View.setLayerType(View.LAYER_TYPE_NONE)
为什么会View.LAYER_TYPE_NONE
启用硬件加速???
移动的,对于支持好像我可以通过核查是否检查状态硬件加速设备View.LAYER_TYPE_SOFTWARE
设置,但是我有我的怀疑,这种方法不会在不支持硬件加速的设备。 我想知道我是否滥用View.isHardwareAccelerated()
或者如果它只是打破。
编辑:我觉得我有点更进一步地理解问题。 这个问题也是有帮助的:
在运行时检测硬件加速:安卓
我的工作原理是,查看犯规还不知道无论是硬件加速与否时,它的构造函数被调用,这是我做我的支票。 如果是这样的话,我想知道什么我可以在我的类,它扩展视图,让我成功地检查硬件加速覆盖。 我怀疑View.onSizeChanged(...)
会的工作,但我想避免使用一些可能会被称为多次。
编辑#2:看起来就是这样。 我把我的支票存入View.onSizeChanged()
它现在可以正确报告。 我一直在想,如果那里有我的视图中一个更好的地方,我可以移动,虽然此检查。