`

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毫秒)时间单位内运动了多少个像素
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)
示例: 
    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滑动速度检测器简单使用

    在Android开发中,VelocityTracker是用于检测用户触摸屏幕滑动手势速度的重要工具。它可以帮助我们了解手指在屏幕上移动的速度和方向,这对于实现如滚动、滑动解锁等手势操作的交互非常有用。本教程将深入讲解如何在...

    详细讲解自定义ViewGroup+Scroller+VelocityTracker做出Launcher滑动

    本教程将深入讲解如何结合Scroller和VelocityTracker来实现一个类似Launcher(应用启动器)的滑动效果。这种滑动效果常见于手机桌面,允许用户平滑地在多个页面之间切换。 首先,了解ViewGroup。ViewGroup是Android...

    Android获取在屏幕滑动速度的实例

    本实例将详细讲解如何利用Android的VelocityTracker类来计算滑动速度。 首先,VelocityTracker是Android提供的一个工具类,用于追踪和计算一段时间内手指在屏幕上移动的速度。它能够帮助开发者获取滑动事件的平均...

    Android ScrollView反弹效果

    private VelocityTracker velocityTracker; private int lastY; public ReboundScrollView(Context context) { super(context); } // ...其他构造函数... @Override public boolean onTouchEvent...

    ScrollViews上下左右滑动

    fling((int) -velocityTracker.getXVelocity(), (int) -velocityTracker.getYVelocity()); velocityTracker.recycle(); velocityTracker = null; break; } return true; // 消耗事件,防止父控件拦截 } } ``...

    gridView 实现gallery滑动

    private VelocityTracker velocityTracker; private int minimumFlingVelocity; // 最小滑动速度 public SmoothScrollGridView(Context context) { super(context); init(context); } public ...

    MultiTouch.7z 几个多点触控的测试程序

    MultiTouch VelocityTracker Pointer2Draw 几个多点触控的测试程序 MultiTouch VelocityTracker Pointer2Draw 几个多点触控的测试程序

    自定义Android可滑动控件源码

    本文将深入探讨如何实现一个可滑动显示图片的控件,通过这个过程,我们可以学习到Android的触控事件处理机制、Scroller类的应用以及VelocityTracker的用法。 首先,Android的触控事件处理主要包括三个基本步骤:...

    L14-ViewGroup 的触摸反馈、ViewPager 和拖拽-讲义.pdf

    - 在ACTION_DOWN事件中,使用`VelocityTracker.obtain()`创建实例或`velocityTracker.clear()`重置现有实例。 - 对于每个事件,调用`velocityTracker.addMovement(event)`将事件添加到VelocityTracker。 - 在需要...

    ViewPager 滑动速度设置,并实现点击按钮滑动

    VelocityTracker velocityTracker = VelocityTracker.obtain(); velocityTracker.addMovement(ev); velocityTracker.computeCurrentVelocity(1000); // 1000代表单位为毫秒 int velocityX = (int) ...

    android 左右滑动翻页技术文档

    通过`VelocityTracker.obtain()`获取实例,然后在`onTouchEvent()`方法中,使用`addMovement(MotionEvent)`添加MotionEvent,接着调用`computeCurrentVelocity(int)`计算速度,并使用`getXVelocity()`和`...

    android手势翻页效果

    总之,"android手势翻页效果"是Android开发中提升用户体验的一种重要技术,通过理解和运用`GestureDetector`, `Scroller`以及`VelocityTracker`,开发者可以创造出更生动、自然的用户界面。这个小例子对于深入理解...

    android自定义布局中的平滑移动

    总结来说,实现Android自定义布局的平滑移动需要对`ViewGroup`的生命周期有深刻的理解,熟练运用`VelocityTracker`、`Scroller`和`ViewConfiguration`,并精细处理触摸事件和视图布局。通过这种方式,开发者可以创造...

    Android 自定义布局竖向的ViewPager的实现

    在`onTouchEvent`的序列中,我们可以在ACTION_DOWN事件中启动VelocityTracker,然后在ACTION_UP或ACTION_CANCEL事件中计算速度。 处理滑动事件冲突也是实现自定义ViewPager的关键。这通常涉及到`dispatchTouchEvent...

    安卓高级UI培训课程

    自绘控件、继承控件、组合控件、Scroller详解及源码浅析、ViewDragHelper详解及源码浅析、自定义View触摸工具类解析(ViewConfiguration基础参数工具类、VelocityTracker手势速率工具类、GestureDetector手势工具类...

    android 页面滑动

    总结来说,实现"android页面滑动"需要理解并掌握ViewPager、PagerAdapter、Scroller、VelocityTracker等核心组件和类,同时可能还需要结合自定义视图和动画技术,以达到类似桌面的弹性滑动体验。对于开发者而言,这...

    Android自定义柱状图表的方法实例

    `Scroller`用于处理平滑滚动,`velocityTracker`用于检测用户的滑动速度。通过监听触摸事件,我们可以根据用户的滑动速度和方向来更新图表的位置,从而实现图表的动态滚动。 在实际绘制过程中,我们使用`canvas`...

    Android Spinner滑动调整数值实例.rar

    Scroller可以帮助我们实现平滑的动画效果,而VelocityTracker则可以追踪用户的触摸速度,这些都可以用于判断滑动的方向和幅度,从而精确地调整数值。 此外,源码中包含两个Spinner实例,这意味着可能有两种不同的...

    Android继承ViewGroup实现Scroll滑动效果的方法示例

    实现滑动效果需要继承 ViewGroup,重写 onMeasure 和 onLayout 方法,并使用 VelocityTracker 来检测滑动速率。下面将详细介绍 Android 继承 ViewGroup 实现 Scroll 滑动效果的方法。 继承 ViewGroup 要实现滑动...

    RenRenSlideMenuDemo.zip

    * 创建VelocityTracker对象,并将触摸content界面的滑动事件加入到VelocityTracker当中。 * * @param event * content界面的滑动事件 */ private void createVelocityTracker(MotionEvent event) { if...

Global site tag (gtag.js) - Google Analytics