7

我想使用翻译动画将我的图像视图从当前位置移动到屏幕上的某个固定位置。另外我想知道翻译动画是如何工作的以及它接受的参数是什么?

我的一段代码是...

       RelativeLayout.LayoutParams lParams = (LayoutParams) spreadImage
                .getLayoutParams();
       TranslateAnimation ta

        ta = new TranslateAnimation(lParams.leftMargin,
                randomLeftMarginsList.get(currentSpreadIndex),
                lParams.topMargin,

        ta.setAnimationListener(this);
        ta.setDuration(ApplicationConstant.PUZZLE_GAME_IMAGE_SPREADING_TIME);
        spreadImage.startAnimation(ta);

提前致谢。

4

3 回答 3

18

Translate Animation 控制布局或按钮或应用动画的任何视图的位置和位置。它可以在 x 方向或 y 方向移动对象。

句法 :

 TranslateAnimation transAnimation= new TranslateAnimation(fromXposition, toXPosition, fromYPosition, toYPosition);

fromXposition - 动画开始位置的 x 坐标

toXPosition - 动画结束的 x 坐标

fromYPosition - 动画应该从哪里开始的 y 坐标。

toYPosition - 动画结束的 y 坐标。

1)如果我们只想翻译,X direction那么我们将fromYPositiontoYPosition设置为零。

2)如果我们只想翻译,Y direction那么我们将fromXPositiontoXPosition设置为零。

还有另一种方法,我们在 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”&gt;
<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 - 动画将随时间变化的一组值。

希望这会给你很好的理解。

于 2013-09-18T06:44:06.283 回答
7

您只需要将视图从一个位置转换到另一个位置。所以需要使用下面的代码来完成你的任务。

imgHeart.animate()
    .scaleXBy(-6f)
    .scaleYBy(-6f)
    .alpha(.1f)
    .translationX((heigthAndWidth[0] / 2) - minusWidth) // trying to make my location
    .translationY(-((heigthAndWidth[1] / 2) - minusHeight))
    .setDuration(1000)
    .start();
于 2015-09-18T06:47:55.477 回答
2

您可以使用NineOldAndroids。它有翻译动画的例子。

于 2013-09-18T05:50:39.810 回答