本文章作为学习总结
尊重原创老师英勇青铜5
链接:https://www.jianshu.com/p/f27b0f2c41b5
来源:简书
(九)VelocityTracker 速度追踪
1.在 view.onTouchEvent() 获取 VelocityTracker 对象
2.使用拿到的 VelocityTracker 对象来计算x,y轴的速度
3.在比较恰当及时的时机,将 VelocityTracker 对象释放掉,回收内存
示例:
public class ScrollerActivity extends AppCompatActivity {
private VelocityTracker velocityTracker;
private final String TAG = "ScrollerActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scroller);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//获取VelocityTracker
velocityTracker = VelocityTracker.obtain();
velocityTracker.addMovement(event);
//计算滑动速度
velocityTracker.computeCurrentVelocity(1000);//计算速度
float xVelocity = velocityTracker.getXVelocity();
float yVelocity = velocityTracker.getYVelocity();
Log.e(TAG,"&&&-->x = "+xVelocity+"---> y = "+yVelocity);
return super.onTouchEvent(event);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (null != velocityTracker){
velocityTracker.clear();//重置
velocityTracker.recycle();//回收内存
}
}
}
直接在Acvitity
测试,获取速度的结果,
x
轴速度,从左向右滑动时,速度为正,从右向左滑动为负;x
轴速度,从上向下滑动时,速度为正,从下向上滑动为负;
正负值就是要看滑动的方向和x,y
轴方向是否一致
注意:
在使用velocityTracker.getXVelocity(),velocityTracker.getYVelocity()
获取速度之前,要先根据设置的单位时间来计算速度。计算公式v = (终点- 起点) /t
。计算出来的速度是相对于设置的时间的。
计算出来的速度指的是一段时间内滑过的像素数。
velocityTracker.computeCurrentVelocity(t)
t = 1000
,在1000ms
内,假设匀速水平滑过了1000px
,水平速度就是1000
,也就是1000px/1000ms
t = 100
,在100ms
内,假设匀速水平滑过了100px
,水平速度就是100
,也就是100px/100ms