整理android VelocityTracker

来源:互联网 发布:唐朝 知乎 编辑:程序博客网 时间:2024/05/06 10:53

作用:

VelocityTracker类为速率跟踪器,可以获得横向和竖向的速率,根据返回的速率为正数还是负数来判断滑动方向,大于0向右滑动,反之向左。在处理滑动的一些操作中非常好使。VelocityTracker不仅可以处理单点的速度,也可以获得多点的速度。这和处理多点触摸的方式是一样的,传入一个ID就可以了。

 使用方法:

        1,在dispatchTouchEvent(MotionEvent event)或者onTouchEvent(MotionEvent ev)函数中MotionEvent.ACTION_DOWN分支中通过VelocityTracker.obtain()获取实例,并将ev设置到VelocityTracker中,如:

private void addVelocityTracker(MotionEvent event) {if (velocityTracker == null) {velocityTracker = VelocityTracker.obtain();}                 velocityTracker.addMovement(event);}
在不用的时候,释放掉VelocityTracker

private void recycleVelocityTracker() {if (velocityTracker != null) {velocityTracker.recycle();velocityTracker = null;}}
2,获取速率。在获取速率之前要先调computeCurrentVelocity(int units)或者computeCurrentVelocity(int units, float maxVelocity)方法来设置速率的时间单位,int unitis表示速率的基本时间单位。unitis值为1的表示是,一毫秒时间单位内运动了多少个像素, unitis值为1000表示一秒(1000毫秒)时间单位内运动了多少个像素floatVelocity表示速率的最大值,也可以获取多点的速率,

private int getScrollVelocity() {velocityTracker.computeCurrentVelocity(1000);int velocity = (int) velocityTracker.getXVelocity();return velocity;}
//id是touch event触摸点的ID, 来为多点触控标识,有这个标识在计算时可以忽略//其他触点干扰,当然干扰肯定是有的public float getXVelocity();public float getYVelocity();public float getXVelocity(int id);public float getYVelocity(int id);
 





0 0
原创粉丝点击