0

すべて-男性が画面を横切って歩くシンプルなアプリがあります。現在、アニメーションは付箋のフリップブックのように 1 か所で行われています。言い換えれば、糸車のようにフレームが一箇所で変化しています。私の質問は、フレームを変更するだけでなく、アニメーションを(希望のペースで)前進させるにはどうすればよいですか? この問題に関する私のコードは次のとおりです。

public void start(View v) {  
    ImageView img = (ImageView)findViewById(R.id.imageView); 
    img.setBackgroundResource(R.drawable.animation); 
    AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();                
    frameAnimation.start();
}

あなたの時間と努力に感謝します!

4

1 に答える 1

1

独自の画像 (男性の画像) を使用して、次のようなことができます。

メインクラス:

package com.android.animation;

import android.app.Activity;
import android.os.Bundle;

public class Main extends Activity 
{

    Animation myView;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myView = new Animation(this);
        setContentView(myView);
    }
}

アニメーション クラス:

package com.android.animation;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.View;

public class Animation extends View
{
Bitmap gBall;
float changingY;

public Animation(Context content)
{
    super(content);

    gBall = BitmapFactory.decodeResource(getResources(), R.drawable.ball);
    changingY = 0;
}

@Override
protected void onDraw(Canvas canvas)
{
    super.onDraw(canvas);
    canvas.drawColor(Color.BLACK);
    canvas.drawBitmap(gBall, (canvas.getWidth()/2), changingY, null);
    if(changingY < canvas.getHeight())
        changingY += 10;
    else
        changingY = 0;

    invalidate();
}
}

XML ファイル:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

</LinearLayout>

実際、必要に応じて、私のコードをコピーして貼り付けて、それがどのように機能するかを確認してください(drawable-hdpiフォルダーに画像を配置してください)...プロジェクトのテンプレートとして使用できるはずです. それが役に立てば幸い!

PSもちろん、ChangingY変数を次のように変更することもできますChangingX(たとえば、もちろん、drawBitmap()メソッドのような他のいくつかのことを変更する必要があります..難しいことではありません)ボールを水平線で移動させる...どのように機能するかを見てくださいあなたのために。

于 2012-08-09T19:56:18.150 に答える