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