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