これを行うには複数の方法がありますが、それを行う最良の方法はView
(クラスはView
から派生しています)を作成し、これにビットマップの描画を処理させることですすべてのあなたのタッチイベント。
Bitmap
を読み込み、すべての位置を追跡してから(キャンバスにonDraw
で描画する)書き込むコードはたくさんありますが、1つの画像を描画するだけで非常に小さい場合画面上でドラッグすると、その上に構築してコードを整理しておくことができます。
View
にonDraw(Canvas)
とonTouchEvent(MotionEvent)
を上書きする必要があります。 BitmapFactory
(画像をプロジェクトのリソースとしてイメージに含める場合は、decodeResource
メソッド)を使用してビットマップを読み込み、使用しなくなったビットマップにrecycle
を呼び出す必要があります。
onDraw
には、Canvas.drawBitmap
を使用して特定の場所のキャンバスにビットマップを描画します。この方法には、ビットマップの上端と左端の座標をfloat
(つまりスケーリングまたはストレッチを実行しない)とし、スケーリング、ストレッチおよびスケーリングを実行するデスティネーションおよびソース矩形を使用する2つのオーバーロードがあります。配置。
私はいつも後者を使っています。細かい調整ができます。このルートを選択した場合は、描画される各イメージに対して2つのRect
インスタンスとBitmap
インスタンスを保持し、それらをタッチイベントで更新し、描画イベントでキャンバスに描画します。
(タッチイベントの場合のように)ビュー内で何かが変更された場合は、invalidate()
メソッドを呼び出して、フレームワークはonDraw
メソッドをトリガーするすべてのものを再描画することを知っています。
あなたはこの効果を達成するために[この回答を適応させる] [1]ことができます。 [1]:http://stackoverflow.com/questions/2591859/displaying-popup-images-on-button-click/2593495#2593495 –