一起Talk Android吧(第四百五十四回:计算View的滑动距离)
Posted talk_8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起Talk Android吧(第四百五十四回:计算View的滑动距离)相关的知识,希望对你有一定的参考价值。
文章目录
各位看官们大家好,上一回中咱们说的例子是"给View添加滑动事件",这一回中说的例子是" 计算View的滑动距离"。闲话休提,言归正转,让我们一起Talk android吧!
整体思路
我们在上一章回中介绍了如何给View添加滑动事件,滑动事件本质上是利用滑动的距离来移动View,在上一章回中我们是利用View中的事件坐标来计算滑动距离:按下事件发生时获取滑动开始坐标,滑动结束时获取滑动结束坐标,结束坐标值与开始坐标值的差值就是View的滑动距离,这个思路大家很容易理解。我们本章回中再介绍另外一种计算滑动距离的思路:VelocityTracker
.
使用方法
VelocityTracker
类是Android提供的类,它用来跟踪触摸事件的变化速度,速度分为水平和垂直两个方向的速度,对应于View坐标中的x轴和y轴。接下来我们介绍该类的使用方法,还和以前一样,通过文字结合代码的方式来介绍。
- 1.获取类的对象;
mVelocityTracker = VelocityTracker.obtain();
- 2.注册监听事件,以便监听View中的事件;
@Override //在View的回调方法中注册监听事件
public boolean onTouchEvent(MotionEvent event)
super.onTouchEvent(event);
mVelocityTracker.addMovement(event);
- 3.计算滑动速度;
mVelocityTracker.computeCurrentVelocity(1000);
注意:computeCurrentVelocity
()方法的参数表示一个间隔时间,它的单位是ms,滑动距离的单位是像素(px),因此滑动速率的单位是px/ms.比如,上面代码中表示1000ms内的事件滑动速率,滑动速率的单位是px/1000ms,或者说px/s.
- 4.获取滑动速度;
float velocityX = mVelocityTracker.getXVelocity();
float velocityY = mVelocityTracker.getYVelocity();
- 5.释放相关资源;
mVelocityTracker.clear();
mVelocityTracker.recycle();
使用获取到的滑动速率乘以滑动时间就可以计算出滑动距离,是不是比我们手动计算坐标的差值要方便一些?
注意滑动速度有正值和负值,负值表示向左或者向上滑动,因为这两个方向的距离差值是负值。
示例代码
下面演示一个完整的示例代码:
@Override
public boolean onTouchEvent(MotionEvent event)
super.onTouchEvent(event);
mVelocityTracker.addMovement(event);
switch (event.getAction())
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_UP:
mVelocityTracker.clear();
mVelocityTracker.recycle();
break;
case MotionEvent.ACTION_MOVE:
mVelocityTracker.computeCurrentVelocity(1000);
float velocityX = mVelocityTracker.getXVelocity();
float velocityY = mVelocityTracker.getYVelocity();
break;
default:
break;
return true;
在上面的代码中,我们在滑动事件中(MOVE)计算滑动速率,在弹起事件(UP)中释放资源。这种使用方法可以当作一个模板或者示例,大家可以参考此模板来使用。
看官们,关于"计算View的滑动距离"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!
以上是关于一起Talk Android吧(第四百五十四回:计算View的滑动距离)的主要内容,如果未能解决你的问题,请参考以下文章
一起Talk Android吧(第四百二十四回:绘图知识总结)
一起Talk Android吧(第四百五十八回:SeekBar补充用法一)
一起Talk Android吧(第四百五十九回:SeekBar补充用法二)
一起Talk Android吧(第四百七十四回:如何使用视图动画)