15

我基本上想将一个视图从一个位置移动到另一个位置,另外我还想逐渐增加它的高度,那么我应该使用 setAnimation 还是 startAnimation。

TranslateAnimation ta = new TranslateAnimation(0, 0, Animation.RELATIVE_TO_SELF, -otherview.getHeight());
ta.setDuration(1000);
ta.setFillAfter(true);

myview.startAnimation(ta); //or, which one to use and what is the difference. 

myview.setAnimation(ta);

问题:如何移动这个相对布局?

我试过myview.scrollTo(x,y)但没有用。是否可以逐渐增加视图高度?

4

2 回答 2

25

使用开始动画。

以下是示例代码段

trans = new TranslateAnimation(0, 100, 0, 100);
trans.setDuration(250);
trans.setInterpolator(new AccelerateInterpolator(1.0f));
someView.startAnimation(trans);

另外我也想逐渐增加它的高度,

为此,您将缩放动画。

如果要将它们组合成单个文件,请使用 Set。

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
   <scale android:fromXScale="0.0" android:fromYScale="0.0"
          android:toXScale="1.0" android:toYScale="1.0" 
          android:duration="700" android:fillBefore="false" />
   <translate android:fromXDelta="-200" android:fromYDelta="-200"
          android:duration="700" />
</set>

将以下代码放入 java 文件中:

Animation logoMoveAnimation = AnimationUtils.loadAnimation(this, R.anim.logoanimation); 
logoIV.startAnimation(logoMoveAnimation);

设置动画

设置为此视图播放的下一个动画。但视图动画尚未开始。

开始动画

如果您希望动画立即播放,请使用 startAnimation。此方法允许对开始时间和失效进行细粒度控制,但您必须确保

1)动画有一个开始时间设置,

2)当动画应该开始时,视图将失效。

于 2012-06-06T07:36:26.630 回答
3

这是我的理解。

设置动画

当视图被添加到视图组时,动画将被调用。当视图被添加时,动画将不会被调用

开始动画

即使添加了视图,动画也会一直被调用。

于 2014-12-11T09:28:35.443 回答