Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-从0,0开始获取触摸位置_Java_Android_Math_Touch_Coordinates - Fatal编程技术网

Java Android-从0,0开始获取触摸位置

Java Android-从0,0开始获取触摸位置,java,android,math,touch,coordinates,Java,Android,Math,Touch,Coordinates,我可以通过以下方式获得触摸的坐标: event.getX(); event.getY(); 但我想从原点0,0开始 所以我可以触摸屏幕上的任何地方,当我向上拖动我的手指时,它将以1的增量增加Y,当我向右拖动我的手指时,X将以1的增量增加。向左移动将使X减小-1,向下移动将使Y减小-1的增量 有没有一种数学方法可以做到这一点,或者更好的方法是一个类或函数 任何指导都将不胜感激!谢谢 只需使用: event.getRawX(); event.getRawY(); 这将导致屏幕坐标, 从0,0开始

我可以通过以下方式获得触摸的坐标:

event.getX();
event.getY();
但我想从原点0,0开始

所以我可以触摸屏幕上的任何地方,当我向上拖动我的手指时,它将以1的增量增加Y,当我向右拖动我的手指时,X将以1的增量增加。向左移动将使X减小-1,向下移动将使Y减小-1的增量

有没有一种数学方法可以做到这一点,或者更好的方法是一个类或函数

任何指导都将不胜感激!谢谢

只需使用:

event.getRawX();
event.getRawY();
这将导致屏幕坐标
0,0开始(左上角)
至宽度、高度(右下角)
取决于设备,但我认为这对您来说并不新鲜

---更新---
我想我误解你了,对不起

然后试试这个:

int saved_x = -1;
int saved_y = -1;

@Override
public boolean onTouchEvent(MotionEvent event)
{
    final int action = event.getAction();
    final int pointer_index = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
    int pid = event.getPointerId(pointer_index);

    int x = (int)event.getX();
    int y = (int)event.getY();

    switch (action & MotionEvent.ACTION_MASK)
    {
        case MotionEvent.ACTION_DOWN:
            saved_x = x;
            saved_y = y;
            break;

        case MotionEvent.ACTION_MOVE:
            int relative_x = x - saved_x;
            int relative_y = y - saved_y;

            //move right --> relative_x increases by 'm' pixels of movement
            //move left  --> relative_x decreases by 'm' pixels of movement
            //move down  --> relative_y increases by 'm' pixels of movement
            //move up    --> relative_y decreases by 'm' pixels of movement

            //use it :D
            break;

        case MotionEvent.ACTION_UP:
            saved_x = -1; //-1 indicates "no finger on screen" -- just a feature :)
            saved_y = -1; //-1 indicates "no finger on screen" -- just a feature :)
            break;
    }

    return true;
}

我希望这就是您现在想要的:)

但是我希望我的“锚定点”(0,0)从我触摸的地方开始(动作向下),而不是从左上角开始。然后从我开始的那一点开始逐渐增加或减少。工作完美!非常感谢你!