6

私の Android アプリでは、ユーザーがクリックしたポイントと特定の VectorDrawable グループの間の距離を知りたいです。

blueVectorDrawable のようなグループまでの距離が必要です。

<vector android:height="24dp" android:viewportHeight="1052.3622"
    android:viewportWidth="744.0945" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="#ff0000"
        android:name="blue"
        android:pathData="M182.9,349.5m-74.7,0a74.7,74.7 0,1 1,149.3 0a74.7,74.7 0,1 1,-149.3 0"
        android:strokeAlpha="1" android:strokeColor="#000000" android:strokeWidth="4.23501825"/>
    <path android:fillColor="#00ff00"
        android:name="red"
        android:pathData="M474.3,392.4a84.3,102.9 0,1 0,168.6 0a84.3,102.9 0,1 0,-168.6 0z"
        android:strokeAlpha="1" android:strokeColor="#000000" android:strokeWidth="5"/>>
</vector>

Androidでこの距離を計算する簡単な方法はありますか?

4

2 に答える 2

0

最初に、使用された点の座標を次のように取得します。

@Override
public boolean onTouch(View v, MotionEvent event) {
   float x1 = event.getX();
   float y1 = event.getY();
   return true;
}

ドローアブルが画面上のどこに表示されるかがわかっているので、ドローアブルの位置座標 (x2,y2) にいくつかの値を割り当てることができます。

または、ドローアブルのイメージビューを次のview.getLocationOnScreen(int\[\])ように使用します。

int[] posiXY = new int[2];
yourDrawablesImageView.getLocationOnScreen(posiXY);
int x2 = posiXY[0];
int y2 = posiXY[1];

次に、距離の式を単純に適用すると、次のようになります。

float distance=sqrt((x2−x1)*(x2−x1)+(y2−y1)*(y2−y1));

必要な距離が得られます。

于 2017-01-12T18:28:18.590 に答える