动画问题

时间:2011-08-12 00:42:52

标签: android android-xml android-animation

我正在尝试设置一个简单的动画,在屏幕的右上角拍摄图像,将其移动到30%点,移动一圈,然后移回边缘。见下图。然而,当前的脚本做了奇怪的事情,虽然它最终在正确的地方,但在此之前几乎没有任何东西。此外,根据Android版本和屏幕尺寸,它可能会做更多的事情。任何帮助将非常感激。谢谢!

enter image description here

几个关键点。我希望开头的左边缘始终面向运动方向。我想要一个从左到右移动的圆周运动,但如果不能做到,我就不会对它进行设置,只要第一部分成立即可。

<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>

2 个答案:

答案 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);