2017-09-10 206 views
0

如何將圖像的真實座標轉換爲從onTouch(View v, MotionEvent event得到的座標。基本上,我有imageview,我在其中繪製矩形,並且我想檢查用戶在這些矩形內部的觸摸。 我有這樣的東西:從觸摸事件獲得真正的imageview座標

private 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的座標轉換主題。

回答

0

由於來自TouchEvent的座標是絕對座標,因此可以從它們中減去您的ImageView的絕對座標。這將使您的(x,y)座標相對於ImageView。你可以不喜歡它 -

int arr[] = new int[2]; 
imageView.getLocationOnScreen(arr); 
float xRelative = event.getRawX() - arr[0]; 
float yRelative = event.getRawY() - arr[1]; 

您現在可以使用xRelativeyRelative,而不是xy鑑於rects包含相對於您imageview座標。

0

我不知道我理解你的問題,但我認爲你應該添加圖像視圖座標像下面

if (x +resultView.getX() > rect.left && x +resultView.getX()< rect.right && y +resultView.getY()< rect.bottom && 
      y +resultView.getY()> rect.top) 
if語句
相關問題