android旋转动画

时间:2011-11-03 19:41:21

标签: android layout animation view rotation

我有一个如下所示的布局:(没有箭头)

layout

布局周围的动物图片。 我想制作一个旋转动画,以便所有的动物都会朝着这个方向前进 箭头(实际上,它们应该能够围绕视图旋转360度)并替换彼此的位置。但要保持自己的方向 - 这样每只动物都会站在她的腿上而不是她的头上: - )

我现在已经坚持这个问题2天了,我不知道如何实现这个

请帮忙吗? 谢谢, 罗恩

1 个答案:

答案 0 :(得分:12)

您可以手动为它们设置动画,例如游戏精灵。另一种选择是反对旋转动画:

rotate_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
            android:toDegrees="0"
            android:fromDegrees="359"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="2000"
            android:repeatCount="infinite"
            android:interpolator="@android:anim/linear_interpolator"
            />
</set>

rotate_right.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
            android:toDegrees="359"
            android:fromDegrees="0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="2000"
            android:repeatCount="infinite"
            android:interpolator="@anim/lin"
            />
</set>

布局xml文件(只是顶部和底部的文本框。你必须自己实现4个角落;)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        android:orientation="horizontal">
    <FrameLayout
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:id="@+id/outer"
            >
        <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical"
                android:gravity="center">
            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:id="@+id/top"
                    android:text="Top"/>
            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:id="@+id/bottom"
                    android:text="Bottom"/>


        </LinearLayout>

    </FrameLayout>

</LinearLayout>

在您的活动中:

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.[yourlayout]);

    findViewById(R.id.outer).startAnimation(AnimationUtils.loadAnimation(this,R.anim.rotate_left));
    findViewById(R.id.top).startAnimation(AnimationUtils.loadAnimation(this,R.anim.rotate_right));
    findViewById(R.id.bottom).startAnimation(AnimationUtils.loadAnimation(this,R.anim.rotate_right));
}

出于某种原因,我无法使旋转正确使用线性插值器。它不断加速/减速。可能必须在代码中这样做。