android中的轨迹运动onTouch

android中的轨迹运动onTouch,android,Android,在用户触摸屏幕上名为touchLayout的LinearLayout后,我希望跟踪他们手指的移动,直到他们松开触摸。最重要的是,我想找出用户手指在触摸过程中移动的距离 这就是我到目前为止所做的: .java文件 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(

在用户触摸屏幕上名为
touchLayout
LinearLayout
后,我希望跟踪他们手指的移动,直到他们松开触摸。最重要的是,我想找出用户手指在触摸过程中移动的距离

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

.java
文件

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

    final View touchLayout = findViewById(R.id.touchLayout);        
            final TextView score = (TextView)findViewById(R.id.score);

        touchLayout.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                    if (event.getAction() == MotionEvent.ACTION_DOWN){
                            Integer xcoorda = Integer.valueOf((int) event.getX());
                            Integer ycoorda = Integer.valueOf((int) event.getX());
                            }
                    if (event.getAction() == MotionEvent.ACTION_MOVE){
                            //**This is where I need something to record distance**
                            Integer xcoordb = Integer.valueOf((int) event.getX());
                            Integer ycoordb = Integer.valueOf((int) event.getX());
                            }
                    if (event.getAction() == MotionEvent.ACTION_UP){
                            Integer xcoordc = Integer.valueOf((int) event.getX());
                            Integer ycoordc = Integer.valueOf((int) event.getX());
                            }
            return true;
            }
        });
        }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
    }

}

编辑我想查找距离而不是位移。按照我所希望的方式,两点之间的曲线返回的值应该大于相同两点之间的直线。

您需要将以前的x和y值存储在类变量中,以便可以将它们与ACTION\u 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;
            }
        });
使用距离公式

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

这很好,但我想找到总行驶距离,而不是起点和终点之间的距离。这样,曲线返回的值会比直线的值大。这很好,但我想找到的是行驶的总距离,而不是起点和终点之间的距离。这样,曲线将返回比直线更大的值。