3

キャンバスにビットマップ画像または単純な円を描いたとします。図面がタッチされているかどうかを確認するようにOnTouchListenerを設定するにはどうすればよいですか?キャンバス上に複数の円を描くので、それに応じて作業できるように、それぞれに一意のIDを持たせたいと思います。

4

3 に答える 3

1

画面をタッチすると、x座標とy座標が取得されます。あなたはすでに円の中心を知っています。

 //x and y are co-ordiantes when touched.
 //center_x and center_y are co-ordinates of the center of the circle.
 //R is the radius of the cirlcr      

 float dx = Math.abs(x-center_x);
 float dy = Math.abs(y-center_y);
 float R = radius ;//radius of circle.

 boolean checkDistance(float dx,float dy,float R)
 {
 if(dx>R)
 {
  return false;//outside
 }
 else if(dy>R)
 {
 return false;//
 }
 else
 {
 return true;
 }
 }
于 2013-03-14T16:01:06.063 に答える
0

キャンバスではこれを簡単に行うことはできません。タッチイベントは自分で処理し、座標/サイズ/z-indexに基づいてタッチする円を確認する必要があります。

ただし、すべての円が1つのビューになると、作業が簡単になります。このような場合、標準のAndroidタッチイベントリスナーを使用できるようになります。円の場合、タッチを処理するときに円の形状を考慮するカスタムビュークラスを作成する必要があります。

于 2013-03-14T15:59:11.983 に答える
0

ユーザーの描画座標を取得して、それらを円の座標と一致させない理由。

ユーザーの描画座標をキャッチする方法:

int x = (int) event.getX();
int y = (int) event.getY();
于 2013-07-11T14:14:00.870 に答える