ViewPropertyAnimators(http://developer.android.com/reference/android/view/ViewPropertyAnimator.html)有两种类型的方法来移动视图:
translateX()vs x(),translateY()vs y(),translateXBy()vs xBy(),最后是translateYBy()vs yBy()。
有人可以告诉我这些方法之间的区别吗?
答案 0 :(得分:36)
上面的答案是不正确的。
文档指出X
和Y
属性是绝对位置,而translationX
和translationY
分别指向LEFT和TOP属性。
因此,animate().x()
和animate().translationX()
之间的区别在于,其中一个动画为绝对值,而另一个动画为静止绝对值,但由视图LEFT
和{{确定1}}值。
相比之下,TOP
和animate().xBy()
(按代数值)将属性值增加指定的数量。
这是"一些数学的起源"以上引用。
答案 1 :(得分:5)
答案 2 :(得分:2)
x
指的是x轴上视图的当前视觉位置。因此,例如,当您通过调用x
为view.animate().x(10)
设置动画时,视图将会设置为动画,以便移动到x=10
。让我们假设当你开始动画时视图处于(100,150)的位置。到动画结束时,视图将在(10,150)中。
现在,将此与translationX
进行对比。如果通过调用view.animate().translationX(10)
为此属性设置动画,则表示您正在使用x轴中的许多像素移动视图。让我们假设相同的例子,当您开始动画时视图位于(100,150)的位置。到动画结束时,视图将在(110,150)中。
希望澄清x()
和translationX()
之间的区别。 y()
和translationY()
的差异相同,但在y轴上相同。
在我看来,xBy()
与translationX()
达到的效果相同,但使用x
属性本身加上一些数学。 yBy()
和translationY()
是y轴的等价物。
希望澄清......
答案 3 :(得分:0)
translationX和translationY:这些属性通过其布局容器设置的左侧和顶部坐标控制View所在的位置作为增量。
x和y:这些是描述最终结果的简单实用程序属性 视图在其容器中的位置,作为左侧和顶部的总和 值和translationX和translationY值。
答案 4 :(得分:0)
首先,试着理解两者之间的区别 视图的 x 与 translationX 属性。
您可以通过在 here
上引用文章来实现在那之后你就会得到不同。
当我们使用 x() / translationX() / xBy() / translationXby() 属性制作动画时,视图的 translationX 属性会改变。您也可以通过添加如下日志来检查它
Log.i("INFO getX", String.valueOf(bartImageView.getX()));
Log.i("INFO getTranslationX", String.valueOf(bartImageView.getTranslationX()));
以下是各种函数动画结束前后的样子:
之前(在所有动画之前相同):
INFO getX: 278.0
INFO getTranslationX: 0.0
x(100)
(第一次)之后:
INFO getX: 100.0
INFO getTranslationX: -178.0
在(第二次)之后(没有动画):
INFO getX: 100.0
INFO getTranslationX: -178.0
translationX(100):
之后(第一次):
INFO getX: 378.0
INFO getTranslationX: 100
在(第二次)之后(没有动画):
INFO getX: 378.0
INFO getTranslationX: 100
xBy(100):
(第一次)之后:
INFO getX: 378.0
INFO getTranslationX: 100
之后(第二次):
INFO getX: 478.0
INFO getTranslationX: 200
translationXBy(100)
(第一次)之后:
INFO getX: 378.0
INFO getTranslationX: 100
之后(第二次):
INFO getX: 478.0
INFO getTranslationX: 200
如您所见,xBy() 和 translationXBy() 以相同的方式工作,并且每次动画时都以代数方式将 translationX 添加到视图中被触发。
同样的事情也适用于 y Dimension。随意添加日志并查看。