我目前正在尝试研究如何在动画视图时正确使用硬件层。
我正在实现一个 ViewGroup ,它使用户能够拖动一个子视图,之后我将其动画到他们释放时的某个位置(就像 ViewPager 将如何安置在页面上一样)。本文指出,您应该只在动画期间启用硬件层。
我遇到的问题是,启用硬件层后,Android 必须创建层,这在 Galaxy Nexus 上需要 70-100 毫秒。这意味着我不能在开始动画之前立即执行此操作,因为拖动和动画之间的延迟会非常明显。出于同样的原因,我在开始拖动时也无法启用它。
现在,这种延迟仅在第一次创建硬件层时出现,所以理想情况下,我希望在视图添加到布局后立即创建它们。我被指向View.buildLayer(),但我不确定如何处理这个问题。
- 实现这一目标的正确方法是什么?
- 我的 ViewGroup 中是否有任何方法可以覆盖并在子视图上调用 buildLayer()?
- 硬件层能否以某种方式失效,导致另外 70-100ms 的延迟?我该如何处理?