Android-анимация с onDraw или ImageView?

Я хочу создать игру для Android. Каждый раз, когда кто-то касается дисплея, игрок должен подниматься вверх, а если он отпускает, игрок должен падать.

С помощью многих руководств я заставил это работать, но теперь я хочу анимировать его, и я застрял. Это означает, что изображение игрока должно меняться каждые полсекунды. Кроме того, следует создать анимированное вращение, когда игрок поднимается.

Однако (после нескольких часов гугления) я не смог найти никакого полезного ответа на свою проблему. На сайте разработчиков Android рассказывается о создании ImageView и файла XML. Но вот где я застрял: у меня нет ImageView, мой плеер (для которого я использовал файл PNG) просто создается методом onDraw():

public void onDraw(Canvas canvas) {
       for (Sprite s : sprites) {   
            canvas.drawBitmap(s.getGraphic(), s.getLocation().x,
                    s.getLocation().y, null);

        }
}

Теперь я хотел спросить, как мне сделать анимацию и анимированное вращение. Должен ли я начать с ImageView или я могу как-то «преобразовать» метод onDraw в ImageView? Или есть другой способ сделать анимацию и анимированное вращение без ImageView?

Во-вторых, если бы мне пришлось создавать ImageView, я не понимаю, как я могу сделать плеер «динамическим», то есть: изменять положение, когда кто-то касается дисплея.

Заранее спасибо :)

РЕДАКТИРОВАТЬ:

Хорошо, я создал свой файл animation.xml в папке с возможностью рисования:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false" android:id="@+id/splashAnimation">
<item android:drawable="@drawable/ship" android:duration="200" />
<item android:drawable="@drawable/ship_2" android:duration="200" />
</animation-list>

и в моем основном файле я добавил:

ImageView img = (ImageView) findViewById(R.id.splashAnimation);
    img.setBackgroundResource(R.drawable.animation);
    ship_anim= (AnimationDrawable) img.getBackground();
ship_anim.start();

Однако теперь я получаю сообщение об ошибке: NullPointerException

В чем проблема?


person user2072953    schedule 14.02.2013    source источник


Ответы (1)


если у вас есть чертежи, описывающие анимацию, вы всегда можете создать xml в своей папке с возможностью рисования, как это, чем добавить это как imageView в макет

    <?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/img1" android:duration="100" />
<item android:drawable="@drawable/img2" android:duration="100" />
<item android:drawable="@drawable/img3" android:duration="100" />
<item android:drawable="@drawable/mimg4" android:duration="100" />
<item android:drawable="@drawable/img5" android:duration="100" />   
</animation-list>

Код для него будет выглядеть так:

myAnimation = (AnimationDrawable) findViewById(R.id.animation);

Добавить только обработчик событий, чем

if (!isPlaying)
{
playDrawableAnimation();
    isPlaying = true;
} else
{
    faceAnimation.stop();
    isPlaying = false;

}
person Bobans    schedule 14.02.2013