获取以原点为中心的触摸手势的标准化坐标

Oge*_*gen 2 android

我有一个线性布局,我已经指定了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)

这是一张显示我想要实现的坐标系类型的图像: 在此输入图像描述

mat*_*ash 6

您应该从中获取坐标(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)

(这假设您希望坐标系相对于视图本身 - 在您的代码中您还查询显示的尺寸,但我不确定为什么).