2

通常、これにどのようにアプローチするかについて簡単な質問があります。Paper Toss などのゲームで、既存の画像の上に指を置き、それを少しドラッグして (たとえば、画像ビューを引っ張って) 放すと、この画像が画面上を移動するのを見たことがあるかどうかはわかりません。

そのようなことを行うには、そのようなグラフィックを処理するための最良の方法は何でしょう(主にグラフィックの動きとタッチイベントに関係しています):次に、タッチが離されたときに画面全体の画像のtranslateAnimationを実行します

-OR サーフェス ビューを使用して Canvas に画像のビットマップを描画し、OnDraw メソッドでタッチ イベントの X/Y 座標を取得し、それに応じてビットマップを描画します

私はいつもどちらを選ぶべきか、そしてその理由は何でしょうか?と混乱します。(Android 2.3 を目指しているので、ドラッグ アンド ドロップは対象外です)

PS: Canvas と surfaceview は常に一緒にあると思いますので、間違っていたら訂正してください

4

2 に答える 2

1

PS: Canvas と surfaceview は常に一緒にあると思いますので、間違っていたら訂正してください

はい、あなたは正しいです、それらは両方とも一緒になります。

最初のアニメーション (Translate、Rotate、Scale のいずれか) では、位置、特定の時間の ImageView のビューを変更するだけです (その間、アニメーションの効果が表示されます)。その後、元の位置に来ます。

しかし、キャンバスでは、その座標に基づいて ImageView (ここでは画像ビューではなくビットマップを描画します) を永続的に変更します。指が触れた場所でイメージを変更し、取得した新しい座標で単純に描画するとします。OnTouchEvent()

最後に、私たちの要件に基づいて最善のものはないと言います。主にゲームのコンテキストで使用されるサーフェスとキャンバス。

于 2012-04-27T05:08:45.867 に答える
0

gfx を多用するもの、つまりスプライトを使用するものは、最高のパフォーマンスを得るためにSurfaceViewまたはで実行する必要があります。GLSurfaceViewアニメーション化されているかどうかにかかわらず、動かない画像/ビットマップの場合、標準View/ViewGroup実装は問題ありません。

SDK サンプルLunarLanderは、開始するのに適した場所です。

于 2012-04-27T03:54:36.077 に答える