Nic*_*ick 12 android hardware-acceleration
我有一个在许多设备上加速硬件的View.在该视图中,我需要能够检查是否使用了硬件加速. 根据Android SDK文档,这是使用完成的View.isHardwareAccelerated().有趣的是,在支持硬件加速的设备上进行测试时,即使Views本身实际上是硬件加速,此方法也总是返回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启用硬件加速???
继续,对于支持hw加速的设备,似乎我可以通过检查是否View.LAYER_TYPE_SOFTWARE设置来检查状态,但是我怀疑这种方法不适用于不支持hw加速的设备.我想知道我是在滥用View.isHardwareAccelerated()还是只是被打破了.
编辑:我想我更接近理解这个问题.这个问题也很有帮助:
我的工作理论是,当调用构造函数时,View还不知道硬件是否加速,这是我正在检查的地方.如果是这种情况,我想知道我可以在我的类中覆盖哪些扩展View,这将允许我成功检查硬件加速.我怀疑它View.onSizeChanged(...)会起作用,但我想避免使用可能被无数次调用的东西.
编辑#2:看起来就是这样.我把支票搬进去View.onSizeChanged(),现在报道正确.我仍然想知道在我的视图中是否有更好的位置我可以移动此检查.
| 归档时间: |
|
| 查看次数: |
5025 次 |
| 最近记录: |