整理android VelocityTracker

本文详细介绍了VelocityTracker类的作用及使用方法,包括如何获取实例并设置事件,如何计算速度以判断滑动方向,同时还提供了多点触控速度计算的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作用:

VelocityTracker类为速率跟踪器,可以获得横向和竖向的速率,根据返回的速率为正数还是负数来判断滑动方向,大于0向右滑动,反之向左。在处理滑动的一些操作中非常好使。VelocityTracker不仅可以处理单点的速度,也可以获得多点的速度。这和处理多点触摸的方式是一样的,传入一个ID就可以了。

 使用方法:

        1,在dispatchTouchEvent(MotionEvent event)或者onTouchEvent(MotionEvent ev)函数中MotionEvent.ACTION_DOWN分支中通过VelocityTracker.obtain()获取实例,并将ev设置到VelocityTracker中,如:

private void addVelocityTracker(MotionEvent event) {
	if (velocityTracker == null) {
		velocityTracker = VelocityTracker.obtain();
	}
                 velocityTracker.addMovement(event);
}

在不用的时候,释放掉VelocityTracker
private void recycleVelocityTracker() {
	if (velocityTracker != null) {
		velocityTracker.recycle();
		velocityTracker = null;
	}
}
2,获取速率。在获取速率之前要先调computeCurrentVelocity(int units)或者computeCurrentVelocity(int units, float maxVelocity)方法来设置速率的时间单位,int unitis表示速率的基本时间单位。unitis值为1的表示是,一毫秒时间单位内运动了多少个像素, unitis值为1000表示一秒(1000毫秒)时间单位内运动了多少个像素floatVelocity表示速率的最大值,也可以获取多点的速率,

private int getScrollVelocity() {
	velocityTracker.computeCurrentVelocity(1000);
	int velocity = (int) velocityTracker.getXVelocity();
	return velocity;
}
//id是touch event触摸点的ID, 来为多点触控标识,有这个标识在计算时可以忽略
//其他触点干扰,当然干扰肯定是有的
public float getXVelocity();
public float getYVelocity();
public float getXVelocity(int id);
public float getYVelocity(int id);
 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值