如何将我的图像的真实坐标转换为我从onTouch(View v, MotionEvent event
得到的坐标。基本上,我有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 :(得分: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];
您现在可以使用xRelative
和yRelative
代替x
和y
,因为rects
包含相对于imageview
的坐标。< / p>
答案 1 :(得分:0)
我不确定我理解你的问题,但我认为你应该将图像视图坐标添加到if语句中,如下所示
if (x +resultView.getX() > rect.left && x +resultView.getX()< rect.right && y +resultView.getY()< rect.bottom &&
y +resultView.getY()> rect.top )