我有一个线性布局,我分配了一个 onTouchListener
。我已经获得了设备的宽度和高度,但问题是,原点位于屏幕的左上角,它给我的坐标例如 (534, 211)。
我希望原点位于屏幕中心,我希望屏幕坐标的两端为 1。
我该如何实现?
这是我到目前为止得到的代码...
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
System.out.println(width + " " + height);
mGLView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
System.out.println(event.getX() + " " + event.getY());
return false;
}
});
这是一张图片,显示了我正在尝试实现的坐标系类型:
最佳答案
您应该从 MotionEvent
获取坐标(getX()
和 getY()
)并将它们标准化为您想要的坐标.例如:
@Override
public boolean onTouch(View v, MotionEvent event)
{
float x = 2f * (event.getX() / v.getWidth()) - 1f;
float y = -2f * (event.getY() / v.getHeight()) + 1f;
System.out.println(x + " " + y);
return false;
}
(假设您想要相对于 View 本身的坐标系——在您的代码中,您还查询了显示器的尺寸,但我不确定为什么)。
关于android - 获取以原点为中心的触摸手势归一化坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24216787/