setTranslationY()和translationYBy()之间的区别?

时间:2018-01-04 08:38:08

标签: android animation android-animation

我正在尝试实现以下功能: - 当有人点击我的图像视图时,它应显示出现在动画中的图像,即从屏幕顶部进入。为此,我遵循以下方法

  • 将图片视图翻译出视图
  • 将图像附加到视图
  • 使用动画将其翻译回来

我有两组代码可以让屏幕上的视图动画不起作用,但只是在视图上调用setTranslationY() 请参阅附加的代码段

imageView.setTranslationY(-2000);
imageView.setImageResource(R.drawable.red);
imageView.animate().translationYBy(2000).setDuration(300);

这有效,但是没有。

imageView.animate().translationYBy(-2000);
imageView.setImageResource(R.drawable.red);
imageView.animate().translationYBy(2000).setDuration(300);

您能否解释一下setTranslateY()与translationYby()之间的行为和差异。

2 个答案:

答案 0 :(得分:0)

translationYBy和setTranslationY之间的区别在于,当您点击图像时,第一个会影响图像的动画,而第一个图像会在程序开始运行时影响图像,这意味着如果您定位图像让我们说使用setTranslationY 360,它将在应用程序开头的360处

答案 1 :(得分:0)

来自文档:https://developer.android.com/reference/android/view/ViewPropertyAnimator

translationY

在API级别12中添加 公共ViewPropertyAnimator translationY(浮点值) 此方法将使View的translationY属性动画化为指定的值。已在该属性上运行的动画将被取消。

参数值float:要设置为动画值的值。


translationYBy

在API级别12公共ViewPropertyAnimator中添加 translationYBy(浮点值)此方法将导致视图的 按指定值设置的animationY属性。 已在该属性上运行的动画将被取消。

参数值float:要进行动画处理的数量,以偏移量表示 从当前值开始。

很明显,区别在于参数的含义:对于translationY,它表示绝对位置,对于translationYBy,它表示与当前值的偏移量。