我想在android上获取按钮的绝对屏幕坐标。但我错了!
我编写的代码是这样的,当我的手指越过按钮时,它应该将其背景颜色更改为蓝色。但那不是正在发生的事情。相反,它将背景颜色更改为其下方按钮的蓝色。
这是我的代码:
int x = (int) event.getX();
int y = (int) event.getY();
int pos[] = new int[2];
button.getLocationOnScreen(pos);
int x1 = pos[0], y1 = pos[1];
int x2 = x1 + button.getWidth();
int y2 = y1 + button.getWidth();
if(x <=x2 && x >= x1 && y <= y2 && y >= y1)
{
button.setBackgroundColor(Color.BLUE);
}
else
{
button.setBackgroundColor(Color.YELLOW);
}
可能是什么问题?
谢谢!
答案 0 :(得分:1)
您正在向水平和垂直添加getWidth()。很确定你需要在y2行使用.getHeight()。
int x2 = x1 + button.getWidth();
int y2 = y1 + button.getWidth();
答案 1 :(得分:0)
您的event
也可能几乎不包含绝对坐标。它来自哪里?
答案 2 :(得分:0)
我自己得到了答案。这很简单。
而不是使用:
int x = (int) event.getX();
int y = (int) event.getY();
我用过:
int x = (int) event.getRawX();
int y = (int) event.getRawY();
问题解决了!