【发布时间】:2023-03-03 12:46:01
【问题描述】:
我正在开发自定义 ViewGroup。
这个 ViewGroup 有一堆孩子。我需要制作一些动画并改变它们的位置。我了解 Android 动画仅移动位图而不是真实对象。我一直试图通过关注各种资源来移动它们,但失败了。
到目前为止我对 ViewGroup 所做的事情:
- 衡量孩子和 ViewGroup
- 在 onLayout 中定位子项
我还想做什么
使用自定义动画来移动一小部分孩子。我正在使用自定义动画对象,因为我需要移动一堆视图,并且我正在对所有视图一起应用 translationX。我知道的另一种选择是在所有这些上启动一个单独的动画,并且想到它让我认为它不会被优化。
问题
视图动画效果很好,但它们的实际位置保持不变。所以下次我尝试做同样的动画,但是在新的坐标上,它不起作用。因为,他们的位置还没有更新。
我做了什么
- 使用
onAnimationEnd到layout每个孩子到新的左、上、右和下位置。所有视图都消失了 - 在
onAnimationEnd上,将translationX重置为零,然后开始重新定位视图。拨打view.setTranslationX(0f)无效
有人可以帮助我以正确的方式执行此操作吗?谢谢
【问题讨论】:
-
尝试使用ObjectAnimator,它支持library 用于API 11以下...
-
您手动调用 child.layout():对吗?所以在制作动画时也要这样做
-
你试过Animation.setFillAfter吗?
-
@GopalRao 我无法使用 ObjectAnimator,因为我正在尝试对一堆对象应用动画转换。尽管如此,我试过了,结果是一样的
-
我建议先改变你的子视图的位置,然后监听 onPreDrawListener() 并在那里开始你的动画..
标签: android android-layout android-animation android-view