キャラクターをアニメーション化(例えば、犬を走らせる)したいです。 AnimationDrawableはこれに最適と思われ、AnimationDrawableにはImageViewが必要です。 SurfaceViewでImageViewを追加して移動するにはどうしたらいいですか?SurfaceViewのAndroidアニメーションキャラクター
ありがとうございました。
キャラクターをアニメーション化(例えば、犬を走らせる)したいです。 AnimationDrawableはこれに最適と思われ、AnimationDrawableにはImageViewが必要です。 SurfaceViewでImageViewを追加して移動するにはどうしたらいいですか?SurfaceViewのAndroidアニメーションキャラクター
ありがとうございました。
SurfaceViewを使用すると、すべてをその中に描画することはお客様の責任です。キャラクターをレンダリングするためにAnimationDrawableやビューは必要ありません。 GoogleからLunar Landerサンプルゲームをご覧ください。
ImageView
は不要です。
あなたのアニメーションがXML Drawable
であれば、あなたはAnimationDrawable
変数にResources
から直接読み込むことができます。そして、それは限界だし、キャンバス上に描画
Resources res = context.getResources();
AnimationDrawable animation = (AnimationDrawable)res.getDrawable(R.drawable.anim);
:
animation.setBounds(left, top, right, bottom);
animation.draw(canvas);
また、次のスケジュールされた間隔でアニメーションを手動で設定する必要があります。これは、animation.setCallback
を使用して新しいコールバックを作成し、次にandroid.os.Handler
をインスタンス化し、handler.postAtTime
メソッドを使用して、現在のThread
のメッセージキューに次のアニメーションフレームを追加することによって達成できます。
animation.setCallback(new Callback() {
@Override
public void unscheduleDrawable(Drawable who, Runnable what) {
return;
}
@Override
public void scheduleDrawable(Drawable who, Runnable what, long when) {
//Schedules a message to be posted to the thread that contains the animation
//at the next interval.
//Required for the animation to run.
Handler h = new Handler();
h.postAtTime(what, when);
}
@Override
public void invalidateDrawable(Drawable who) {
return;
}
});
animation.start();
ハンドラを再利用しない理由はありますか? – RichieHH
ありがとうございましたBurov、AnimationDrawableはゲームには適していませんか? – droidbee
はい、そうです。 AnimationDrawableはビューではなく、nmeloの説明どおりに使用できます。 – RichieHH