在Android中跟踪运动onTouch

时间:2014-05-21 17:26:50

标签: android

用户触摸屏幕上显示LinearLayout的{​​{1}}后,我想跟踪他们的手指移动,直到他们松开触摸。最重要的是,我希望找到用户手指在触摸过程中移动的距离。

这是我到目前为止所做的:

touchLayout档案

.java

编辑我想找到距离而不是位移。在我想要的方式中,两点之间的曲线应该返回一个比相同两点之间的直线更大的值。

2 个答案:

答案 0 :(得分:0)

您需要将先前的x和y值存储在类变量中,以便将它们与ACTION_MOVE中的新值进行比较。

    touchLayout.setOnTouchListener(
        new View.OnTouchListener()
        {
            private float lastX;
            private float lastY;
            private float total;

            @Override
            public boolean onTouch(View v, MotionEvent event)
            {
                if (event.getAction() == MotionEvent.ACTION_DOWN)
                {
                    lastX = event.getX();
                    lastY = event.getY();
                    total = 0;
                }
                else if (event.getAction() == MotionEvent.ACTION_MOVE)
                {
                    float x = event.getX();
                    float y = event.getY();
                    total += Math.sqrt(Math.pow(x - lastX, 2) + Math.pow(y - lastY, 2));

                    lastX = x;
                    lastY = y;
                }
                else if (event.getAction() == MotionEvent.ACTION_UP)
                {
                    //Do whatever 
                }

                return true;
            }
        });

答案 1 :(得分:0)

使用距离公式

double dist = Math.sqrt(Math.pow(xcoordc  - xcoorda, 2) + Math.pow(ycoordc- ycoorda, 2));