Android VelocityTracker使用案例详解
作者:bigerman 时间:2023-08-29 13:32:03
VelocityTracker顾名思义即速度跟踪,在android中主要应用于touch even。VelocityTracker通过跟踪一连串事件实时计算出当前的速度,这样的用法在android系统空间中随处可见,比如Gestures中的Fling, Scrolling等。
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) |
示例代码:
@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);
}
来源:https://blog.csdn.net/weiyanjie100/article/details/51168399
标签:Android,VelocityTracker
0
投稿
猜你喜欢
Java抽象类和接口的区别详情
2023-05-23 20:09:59
Java反射机制的实现详解
2023-08-21 09:33:00
Android10 分区存储的适配规则
2022-11-25 12:22:53
ActiveMQ在C#中的应用示例分析
2021-09-18 19:12:41
Android三种GSM手机定位技术分析
2023-04-10 10:09:22
Spring实战之XML与JavaConfig的混合配置详解
2023-07-11 18:07:20
C#图片按比例缩放的实现代码
2022-12-19 03:58:16
SpringBoot中配置Web静态资源路径的方法
2023-10-26 03:49:21
简单了解Java字符串(操作)
2022-04-22 18:37:29
Spring Boot启动过程完全解析(二)
2022-06-17 14:40:59
Spring Data环境搭建实现过程解析
2022-02-26 20:13:38
Android ListView组件详解及示例代码
2022-04-27 07:12:08
不看后悔!揭秘游戏服务器开发
2023-08-22 16:20:30
java多线程编程之InheritableThreadLocal
2022-02-08 21:40:32
解决IDEA中 Ctrl+ALT+V这个快捷键无法使用的情况
2022-02-27 07:51:36
Idea热加载插件JRebel激活以及使用教程
2022-03-27 18:16:34
整理C# 二进制,十进制,十六进制 互转
2023-10-01 13:44:08
C# 如何解析获取Url参数值
2022-07-03 01:00:52
springmvc实现json交互-requestBody和responseBody
2023-02-26 17:10:45
android控件实现多张图片渐变切换
2022-06-18 20:11:57