10

「親の座標で長方形を打つ」。しかし、それはどういう意味ですか?

増幅するために、私が本当に知りたいのは、「ヒット長方形」というフレーズの意味です。それはなんのためですか?フレームワークはそれをどのように処理しますか?ライフサイクルのいつ、戻り値は意味がありますか?getLeft()、、、getTop()で定義された長方形とどのように違うのgetRight()でしょgetBottom()うか?

関数の名前に基づいて、もちろん答えを推測し、いくつかの例を試すことができますが、それは満足のいくものではありません。この機能については、Android Developer Webサイト、または私が調べた他の場所で何も役に立ちません。

4

3 に答える 3

4

これが最も完全な説明のようです。

getHitRect() メソッドは、親の座標で子のヒット矩形 (タッチ可能領域) を取得します。

例のスニペットでは、関数を使用して子ビューの現在のタッチ可能領域を (レイアウト後に) 決定し、TouchDelegate

于 2014-02-28T12:23:24.753 に答える
1

彼らは確かに文書化のより良い仕事をするべきです。source をView#getHitRect(Rect)見ると、ビューに「単位行列」がある場合、またはウィンドウに関連付けられていない場合、私たちが考えていることを正確に返すことがわかります。代替ブランチは、ビューに変換があることを意味するため、ビューをカバーする座標系で可能な最小の四角形である親の「ヒット四角形」を取得するには、四角形を原点に移動し、変換を実行してから元の位置に戻します。

したがって、変換がない場合は、この目的のショートカットとして使用できます。変換がある場合は、現在表示されているビューの外側または内側にある四角形で値を取得することに注意してください。

于 2016-09-17T02:08:06.870 に答える
0

Rect返されるには、次の4つの値が含まれます。

bottom長方形の下部のy座標を指定します。 left長方形の左側のx座標を指定します。等

親座標とは、ヒットした長方形の値が親の座標系で指定されていることを意味します。

夜に野原に立って月を見上げていると想像してみてください。地球上のあなたの位置は多くの方法で表現することができます。

ローカル座標系での位置を表すと、(緯度/経度)(0、0)に配置されます。歩き回っても、ローカル座標系は変更されません。ローカル座標系の中心は常に(0,0)です。

ただし、地球の座標系を使用して現在地を表現した場合は、(緯度、経度)(16、135)にいる可能性があります。

あなたは地球上に立っているので、地球はあなたの親の座標系です。

同様に、ViewをLinearLayoutに含めることができます。LinearLayoutはビューの親になるため、getHitRect()からの値はLinearLayoutの座標系で表現されます。

編集

一般的な用語では、ヒット長方形は、衝突検出に使用される長方形の領域を定義するために使用される用語です。Androidに関しては、ヒット長方形はRectタイプの単なるインスタンスです。

メソッドgetLeft()などは、Rect内のデータの単なるアクセサーであるため、Rectのメンバーは、メソッドを呼び出すことによって取得するのと同じ長方形を定義します。

Rectの一般的な使用シナリオは、タップイベントの処理です。

//Imagine you have some Rect named myRect
//And some tap event named event
//Check if the tap event was inside the rectangle
if(myRect.contains(event.getX(), event.getY()){
  //it's a hit!
}

また、2つの長方形が互いに交差しているかどうかを確認することもできます

if(myRect.contains(myRect2)){
   //collision!
}

ビューの場合、ヒットした長方形は実際には直接使用されていません。ソースを確認できます。上、下、左、右はビューで1トン使用されますが、getHitRect()メソッドは、これらのパラメーター(上/下/左/右)を整頓されたパッケージで必要とする人に戻すのに非常に便利です。

于 2012-11-08T23:56:56.243 に答える