4

我正在尝试移动RelativeLayoutusing TranslateAnimation。我为执行相同而编写的代码是:

translateAnimation = new TranslateAnimation(0, 0, heightOfRootView-excuseContainer.getHeight(), currentYPoint);
translateAnimation.setRepeatMode(0);
translateAnimation.setDuration(500);
translateAnimation.setFillAfter(true);
excuseContainer.startAnimation(translateAnimation);

我正在尝试从特定视图的当前 y 位置开始动画(我不需要更改视图的 x 位置)但是动画每次都从第一个 y 点开始。如何从当前 y 视图位置到所需视图位置执行此操作。

这里heightOfRootView代表全屏高度, excuseContainer是我想用动画移动的那个视图,currentYPointexcuseContainer.

编辑:我有任何翻译动画教程可用。我搜索了它,但我没有找到..

谢谢你的支持。

4

1 回答 1

10

您正在使用的构造函数的第三个参数TranslateAnimation是 delta 值,因此起点的计算方式如下:

currentYPos + startingDeltaY

由于您似乎传递了一个Y指向屏幕上某物位置的值,因此这个 delta 值将不正确。

尝试使用此构造函数:

公共翻译动画(int fromXType,float fromXValue,int toXType,float toXValue,int fromYType,float fromYValue,int toYType,float toYValue)

像这样:

new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0, Animation.ABSOLUTE, heightOfRootView-excuseContainer.getHeight(), Animation.ABSOLUTE, currentYPoint);
于 2013-05-24T04:37:18.140 回答