1

私のアプリで別の画像に画像を動的に配置したいと思っています。 最初の画像を背景とし、他の画像を最上位にすることを考慮して、これらの最上位画像(画面上のxとyも変更する必要があります)もコードで移動する必要があります。Androidで別の画像を浮かべて描画する

たとえば、ユーザーが魚や海の動物を配置する海を想像すると、それらの海の動物は画面の上と下に動き始めます。そのようになります。

どうすればいいですか?あなたが知っていないが、それを行う簡単なプログラムやデモを覚えている場合は、それも非常に歓迎されます!

ありがとうございました!

+0

あなたはこの効果を達成するために[この回答を適応させる] [1]ことができます。 [1]:http://stackoverflow.com/questions/2591859/displaying-popup-images-on-button-click/2593495#2593495 –

答えて

2

これを行うには複数の方法がありますが、それを行う最良の方法はView(クラスはViewから派生しています)を作成し、これにビットマップの描画を処理させることですすべてのあなたのタッチイベント。

Bitmapを読み込み、すべての位置を追跡してから(キャンバスにonDrawで描画する)書き込むコードはたくさんありますが、1つの画像を描画するだけで非常に小さい場合画面上でドラッグすると、その上に構築してコードを整理しておくことができます。

ViewonDraw(Canvas)onTouchEvent(MotionEvent)を上書きする必要があります。 BitmapFactory(画像をプロジェクトのリソースとしてイメージに含める場合は、decodeResourceメソッド)を使用してビットマップを読み込み、使用しなくなったビットマップにrecycleを呼び出す必要があります。

onDrawには、Canvas.drawBitmapを使用して特定の場所のキャンバスにビットマップを描画します。この方法には、ビットマップの上端と左端の座標をfloat(つまりスケーリングまたはストレッチを実行しない)とし、スケーリング、ストレッチおよびスケーリングを実行するデスティネーションおよびソース矩形を使用する2つのオーバーロードがあります。配置。

私はいつも後者を使っています。細かい調整ができます。このルートを選択した場合は、描画される各イメージに対して2つのRectインスタンスとBitmapインスタンスを保持し、それらをタッチイベントで更新し、描画イベントでキャンバスに描画します。

(タッチイベントの場合のように)ビュー内で何かが変更された場合は、invalidate()メソッドを呼び出して、フレームワークはonDrawメソッドをトリガーするすべてのものを再描画することを知っています。

+0

私は実際に海の動物(トップレベルのスプライトを移動したいです)コードで...ユーザーは何もドラッグしません... onDrawイベントをオーバーライドして別のビューに画像を描画するコードサンプルはありますか? –

+0

ゲームプログラミングに関するこのチュートリアルをご覧ください。キャンバス上のものを描画するためのコードがたくさんあり、チュートリアルの後半ではOpenGLで動作するようにリファクタリングしています。チュートリアルの他のクールなものもたくさんあります(優れた説明とゲームループのコードサンプルもあります)。 http://obviam.net/index.php/table-of-contents/ – Rich

関連する問題