2017-09-10 12 views
0

実際の画像の座標をonTouch(View v, MotionEvent eventから得た座標に変換する方法.basically、私はそれに四角形を描くイメージビューを持っています。 私はこのようなものがあります:タッチイベントから実際の画像ビューの座標を取得

プライベートArrayList rects = new ArrayList <>();

resultView.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_DOWN){ 
      int x = (int) event.getX(); 
      int y = (int) event.getY(); 

      for (Rect rect : rects) { 
       if (x > rect.left && x < rect.right && y > rect.bottom && 
       y < rect.top) { 
         // the user toches on of these rectangle 
       } 
      } 
     } 
     return true; 
    } 
    }); 

しかし、本当の問題は、私のrectsがはるかに大きいとx , yテーマを変換するimageview.howの座標である実際の画像座標であるということです。 TouchEventからの座標は絶対座標であるため

答えて

0

は、あなたは彼らからあなたImageViewの絶対座標を引くことができます。これにより、(x,y)の座標がImageViewの相対座標になります。

あなたは今 rectsあなた imageviewに対する相対座標含まれていることを与えられた代わりに xyxRelativeyRelativeを使用することができます
int arr[] = new int[2]; 
imageView.getLocationOnScreen(arr); 
float xRelative = event.getRawX() - arr[0]; 
float yRelative = event.getRawY() - arr[1]; 

を - あなたはそれが好き行うことができます。

0

私はあなたの問題を理解していないが、私はあなたのイメージ図は以下の

if (x +resultView.getX() > rect.left && x +resultView.getX()< rect.right && y +resultView.getY()< rect.bottom && 
      y +resultView.getY()> rect.top) 
のようなif文に座標を追加すべきだと思います
関連する問題