velocitytracker
velocitytracker简介
Android.view.VelocityTracker主要用跟踪触摸屏事件(flinging事件和其他gestures手势事件)的速率。用addMovement(motionevent)函数将Motion event加入到VelocityTracker类实例中.你可以使用getXVelocity() 或getXVelocity()获得横向和竖向的速率到速率时,但是使用它们之前请先调用computeCurrentVelocity(int)来初始化速率的单位 。
使用方法
创建VelocityTracker对象,并将触摸content界面的滑动事件加入到VelocityTracker当中。
//创建VelocityTracker对象,并将触摸content界面的滑动事件加入到VelocityTracker当中。 if (mVelocityTracker == null) { mVelocityTracker = VelocityTracker.obtain(); } mVelocityTracker.addMovement(event);
获取手指在content界面滑动的速度。
//设置移动速度单位为:像素/10000ms,即1000毫秒内移动的像素 mVelocityTracker.computeCurrentVelocity(1000); //获取手指在界面滑动的速度。 int velocity = (int) mVelocityTracker.getXVelocity();
回收VelocityTracker对象
//回收对象 mVelocityTracker.recycle(); mVelocityTracker = null;
示例
下面我们写一个例子用来简单演示下VelocityTracker的使用方法,这个例子的功能很简单,就是捕获手指横向的滑动速度,并显示在一个TextView上。
public class MainActivity extends APPCompatActivity {
private VelocityTracker mVelocityTracker;
private TextView textView;
@Override
protected void onCreate(Bundle savedinstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.line1);
textView = (TextView) findViewById(R.id.txt1);
linearLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//创建VelocityTracker对象,并将触摸content界面的滑动事件加入到VelocityTracker当中。
if (mVelocityTracker == null) {
mVelocityTracker = VelocityTracker.obtain();
}
mVelocityTracker.addMovement(event);
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
//设置移动速度单位为:像素/10000ms,即1000毫秒内移动的像素
mVelocityTracker.computeCurrentVelocity(1000);
//获取手指在界面滑动的速度。
int velocity = (int) mVelocityTracker.getXVelocity();
textView.setText(velocity+"");
break;
case MotionEvent.ACTION_UP:
//回收对象
mVelocityTracker.recycle();
mVelocityTracker = null;
break;
}
return true;
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/line1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:weightSum="1"
tools:context="com.demo.ian.velocitytrackerdemo.MainActivity">
<TextView
android:id="@+id/txt1"
android:layout_width="match_parent"
android:layout_height="89dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:gravity="center"
android:text="hello world!"
android:textAlignment="center"
/>
</LinearLayout>
运行效果如下:
相关阅读
Android VelocityTracker类 滑动速度跟踪
VelocityTracker就是速度跟踪的意思。我们可以获得触摸点的坐标,根据按下的时间可以简单的计算出速度的大小。当你需要跟踪的时候