高级UI<第四十二篇>:滑动速度追踪神器:VelocityTra

2020-02-14  本文已影响0人  NoBugException

当需要跟踪触摸屏事件的速度的时候,可以使用VelocityTracker来追踪滑动速度,下面来介绍下VelocityTracker的基本使用步骤。

【第一步】 创建对象

            //创建惯性滑动速度追踪类对象
            velocityTracker = VelocityTracker.obtain();

使用obtain()方法获取实例。

【第二步】 追踪速度

            //将事件加入到VelocityTracker类实例中
            velocityTracker.addMovement(event);
            //计算1秒内滑动的像素个数
            velocityTracker.computeCurrentVelocity(1000);
            //X轴方向的速度
            xVelocity = (int) velocityTracker.getXVelocity();
            //Y轴方向的速度
            yVelocity = (int) velocityTracker.getYVelocity();

都加了注释,不需要赘述了。

【第三步】 回收资源

            //回收
            velocityTracker.clear();
            velocityTracker.recycle();

VelocityTracker的使用只有三步,虽然比较简单,但是必须要知道有这个方法可以计算滑动速度,也是研究fling事件的基础。

最后,贴出完整核心代码

@Override
public boolean onTouchEvent(MotionEvent event) {

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            //创建惯性滑动速度追踪类对象
            velocityTracker = VelocityTracker.obtain();
            break;
        case MotionEvent.ACTION_MOVE:
            //将事件加入到VelocityTracker类实例中
            velocityTracker.addMovement(event);
            //计算1秒内滑动的像素个数
            velocityTracker.computeCurrentVelocity(1000);
            //X轴方向的速度
            xVelocity = (int) velocityTracker.getXVelocity();
            //Y轴方向的速度
            yVelocity = (int) velocityTracker.getYVelocity();

            break;
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_CANCEL:
            //回收
            velocityTracker.clear();
            velocityTracker.recycle();
            break;
    }
    return true;
}

[本章完...]

上一篇下一篇

猜你喜欢

热点阅读