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

时间:2014-03-28 09:48:54

标签: android imageview

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

design

现在最终产品中不会出现红色和绿色,只是显示图像视图的填充。

我需要在中间获得红色圆圈的坐标(填充设置为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)。我只想在你悬停或拖动每个红色图标时让它注册数字按钮。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

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

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.
  }
...
}

您也可以使用getLocationOnScreengetLeft,其他方法会返回父视图中的坐标。