我正在构建一个锁屏,我有以下设计:
现在最终产品中不会出现红色和绿色,只是显示图像视图的填充。
我需要在中间获得红色圆圈的坐标(填充设置为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)。我只想在你悬停或拖动每个红色图标时让它注册数字按钮。
我该怎么做?
答案 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.
}
...
}
您也可以使用getLocationOnScreen
,getLeft
,其他方法会返回父视图中的坐标。