VelocityTracker检测手指的移动速度

Posted 郑哲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VelocityTracker检测手指的移动速度相关的知识,希望对你有一定的参考价值。

activity_main.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     tools:context="sowell.oracle.com.view.MainActivity">
 7         <!--
 8         tv用于显示手指移动的速度
 9     -->
10     <TextView
11         android:id="@+id/tv"
12         android:text="aaa"
13         android:layout_width="100dp"
14         android:layout_height="match_parent" />
15 </LinearLayout>

 

MainActivity.java

 1 package sowell.oracle.com.view;
 2 
 3 import android.support.v7.app.AppCompatActivity;
 4 import android.os.Bundle;
 5 import android.view.MotionEvent;
 6 import android.view.VelocityTracker;
 7 import android.view.View;
 8 import android.widget.EditText;
 9 import android.widget.TextView;
10 
11 public class MainActivity extends AppCompatActivity {
12 
13     public VelocityTracker velocityTracker;
14     public TextView tv;
15     public double xVelocity;
16     public double yVelocity;
17 
18     public void init(){
19         tv=(TextView)findViewById(R.id.tv);
20         velocityTracker=VelocityTracker.obtain();
21     }
22 
23 
24     @Override
25     protected void onCreate(Bundle savedInstanceState) {
26         super.onCreate(savedInstanceState);
27         setContentView(R.layout.activity_main);
28         init();
29         tv.setText("bbb");
30     }
31 
32 
33     //重写点击事件的回调函数
34     @Override
35     public boolean onTouchEvent(MotionEvent event) {
36 
37         final int action =event.getAction();
38         velocityTracker=VelocityTracker.obtain();
39         velocityTracker.addMovement(event);
40 
41 
42         switch (action){
43             case MotionEvent.ACTION_MOVE:
44                 velocityTracker.computeCurrentVelocity(1000);   //计算每1000ms手指移动的像素
45                 xVelocity=velocityTracker.getXVelocity();
46                 yVelocity=velocityTracker.getYVelocity();
47                 add(xVelocity,yVelocity);
48                 break;
49 
50             case MotionEvent.ACTION_UP:
51                 velocityTracker.clear();                        //回收VelocityTracker
52                 velocityTracker.recycle();
53                 break;
54 
55             case MotionEvent.ACTION_CANCEL:
56                 velocityTracker.clear();
57                 velocityTracker.recycle();
58                 break;
59 
60         }
61 
62         return super.onTouchEvent(event);
63     }
64 
65 
66 
67 
68 
69     void add(double x,double y)
70     {
71         final String info=String.format("水平速度:%f\n竖直速度:%f",x,y);
72         tv.setText(info);
73     }
74 }

 

以上是关于VelocityTracker检测手指的移动速度的主要内容,如果未能解决你的问题,请参考以下文章

android VelocityTracker 速度追踪器的使用及创建

UILongPressGestureRecognizer 检测手指是不是移动了一定的半径

使用 Swift + SpriteKit 将节点移动到手指

如何绘制具有可变笔画宽度的路径

Unity C# IOS 滑动检测

PointerEvents:检测“通过”元素的触摸