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
voidaddMovement(      MotionEventevent)             Add a user's movement to the tracker.
voidclear()             Reset the velocity tracker back to its initial state.
voidcomputeCurrentVelocity(int units, float maxVelocity)             Compute the current velocity based on the points that have been collected.                          intunitis表示速率的基本时间单位。unitis值为1的表示是,一毫秒时间单位内运动了多少个像素, unitis值为1000表示一秒(1000毫秒)时间单位内运动了多少个像素             floatVelocity表示速率的最大值
voidcomputeCurrentVelocity(int units)             Equivalent to invoking computeCurrentVelocity(int, float)with a maximum velocity of Float.MAX_VALUE.             一般使用此函数即可
abstract TgetNextPoolable()
floatgetXVelocity()             Retrieve the last computed X velocity.
floatgetXVelocity(int id)             Retrieve the last computed X velocity.
floatgetYVelocity(int id)             Retrieve the last computed Y velocity.
floatgetYVelocity()             Retrieve the last computed Y velocity.
abstract booleanisPooled()
static        VelocityTrackerobtain()             Retrieve a new VelocityTracker object to watch the velocity of a motion.
voidrecycle()             Return a VelocityTracker object back to be re-used by others.
abstract voidsetNextPoolable(T element)
abstract voidsetPooled(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
  • asp之家 软件编程 m.aspxhome.com