zoukankan      html  css  js  c++  java
  • 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
    竖直速度:%f",x,y);
    72         tv.setText(info);
    73     }
    74 }
  • 相关阅读:
    Array的应用
    事物的操作
    定义集合
    wxWidgets 在 Linux 下开发环境配置
    Emacs 中 GDB 的使用
    wxWidgets 在 Windows 下开发环境配置
    Ubuntu14.04终端主机名+用户名修改配色方案
    S5PV210之内外存学习
    Ubuntu14.04进行配置符号链接arm2009q3.tar.bz2
    Ubuntu14.041+VMware12.0NET方式网卡连接虚拟机联网问题解决方法
  • 原文地址:https://www.cnblogs.com/zhengzhe/p/7820303.html
Copyright © 2011-2022 走看看