Translate Animation 控制布局或按钮或应用动画的任何视图的位置和位置。它可以在 x 方向或 y 方向移动对象。
句法 :
TranslateAnimation transAnimation= new TranslateAnimation(fromXposition, toXPosition, fromYPosition, toYPosition);
fromXposition - 动画开始位置的 x 坐标
toXPosition - 动画结束的 x 坐标
fromYPosition - 动画应该从哪里开始的 y 坐标。
toYPosition - 动画结束的 y 坐标。
1)如果我们只想翻译,X direction
那么我们将fromYPosition和toYPosition设置为零。
2)如果我们只想翻译,Y direction
那么我们将fromXPosition和toXPosition设置为零。
还有另一种方法,我们在 res 文件夹中创建一个 anim 文件夹。在这个文件夹中,我们添加我们的动画 xml。我们使用一个翻译标签,我们在其中指定属性值。
在下面的 xml
android:duration
定义动画的执行时间
android:repeatCount
指定编号。动画应该重复的次数,
android:fromYDelta
定义动画应该从哪里开始的 y 坐标
android:toYDelta
定义动画结束的 y 坐标。
line_translate.xml
<set xmlns:android=”http://schemas.android.com/apk/res/android”>
<translate android:duration=”300″ android:repeatCount=”1 android:fromYDelta=”0.0″ android:toYDelta=”174.0″ />
代码:
Animation lineTranslate;
//loading xml from anim folder
Animation localAnimation = AnimationUtils.loadAnimation(this, R.anim.line_translate);
//You can now apply the animation to a view
view.startAnimation(transAnimation);
翻译动画可以改变对象的视觉外观,但不能改变对象本身。也就是说,如果您将平移动画应用于视图,它会移动到新位置,但不会触发其点击事件,而点击事件仍会在其先前位置触发。发生这种情况是因为视图仍处于其原始位置。
为了克服这个问题,我们可以使用ObjectAnimation
实际移动对象的哪个。对象动画是唯一实际移动对象的动画。您可以使用创建翻译动画ObjectAnimator
。
ObjectAnimator transAnimation= ObjectAnimator.ofFloat(view, propertyName, fromX, toX);
transAnimation.setDuration(3000);//set duration
transAnimation.start();//start animation
view - 这是要应用动画的视图
propertyName - 被动画的属性。
FromX,toX - 动画将随时间变化的一组值。
希望这会给你很好的理解。