我正在尝试设置一个简单的动画,在屏幕的右上角拍摄图像,将其移动到30%点,移动一圈,然后移回边缘。见下图。然而,当前的脚本做了奇怪的事情,虽然它最终在正确的地方,但在此之前几乎没有任何东西。此外,根据Android版本和屏幕尺寸,它可能会做更多的事情。任何帮助将非常感激。谢谢!
几个关键点。我希望开头的左边缘始终面向运动方向。我想要一个从左到右移动的圆周运动,但如果不能做到,我就不会对它进行设置,只要第一部分成立即可。
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:shareInterpolator="true">
<set>
<translate
android:fromXDelta="0%p" android:toXDelta="0%p"
android:fromYDelta="00%p" android:toYDelta="20%p"
android:duration="001" android:startOffset="0"/>
<translate
android:fromXDelta="0%p" android:toXDelta="-80%p"
android:fromYDelta="00%p" android:toYDelta="0%p"
android:duration="2000" android:startOffset="1"/>
</set>
<set>
<rotate
android:fromDegrees="180"
android:toDegrees="0"
android:pivotY="20%p"
android:duration="1000"
android:startOffset="2000"/>
<translate
android:fromXDelta="0%p" android:toXDelta="70%p"
android:fromYDelta="00%p" android:toYDelta="0%p"
android:duration="100"
android:startOffset="3000"/>
</set>
</set>
答案 0 :(得分:2)
我是在一个新的android项目中使用主xml布局中的按钮完成的。有效。所有百分比都是父级大小,相对于视图的位置。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate android:fromXDelta="0%p" android:toXDelta="-80%p"
android:fromYDelta="0%p" android:toYDelta="0%p"
android:duration="2000" />
<rotate android:fromDegrees="0" android:toDegrees="-180"
android:pivotX="-70%p" android:pivotY="10%p" android:duration="1000"
android:startOffset="2000" />
<translate
android:fromXDelta="0%p" android:toXDelta="80%p"
android:fromYDelta="0%p" android:toYDelta="0%p" android:duration="2000"
android:startOffset="3000" />
</set>
答案 1 :(得分:0)
我尝试创建绘图中描述的动画。我将动画拆分为2个文件 left_down.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:shareInterpolator="true">
<set>
<translate
android:fromXDelta="0%p" android:toXDelta="-80%p"
android:fromYDelta="00%p" android:toYDelta="0%p"
android:duration="2000" android:startOffset="0"/>
<translate
android:fromXDelta="0%p" android:toXDelta="0%p"
android:fromYDelta="00%p" android:toYDelta="20%p"
android:duration="2000" android:startOffset="2000"/>
</set>
</set>
right.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-80%p" android:toXDelta="0%p" android:fromYDelta="20%p"
android:toYDelta="20%p" android:duration="2000" android:fillAfter="true"/>
这是我在活动中使用的代码
image = (ImageView)findViewById(R.id.image);
anim = AnimationUtils.loadAnimation(this, R.anim.left_down);
goBack = AnimationUtils.loadAnimation(this, R.anim.right);
anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationRepeat(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
image.startAnimation(goBack);
}
});
image.startAnimation(anim);