VelocityTracker是android中用于计算触摸速度的类,从其字面意思来看就是速度追踪,使用VelocityTracker的方法如下:

一、首先通过VelocityTracker的静态方法获得VelocityTracker对象

velocityTracker = VelocityTracker.obtain();

二、为VelocityTracker对象添加MotionEvent

velocityTracker.addMovement(event);

三、调用VelocityTracker的计算方法

velocityTracker.computeCurrentVelocity(1000);

上面的方法参数是一个int型的units,指的是计算的速度的单位,传1代表每毫秒的速度,传1000代表每秒的速度

四、获取速度值

xSpeed = velocityTracker.getXVelocity();ySpeed = velocityTracker.getYVelocity();

使用上面两个方法用于获取x方向和y方向的速度,可在上面两个方法中传递int类型的参数,用于指定触屏事件的id值,因为可能有多个触屏事件同时发生

五、使用完毕回收资源

velocityTracker.recycle();

上面五个步骤就是VelocityTracker的使用方法,下面通过一个demo来用一用VelocityTracker:

在布局文件中我们放入一个TextView,大小为横向纵向都填满父控件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <TextView        android:id="@+id/textview"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:gravity="center"        android:layout_centerHorizontal="true"        android:layout_centerVertical="true"        android:text="@string/hello_world"        tools:context=".MainActivity" /></RelativeLayout>
下面是Activity中的代码,当手指在屏幕上移动时,我们通过计算触屏的速度,然后在TextView中显示出来:

package com.example.testvelocity;import android.app.Activity;import android.os.Bundle;import android.view.MotionEvent;import android.view.VelocityTracker;import android.widget.TextView;public class MainActivity extends Activity{private TextView textView;private float xSpeed;private VelocityTracker velocityTracker;     @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView = (TextView) findViewById(R.id.textview);        velocityTracker = VelocityTracker.obtain();    }        @Override    public boolean onTouchEvent(MotionEvent event) {    velocityTracker.addMovement(event);switch(event.getAction()){case MotionEvent.ACTION_MOVE:velocityTracker.computeCurrentVelocity(1000);xSpeed = velocityTracker.getXVelocity();textView.setText("xSpeed = " + xSpeed);break;case MotionEvent.ACTION_UP:velocityTracker.recycle();break;}    return super.onTouchEvent(event);    }}

需要注意的是,我在开始写代码时,没有复写onTouchEvent方法,而是使用了onTouchListener,给TextView添加了onTouchListener监听器,然后在onTouch方法中写的上面的代码,后来发现用错了,不是为TextView添加onTouchListener监听器,而是复写Activity中的onTouchEvent方法才能达到效果。

上面的代码运行效果如下图:




更多相关文章

  1. 系出名门Android(7) - 控件(View)之ZoomControls, Include, Vide
  2. android访问mysql增删改查_Android(安卓)Studio连接数据库实现增
  3. Android的webview加载本地html、本apk内html和远程URL
  4. Android(安卓)获取控件的宽和高
  5. android读取plist文件
  6. Android之Handler用法总结
  7. android获取安装的应用程序
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. android之hardwareAccelerated你不知道的
  2. 【Android學習專題】数据存储篇:SQLite
  3. Android(安卓)attrs文件(自定义)属性详解
  4. china
  5. linux下获取环境变量(Android)
  6. android8.0屏蔽状态栏下拉
  7. 设置Textview最大长度,超出显示省略号
  8. Android(安卓)屏幕滑动事件
  9. Android(安卓)创建悬停通知栏
  10. Android加密算法:AES、Base64加密算法