1

落下する回転する星や、表面ビュー上のキャンバスでアニメーション化された、下から上に浮かぶテキストなど、さまざまな小さなアニメーションを起動するアプリを作成します

それらは一度起動されるとすべて一定であるため、そのために2つの方法を計画しました。1つは、すべてのアニメーションを処理する大きなスレッドであり、アニメーションを1つずつ更新します。

または、流れ星などのアニメーションの種類ごとに独自のスレッドを設定し、特定のポイントごとにメイン アクティビティでスレッドの 1 つにコマンドを送信し、作成して開始し、彼のことを忘れないようにすることができます。 、彼をバックグラウンドで実行させ、アニメーションの最後にそのスレッドが自己終了します。

そのため、起動された各スレッドなどの保存について心配する必要はありません。特定の時間に開始できるスレッドの数がわからないためです。

ランダムな小さな短いスレッドを起動するか、1 つの大きなスレッドですべてを処理する方がメモリ効率が高くなりますか? よりスムーズにうまく機能しますか?

アニメーションは単に視覚的なエンチャントのためのものであり、他のアニメーションと相互作用することもありません。開始、ループ、終了するだけです。

理解していただければ幸いです :\

4

2 に答える 2

2

おそらく、すべての描画を処理する 1 つのスレッドを持つSurfaceViewが必要になるでしょう。アニメーションごとに 1 つのスレッドを持つことは、非常に複雑に思えます。1 つのアニメーション スレッドがレンダリングされるたびに呼び出される 、 などのアニメーション タイプごとに 1 つのメソッドを持つことができます。renderStars()renderText()

推奨読書:

  • SurfaceViewのドキュメント
  • The Canvas and Drawables API Guide - 「SurfaceView について」セクションにリンクしましたが、ドキュメントのほとんどを読む必要があります。
  • Lunar Lander サンプル アプリ- Google が最近開発者サイトを刷新した後、オンライン コードは現在 404-ing になっていますが、このリンクは SDK マネージャーでコードを見つける場所を示しています。
于 2012-07-05T06:57:29.393 に答える
0

アニメーション中に UI を更新するUI Thread必要があるため、アニメーションの実行に別のスレッドを使用することはできません。ただし、集中的なアニメーションの場合は、 を使用するGaming Engineか、独自の を作成する必要があります。Game Threadこれにより、最初にアニメーションの式に従ってオブジェクトのデータが更新され、その後 に描画されUI threadます。

于 2012-07-04T19:39:05.870 に答える