1

キャンバスにビットマップを描画する imageView を作成しました。ImageView は、描画するビットマップよりも背が高いため、画像は垂直方向の中央に配置されます。

draw メソッドでは、ビットマップの左上は座標 (0,0) で表され、右下は (bounds.bottom, bounds.right) (drawable クラスの getBounds を使用して取得) で表されます。

ImageView でタッチ イベントを追跡しています。私の質問は、描画されたビットマップに関連するタッチイベントをどのように計算するのですか? 相対イベント座標を計算するためのドローアブルの描画位置に関する情報が見つかりません。

たとえば、ビットマップの左上をタッチすると、位置 (0,0) でイベントが返されます。

4

1 に答える 1

0

画像が中央にあることが確実にわかっている限り:

y_coordinate_relative_to_image = touch_y_coordinate - (screen_height - image_height)/2 x_coordinate_relative_to_image = touch_x_coordinate - (screen_width - image_width)/2

x 方向の中央にも配置されていない場合、左揃えであれば何もする必要はありません。右揃えの場合は、幅の差を差し引きますが、係数 2 は差し引きません。

そうは言っても、以下で説明されている問題に遭遇する可能性があります。

Android タッチ入力: 座標?

AndroidManifest.xml が正しく構成されていない場合、タッチ座標が画面のピクセル解像度と同じ範囲をカバーしていないように見えます。

于 2013-01-31T23:43:48.417 に答える