• 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 }
  • 相关阅读:
    看看时间,我的博客都有一年了。
    asp.net 读取数据库生成百度sitemap_baidu.xml和谷歌sitemap.xml
    克隆后自动改IP计算机名的批处理
    网奇iwms插件之“我浏览过的文章”
    Jetty7 Continuation 学习(一)
    PostgreSQL 和 MySQL 创建帐号,数据库,权限
    OpenLayers 学习笔记 (3) 使用 Google Maps 作底图
    Tomcat 和 Jetty 下 JNDI 配置 DBCP 连接池
    PostgreSQL 中 POLYGON 到 MULTIPOLYGON 的转换
    CentOS 5.4 安装 DNS
  • 原文地址:https://www.cnblogs.com/zhengzhe/p/7820303.html
Copyright © 2020-2023  润新知