本文主要是介绍android VelocityTracker跟踪触摸屏事件的速率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
android.view.VelocityTracker 主要用跟踪触摸屏事件(flinging事件和其他gestures手势事件)的速率。用 addMovement(MotionEvent) 函数将Motion event加入到VelocityTracker类实例中.你可以使用 getXVelocity() 或 getXVelocity() 获得横向和竖向的速率到速率时,但是使用它们之前请先调用 computeCurrentVelocity (int) 来初始化速率的单位 。
主要函数
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
void | addMovement(MotionEvent event) Add a user's movement to the tracker. | ||||||||||
void | clear() Reset the velocity tracker back to its initial state. | ||||||||||
void | computeCurrentVelocity(int units, float maxVelocity) Compute the current velocity based on the points that have been collected. int unitis表示速率的基本时间单位。unitis值为 1的表示是,一毫秒时间单位内运动了多少个像素, unitis值为 1000表示一秒(1000毫秒)时间单位内运动了多少个像素 float Velocity表示速率的最大值 | ||||||||||
void | computeCurrentVelocity(int units) Equivalent to invoking computeCurrentVelocity(int, float) with a maximum velocity of Float.MAX_VALUE. | ||||||||||
abstract T | getNextPoolable() | ||||||||||
float | getXVelocity() Retrieve the last computed X velocity. | ||||||||||
float | getXVelocity(int id) Retrieve the last computed X velocity. | ||||||||||
float | getYVelocity(int id) Retrieve the last computed Y velocity. | ||||||||||
float | getYVelocity() Retrieve the last computed Y velocity. | ||||||||||
abstract boolean | isPooled() | ||||||||||
static VelocityTracker | obtain() Retrieve a new VelocityTracker object to watch the velocity of a motion. | ||||||||||
void | recycle() Return a VelocityTracker object back to be re-used by others. | ||||||||||
abstract void | setNextPoolable(T element) | ||||||||||
abstract void | setPooled(boolean isPooled) |
示例:
private VelocityTracker mVelocityTracker;//生命变量
//在onTouchEvent(MotionEvent ev)中
if (mVelocityTracker == null) {
mVelocityTracker = VelocityTracker. obtain () ;//获得VelocityTracker类实例
}
mVelocityTracker. addMovement (ev); //将事件加入到VelocityTracker类实例中
//判断当ev事件是MotionEvent.ACTION_UP时:计算速率
final VelocityTracker velocityTracker = mVelocityTracker;
// 1000 provides pixels per second
velocityTracker.computeCurrentVelocity(1, (float)0.01) ; //设置maxVelocity值为0.1时,速率大于0.01时,显示的速率都是0.01,速率小于0.01时,显示正常
Log.i("test","velocityTraker"+velocityTracker.getXVelocity());
velocityTracker.computeCurrentVelocity(1000); //设置units的值为1000,意思为一秒时间内运动了多少个像素
Log.i("test","velocityTraker"+velocityTracker.getXVelocity());
大体的使用是这样的:
当你需要跟踪触摸屏事件的速度的时候,使用 obtain() 方法来获得 VelocityTracker 类的一个实例对象
在 onTouchEvent 回调函数中,使用 addMovement(MotionEvent) 函数将当前的移动事件传递给 VelocityTracker 对象
使用 computeCurrentVelocity (int units) 函数来计算当前的速度,使用 getXVelocity () 、 getYVelocity () 函数来获得当前的速度
这篇关于android VelocityTracker跟踪触摸屏事件的速率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!