我有一个线性布局,我已经指定了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;
}
});
Run Code Online (Sandbox Code Playgroud)
这是一张显示我想要实现的坐标系类型的图像:

您应该从中获取坐标(getX()和getY())MotionEvent并将它们标准化为您想要的坐标.例如:
@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;
}
Run Code Online (Sandbox Code Playgroud)
(这假设您希望坐标系相对于视图本身 - 在您的代码中您还查询显示的尺寸,但我不确定为什么).
| 归档时间: |
|
| 查看次数: |
759 次 |
| 最近记录: |