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