-1
  private void dealEvent(int actionPointerIndex, MotioEvent event,
  View eventView, int actionresolved) {

  int rawX, rawY;
  int location[] = { 0, 0 };


  eventView.getLocationOnScreen(location);
rawX = (int) event.getX(actionIndex) + location[0];
rawY = (int) event.getY(actionIndex) + location[1];

ArrayList<View> views = getTouchedViews(rawX, rawY, actionresolved);

私はこれらの線を理解していません、なぜ私たちはそれをするのですか?

rawX = (int) event.getX(actionIndex) + location[0];
rawY = (int) event.getY(actionIndex) + location[1];

ArrayList<View> views = getTouchedViews(rawX, rawY, actionresolved);
4

1 に答える 1

1

あなたが提供したコードは完全にコンパイル可能ではないので、これはほとんどの仮定です(関数宣言と本文で使用するMotioEvent必要があります)。MotionEventactionPointerIndexactionIndex

このリンクに基づく機能の1つは、イベントが基になるビューに自動的に転送されることです。

これは、起点以外のポイント(たとえば、イベントをキャプチャしたオブジェクトの左上隅)からgetXの戻り値のように見えます。getY

getLocationOnScreen呼び出しにそのポイントが入力さlocationれ、それを使用して、相対座標から生の(おそらく画面の)座標が生成されます。

ほとんどの場合、それgetTouchedViewsは、その時点でビューのリストを提供するために生の座標が必要なためです。次に、コードはそのリストを調べて、どのビューがイベントを受信する必要があるかを判断します。

于 2012-05-09T01:13:53.140 に答える