VelocityTracker使用详解
2016-04-16 15:44
417 查看
VelocityTracker顾名思义即速度跟踪,在android中主要应用于touch even。VelocityTracker通过跟踪一连串事件实时计算出当前的速度,这样的用法在android系统空间中随处可见,比如Gestures中的Fling, Scrolling等。
VelocityTracker主要用跟踪触摸屏事件(flinging事件和其他gestures手势事件)的速率。用addMovement(MotionEvent)函数将Motion event加入到VelocityTracker类实例中.你可以使用getXVelocity() 或getXVelocity()获得横向和竖向的速率到速率时,但是使用它们之前请先调用computeCurrentVelocity(int)来初始化速率的单位
。
示例代码:
VelocityTracker主要用跟踪触摸屏事件(flinging事件和其他gestures手势事件)的速率。用addMovement(MotionEvent)函数将Motion event加入到VelocityTracker类实例中.你可以使用getXVelocity() 或getXVelocity()获得横向和竖向的速率到速率时,但是使用它们之前请先调用computeCurrentVelocity(int)来初始化速率的单位
。
Public Methods | |
---|---|
void | addMovement(MotionEventevent)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. intunitis表示速率的基本时间单位。unitis值为1的表示是,一毫秒时间单位内运动了多少个像素, unitis值为1000表示一秒(1000毫秒)时间单位内运动了多少个像素 floatVelocity表示速率的最大值 |
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) |
<span style="font-size:14px;">@Override public boolean onTouchEvent(MotionEvent ev) { if (null == mVelocityTracker) { mVelocityTracker = VelocityTracker.obtain(); } mVelocityTracker.addMovement(ev); switch (ev.getAction()) { case MotionEvent.ACTION_UP: // 隐藏在左边的宽度 int scrollX = getScrollX(); Loger.e(ObjEarth.TAG, "V=" + mVelocityTracker.getXVelocity()); if (Math.abs(mVelocityTracker.getXVelocity()) > 4000f) { if (mVelocityTracker.getXVelocity() < 0f) { //正向逻辑代码 } else { //反向逻辑代码 } } return true; case MotionEvent.ACTION_MOVE: mVelocityTracker.computeCurrentVelocity(1000); //设置units的值为1000,意思为一秒时间内运动了多少个像素 } return super.onTouchEvent(ev); }</span>
相关文章推荐
- VelocityTracker简介 速度追踪
- android的滑动控制
- Pool, SimplePool与SynchronizedPool
- VelocityTracker 监控速度!!!
- Android Scroller、VelocityTracker
- VelocityTracker监控速度
- Pool, SimplePool与SynchronizedPool
- Android VelocityTracker
- 11.View的基础知识
- FZU 2214 Knapsack problem【DP】【超大容量背包】
- C++ Stacks(堆栈)
- 在NetBeans IDE 8.1中连接使用MySQL数据库
- LeetCode 297. Serialize and Deserialize Binary Tree(二叉树的序列化和反序列化)
- nginx 一二事(1) - 简单图片服务器解决方案
- javascript练习题(一)
- ZOJ 3229 有上下界的有汇源的最大流
- v4l2摄像头移植mjpg_streamer笔记
- Spring Boot——开发新一代Spring Java应用
- win8.1安装VS2015提示安装补丁解决办法
- Python元组