得到错误的绝对坐标android

时间:2014-02-22 09:09:59

标签: android coordinate-systems

我想在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);
}

可能是什么问题?

谢谢!

3 个答案:

答案 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();

问题解决了!