我基本上想要将视图从1个位置移动到另一个位置,而且我还想逐渐增加其高度,那么我应该使用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)
但没有用。是否可以逐渐增加视野高度?
答案 0 :(得分:20)
使用startAnimation。
以下是示例代码段
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);
<强> setAnimation 强>
设置要为此视图播放的下一个动画。但视图动画尚未开始。
<强> startAnimation 强>
如果您想立即播放动画,请使用startAnimation。此方法允许对开始时间和失效进行细粒度控制,但您必须确保
1)动画设置了开始时间,
2)当动画应该开始时,视图将无效。
答案 1 :(得分:1)
这是我的理解。
SetAnimation
当视图添加到viewGroup时,将调用动画。当添加视图时,不会调用动画
StartAnimation
即使添加了视图,也会一直调用动画。