андроид вращающаяся анимация - PullRequest
3 голосов
/ 03 ноября 2011

У меня есть макет, который выглядит следующим образом: (без стрелок)

layout

изображения животных вокруг макета.я хочу сделать вращающуюся анимацию, чтобы все животные двигались в направлении стрелок (на самом деле они должны иметь возможность вращаться на 360 градусов вокруг обзора) и заменяли местоположение друг друга.НО сохраняйте свою ориентацию - так что каждое животное будет стоять на ногах, а не на голове: -)

Я застрял с этой проблемой уже 2 дня, и я понятия не имею, как реализоватьэто

пожалуйста, помогите?Спасибо, Рон

1 Ответ

12 голосов
/ 04 ноября 2011

Вы можете вручную анимировать их, как игровые спрайты. Другим вариантом будет противоположная анимация поворота:

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));
}

Почему-то я не могу заставить вращение правильно использовать линейный интерполятор. Он продолжает ускоряться / замедляться. Возможно, придется сделать это в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...