Android 通过ValueAnimator与ViewPropertyAnimator translationX设置边距动画

Android 通过ValueAnimator与ViewPropertyAnimator translationX设置边距动画,android,android-layout,android-animation,android-view,Android,Android Layout,Android Animation,Android View,我是android动画的初学者。我在一个相对的窗口中有一些视图,我希望更改视图位置。我有哪些选择,它们有什么不同 我尝试过以下方法: view.animate() .translationX(toX) .setDuration(duration); 及 两者都会更改视图的位置。谁能解释一下这两种方法的区别吗。我还有哪些其他选择,哪些是首选选择 view.animate() .translationX(toX) .setDuration(duration); 我认为它是首选的,因为它不像第二次

我是android动画的初学者。我在一个相对的窗口中有一些视图,我希望更改视图位置。我有哪些选择,它们有什么不同

我尝试过以下方法:

view.animate()
.translationX(toX)
.setDuration(duration);

两者都会更改视图的位置。谁能解释一下这两种方法的区别吗。我还有哪些其他选择,哪些是首选选择

view.animate()
.translationX(toX)
.setDuration(duration);
我认为它是首选的,因为它不像第二次更新那样在每次更新时调用measure()和layout()

一般来说:
-translationX旨在调节子对象在其父对象中的位置

-通过更改边距参数来执行动画不是一个好主意(这意味着设置一次,并且很少更改)

第一个是最好的解决方案。它是专门为动画而创建的,因此是最优化的版本。 必须记住,如果为视图设置动画,则每次移动都会重新计算整个布局(显然是为了平移,但不是为了alpha),因此必须尽可能使布局树保持平坦。如果可能的话,尽量避免使用
RelativeLayout
s,因为它们在每帧测量两次()。
您可以在这里查看许多有关性能问题的精彩视频:

我已经更新了问题。请看一看,给我你有价值的建议。@Shubendra我也认为可以使用RelativeLayout和动画translationX来完成。
view.animate()
.translationX(toX)
.setDuration(duration);