获取矩形的图像视图位置-Android

获取矩形的图像视图位置-Android,android,imageview,Android,Imageview,我正在建造一个锁屏,我有以下设计: 现在红色和绿色不会出现在最终产品中,它只是显示ImageView的填充 我需要在中间得到红色圆圈的坐标(填充设置为25DP)。我有一个触控方法,可以注册按下的数字按钮(1-3、4-6和7-9) 这是我目前的代码: public void makeRects(){ // row 1 rectangles b1r = new Rect(b1.getLeft(), b1.getTop(), b1.getRight(), b1.getBottom()

我正在建造一个锁屏,我有以下设计:

现在红色和绿色不会出现在最终产品中,它只是显示ImageView的填充

我需要在中间得到红色圆圈的坐标(填充设置为25DP)。我有一个触控方法,可以注册按下的数字按钮(1-3、4-6和7-9)

这是我目前的代码:

public void makeRects(){
    // row 1 rectangles
    b1r = new Rect(b1.getLeft(), b1.getTop(), b1.getRight(), b1.getBottom());
    b2r = new Rect(b2.getLeft(), b2.getTop(), b2.getRight(), b2.getBottom());
    b3r = new Rect(b3.getLeft(), b3.getTop(), b3.getRight(), b3.getBottom());

    // row 2 rectangles
    b4r = new Rect(b4.getLeft(), b4.getTop()+b1.getBottom(), b3.getRight(), b3.getBottom()+b1.getBottom()+b1.getTop());
    b5r = new Rect(b5.getLeft(), b5.getTop()+b2.getBottom(), b5.getRight(), b5.getBottom()+b2.getBottom()+b2.getTop());
    b6r = new Rect(b6.getLeft(), b6.getTop()+b3.getBottom(), b6.getRight(), b6.getBottom()+b3.getBottom()+b3.getTop());

    // row 3 rectangles
    b7r = new Rect(b7.getLeft(), b7.getTop()+b1.getBottom(), b7.getRight(), b7.getBottom()+b1r.height());
    b8r = new Rect(b8.getLeft(), b8.getTop()+b2.getBottom(), b8.getRight(), b8.getBottom()+b2.getBottom()+b2.getTop());
    b9r = new Rect(b9.getLeft(), b9.getTop()+b3.getBottom(), b9.getRight(), b9.getBottom()+b3.getBottom()+b3.getTop());
}
但是,它只注册位于块顶部的数字按钮(红色或绿色),并注册整行(第二行为1,2,3,然后是4,5,6,7,8,9)。我只想让它在你将鼠标悬停或拖动到每个红色图标上时注册数字按钮


如何执行此操作?

您可以使用每个视图一个处理程序:

b1.setOnClickListener(myClickListener);
b2.setOnClickListener(myClickListener);
b3.setOnClickListener(myClickListener);
...

// And in myClickListener:

void onClick(View v) {
  if (v == b1) {
    // 1 was pressed.
  } else if (v == b2) {
    // 2 was pressed.
  }
...
}

您还可以使用
getLocationOnScreen
getLeft
和其他方法在父视图中返回坐标。

Row2:为什么使用b4.getTop()+b1.getBottom()?难道b4.getTop()就不够了吗。另外,为什么不在所有bx对象上都放置一个onTouch处理程序呢?因为b4.getTop()返回与b1.getTop()相同的顶级值。而且因为它只注册相对于该视图的单击,所以每次单击时它都会返回1。回答为。我需要能够拖动按钮并查看顺序。不仅仅是点击。我已经试过了。那么getLocationOnScreen就是最好的选择。