速度追踪–VelocityTracker

方法摘要

public static VelocityTracker obtain()

返回一个Velocity对象实例,必须确保调用recycle()当不再使用的时候,这样Velocity对象可以在其他地方使用。

Retrieve a new VelocityTracker object to watch the velocity of a motion. Be sure to call recycle() when done. You should generally only maintain an active object while tracking a movement, so that the VelocityTracker can be re-used elsewhere.

public void recycle()

回收Velocity对象给其他地方使用,你不能继续使用这个对象在调用此函数以后

Return a VelocityTracker object back to be re-used by others. You must not touch the object after calling this function.

public void clear()

重置Velocity对象

Reset the velocity tracker back to its initial state.

public void addMovement(MotionEvent ev)

将用户的手势加入追踪,你应该在MotionEvent.ACTION_DOWN中初始化,

Add a user’s movement to the tracker. You should call this for the initial MotionEvent.ACTION_DOWN, the following MotionEvent.ACTION_MOVE events that you receive, and the final MotionEvent.ACTION_UP. You can, however, call this for whichever events you desire.

public void computeCurrentVelocity(int units)

通过已经收集的点计算当前速度,只能在你想知道速度的时候调用,你能通过getXVelocity() 和 getYVelocity()获取具体的速度。

Compute the current velocity based on the points that have been collected. Only call this when you actually want to retrieve velocity information, as it is relatively expensive. You can then retrieve the velocity with getXVelocity() and getYVelocity().

public float getXVelocity()

返回X方向上的速度,必须先调用public void computeCurrentVelocity(int units)

Retrieve the last computed X velocity. You must first call computeCurrentVelocity(int) before calling this function.

public float getYVelocity()

返回Y方向上的速度,必须先调用public void computeCurrentVelocity(int units)

Retrieve the last computed Y velocity. You must first callcomputeCurrentVelocity(int) before calling this function.

使用过程

VelocityTracker主要用来追踪手指在滑动过程中的速度,包括水平速度和竖直方向的速度,它的使用过程很简单,首先在View的onTouchEvent方法中追踪当前单击事件的速度

VelocityTracker mVelocityTracker =  VelocityTracker.obtain();

mVelocityTracker.addMovement(event);

接着如果我们想知道当前的滑动速度我们可以采用如下方式来获得当前的速度。

mVelocityTracker.computeCurrentVelocity(1000);

float xVelocity = mVelocityTracker.getXVelocity();

float yVelocity = mVelocityTracker.getYVelocity();

这一步中有两点需要注意,第一,获取速度前必须先计算速度,即使用mVelocityTracker.computeCurrentVelocity(1000); 计算手指在1000毫秒内运动的速度,第二点,速度可以为负数,当手指从右往左滑动时,水平方向速度为负值,速度计算公式为:速度 = (终点位置-起点位置) / 时间段,

最后当不需要使用的时候,需要调用clear方法来重置并回收

mVelocityTracker.clear();

mVelocityTracker.recycle();

回收时机

在Activity中:在回调函数onDestroy()中调用clear()和recyle()回收Velocity对象。

在View中:在回调函数onDetachedFromWindow()中调用clear()和recyle()回收Velocity对象。

View中两个回调函数:

最后修改日期: 2016年5月4日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。