Android-在imageview上创建可点击区域

Android-在imageview上创建可点击区域,android,image,mapping,area,clickable,Android,Image,Mapping,Area,Clickable,我想使用此数据在imageview上创建一个可单击区域 "X1": "213", "Y1": "174", "X2": "339", "Y2": "269", 我还想把一个动作和这个可点击的区域联系起来,比如点击它时去一些活动。 我不想使用此链接中给出的解决方案。 因为我有多个图像视图,每次坐标都可能不同。这些坐标来自服务器 请建议处

我想使用此数据在imageview上创建一个可单击区域

"X1": "213",
"Y1": "174",
"X2": "339",
"Y2": "269",
我还想把一个动作和这个可点击的区域联系起来,比如点击它时去一些活动。 我不想使用此链接中给出的解决方案。

因为我有多个图像视图,每次坐标都可能不同。这些坐标来自服务器


请建议处理此问题的最佳方法。

您可以查看触摸的位置:

ImageView iv = (ImageView) findViewById(R.id.image);
iv.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    log.d(TAG,"Location: " + event.getX() + " , " + event.getY());
    }
});
更新1: 视图的左上角位置如下所示:

int[] viewCoords = new int[2];
imageView.getLocationOnScreen(viewCoords);
从那里,您可以看到被触动的图像视图的确切位置:

int X = (int) event.getX();
int Y = (int) event.getY();

int imageX = X - viewCoords[0];
int imageY = Y - viewCoords[1];

您可以使用提供的坐标创建RectF对象,并使用onTouchListner来查看图像,并将您的RectF与单击的区域进行比较。您可以尝试使用矩形(
Rect()
),对整个布局使用一个
onTouchListener()
,并检查事件坐标是否在您的矩形内。还有一个名为的布局,您可以指定确切的位置,我不建议这样做,因为如果您使用它,您不支持不同的屏幕大小。矩形(Rect())是否也会根据屏幕大小缩放我给定的坐标?因为我的imageview在宽度上是match_parent,在高度上是wrap_content?因为服务器为宽度为640px、高度为380px的图像提供了这些坐标。为此,我想首先我需要缩放我的图像以获得新的屏幕大小,然后再缩放我的坐标以获得新的屏幕宽度,只有这样我才能使用此侦听器。我说的对吗,先生?让我试试这个解决方案,然后再给你回复。谢谢,伙计。我已经将imageX和ImageY从PX转换为Dp,现在我想我已经接近我的解决方案了。再次感谢,太好了。听到这个消息我很高兴。@HamzaMehmood如果您能发布您已经实现的完整解决方案,那就太好了。