专栏首页刘晓杰VelocityTracker的用法

VelocityTracker的用法

VelocityTracker在API中解释如下:

Helper for tracking the velocity of touch events, for implementing flinging and other such gestures. Use obtain() to retrieve a new instance of the class when you are going to begin tracking, put the motion events you receive into it with addMovement(MotionEvent), and when you want to determine the velocity call computeCurrentVelocity(int) and then getXVelocity() and getYVelocity().  

方法如下:

简单的Demo(我已经把网上的demo代码竟可能的简化了,这样看起来清晰一些)

package com.example.velocitytrackertest;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.VelocityTracker;

public class MainActivity extends Activity {
	private VelocityTracker velocityTracker;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		//必须放这里,放在ACTION_DOWN里面XY输出为0
		if(velocityTracker == null){
			velocityTracker = VelocityTracker.obtain();//必须和recycle()配对
		}
		velocityTracker.addMovement(event);
		
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			break;
		case MotionEvent.ACTION_MOVE:
			velocityTracker.computeCurrentVelocity(1000);
			int X = (int)velocityTracker.getXVelocity();
			int Y = (int)velocityTracker.getYVelocity();
			Log.i("X", X + "");
			Log.i("Y", Y + "");
			break;
		case MotionEvent.ACTION_UP:
			if(velocityTracker != null){
				velocityTracker.recycle();
				velocityTracker = null;
			}
			break;
		}
		return super.onTouchEvent(event);
	}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ContentProvider将程序中的数据暴露给其他程序访问

    之前写过一篇文章,这里写链接内容讲的是如何运用ContentProvider。这次我将来演示一遍如何将程序中的数据暴露给其他程序访问。 就用我之前写过的Ac...

    提莫队长
  • Android MVP 模式介绍与实战

    通常我们都用MVC。但是原有的MVC模式有一些短板。比如在android开发中,activity充当着MVC中Controller的角色,但是在实际开发中还需要...

    提莫队长
  • 美女拼图小游戏

    最上面是自定义的ActionBar,布局里面有两个TextView。一个用于显示level,一个用于显示倒计时 下面就是自定义的RelativeLayout...

    提莫队长
  • 第9次文章:线程

    分析:在这个main方法中,我们开启了3条线程,分别对应的是兔子对象rabbit,乌龟对象torrit,以及程序的主线程main方法。在启动对象的线程的时候,一...

    鹏-程-万-里
  • Android快速实现断点续传的方法

    本文实例为大家分享了Android快速实现断点续传的具体代码,供大家参考,具体内容如下

    砸漏
  • C语言将float拆分为4个hex传输与重组

    实际的编程应用中,特别是数据传输通信等场合,需要传输float等类型的数据,而常用的数据传输形式一般为hex格式或字符串格式,通常我们会选用hex格式,更接近计...

    xxpcb
  • 数智消费,一码畅游

    首先第一点,对于我们的文旅行业来说,我们的行业的从业者会更加的去拥抱我们的这个产业互联网。因为大家会意识到就是我们通过这种产业互联网的这个加速融合才能更快的去破...

    云大学小编
  • IDM的教程

    IDM下载器一直都是非常naice的下载器, 具有多线程下载且速度完全不受控制;通过IDM使度盘的下载速度能提高不少;阔以嗅探到网页视频、图片、音频等媒体文件,...

    IT小侠公社
  • 一招 | 利用脚本不限速下载百度网盘文件

    七月半夏
  • ASP.NET Core应用基本编程模式[4]:基于承载环境的编程

    基于IHostBuilder/IHost的承载系统通过IHostEnvironment接口表示承载环境,我们利用它不仅可以得到当前部署环境的名称,还可以获知当前...

    蒋金楠

扫码关注云+社区

领取腾讯云代金券