Android VelocityTracker 速度跟踪器
2016-06-09 11:15
453 查看
使用VelocityTracer可以实现跟踪手指移动的速度变化,实时计算出速度,在Scroller中应用广泛,下面给出简单用法。
简介
VelocityTracer可以帮助你追踪一个touch事件(flinging事件和其他手势事件)的速率。当你要跟踪一个touch事件的时候,使用obtain()方法得到这个类的实例,然后 用addMovement(MotionEvent)函数将你接受到的motion event加入到VelocityTracker类实例中。当你使用到速率时,使用computeCurrentVelocity(int)初始化速率的单位,并获得当前的事件的速率,然后使用getXVelocity() 或getXVelocity()获得横向和竖向的速率。获取及回收VelocityTracker
// 获取速度跟踪器对象 mTracer = VelocityTracker.obtain(); mTracer.addMovement(event);
// 必须回收该对象 mTracer.clear(); mTracer.recycle();
计算滑动的实时速度
// 初始化速率的单位 //设置units的值为1000,意思为一秒时间内运动了多少个像素 mTracer.computeCurrentVelocity(10, ViewConfiguration.get(this) .getMaximumFlingVelocity()); // 获取横纵坐标的速度 float vX = mTracer.getXVelocity(mPointID); float vY = mTracer.getYVelocity(mPointID);
完整DEMO
如果有多点触控的话,,需要使用PointerID来进行分辨每个点的运动速度
public class MainActivity extends ActionBarActivity {
private TextView mTvRecord;
private VelocityTracker mTracer;
private int mPointID; // 触点ID
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTvRecord = (TextView) findViewById(R.id.id_tv_record);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
// 获取速度跟踪器对象 mTracer = VelocityTracker.obtain(); mTracer.addMovement(event);
switch (action) {
case MotionEvent.ACTION_DOWN:
// 获取第一个pointID
mPointID = event.getPointerId(0);
break;
case MotionEvent.ACTION_MOVE:
mTracer.computeCurrentVelocity(10, ViewConfiguration.get(this)
.getMaximumFlingVelocity());
float vX = mTracer.getXVelocity(mPointID);
float vY = mTracer.getYVelocity(mPointID);
mTvRecord.setText("X: " + vX + " Y:" + vY);
break;
case MotionEvent.ACTION_UP:
// 必须回收该对象 mTracer.clear(); mTracer.recycle();
break;
case MotionEvent.ACTION_CANCEL:
mTracer.clear();
mTracer.recycle();
break;
default:
break;
}
return super.onTouchEvent(event);
}
}
相关文章推荐
- Android studio 中SlidingMenu的使用
- Android系统横竖屏切换时候Activity的生命周期
- 【Android框架】Android-universal-image-loader源码阅读(一)
- Android Studio 开发常用快捷键
- android框架---->下沉文字Titanic的使用
- Android之GLES2.0显示图片测试代码
- Android之Log封装
- Android实现监听事件的三种方式
- OpenglES2.0 for Android:各种变换来一波
- systrace跟踪 Android性能优化
- Android jni 使用C语言调用java中的log方法
- DataBinding用法
- android自定义控件,动态设置Button的样式
- Android实现自定义带文字和图片的Button
- 开源自定义控件
- 改变Android按钮背景颜色的高效方法
- Android 仿PhotoShop调色板应用(四) 不同区域颜色选择的颜色生成响应
- Android 仿PhotoShop调色板应用(三) 主体界面绘制
- Android 仿PhotoShop调色板应用(二) 透明度绘制之AlphaPatternDrawable
- Android 仿PhotoShop调色板应用(一)概述