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方法才能达到效果。

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

Android VelocityTracker的使用_第1张图片


更多相关文章

  1. Android 获取控件高度宽度三种方法,防止0的出现
  2. android 源代码错误
  3. Android sqlite 数据库在java代码中的增删改查
  4. android获取控件的几种方法
  5. Android 获取手机屏幕大小两种方法
  6. android代码实现按钮自旋转
  7. Android中MAC地址获取代码

随机推荐

  1. android 自定义LinearLayout
  2. Android(安卓)EditText 让编辑框只能输入
  3. Android应用开发相关下载资源
  4. android webview 自己跳转
  5. android 把bitmap转成drawble后宽高不一
  6. andriod 动态设置TextView 和 RelativeLa
  7. Android中实现可滑动的Tab的3种方式
  8. Android(安卓)对text文本内容添加下划线
  9. Android(安卓)手机获取Mac地址的几种方法
  10. android抽屉效果的实现