В чем разница между методами ViewPropertyAnimator translateYBy() vs yBy()?
ViewPropertyAnimators (http://developer.android.com/reference/android/view/ViewPropertyAnimator.html) имеют два типа методов для перемещения видов вокруг:
translateX() vs x(), translateY() vs y(), translateXBy() vs xBy() и, наконец, переводYBy() vs yBy().
Может ли кто-нибудь сказать мне разницу между этими методами?
Ответы
Ответ 1
В документации говорится, что свойства X
и Y
являются абсолютными позициями, тогда как translationX
и translationY
относятся к свойствам LEFT и TOP соответственно.
Таким образом, разница между animate().x()
и animate().translationX()
заключается в том, что один анимируется до абсолютного значения, тогда как другой анимируется до все еще абсолютного значения, но определяется значениями вида LEFT
и TOP
.
Напротив, animate().xBy()
и animate().translationXBy()
увеличивают (алгебраически) значение свойства на указанную величину.
Это происхождение "некоторой математики", процитированной выше.
Ответ 2
Визуализация методов translationY(), y(), yBy(), translationYBy() приведена ниже.
![RVGRa.gif]()
![5fZqq.gif]()
![3tnpV.gif]()
![9Fvy5.gif]()
Ответ 3
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.
Надеюсь, что это разъяснит...
Ответ 4
translationX и translationY: эти свойства управляют тем, где представление находится в виде дельты от его левой и верхней координат, которые задаются его контейнером макета.
x и y: это простые служебные свойства, которые описывают конечное местоположение представления в его контейнере как сумму значений левого и верхнего значений, а также значений translationX и translationY.
Анимированные просмотры документов