利用VelocityTracker获取手指在屏幕上的滑动速度

  • Post author:
  • Post category:其他


欢迎加群讨论:    杭州Android移动开发  216045581

做界面切换的时候研究了一下屏幕对手指滑动速度感应的功能,参考别人写了一个片段验证了一下velocitytracker这个类的功能

废话不多说了,果断先上图:

手指移动后:

接下来是大家期待的代码部分:

布局文件  activity_main:

在这里,我们只定义了一个TextView用来显示等下我们的手指移动的速度,这里我们把它初始化为:hello  world

<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”

xmlns:tools=”http://schemas.android.com/tools”

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”

tools:context=”.MainActivity” >

<TextView

android:id=”@+id/tv”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”

android:text=”hello world” />

</RelativeLayout>

再下来是MainActivity:

public class MainActivity extends  Activity{

private TextView tv;

private  VelocityTracker  vt=null;

protect void onCreate(Bundle  savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv=()findViewById(R.id.tv);

}

public   boolean onTouchEvent(MotionEvent  event){

int action=event.getAvtion();

switch(action){

case:MotionEvent.ACTION_DOWN:

if(vt==null){

//初始化velocityTracker的对象 vt 用来监测motionevent的动作

vt=VelocityTracker.obtain();

}else{

vt.clear();

}

vt.addMovement(event);

break;

case:MotionEvent.ACTION_MOVE:

vt.addMovement(event);

//代表的是监测每1000毫秒手指移动的距离(像素)即m/px,这是用来控制vt的单位,若括号内为1,则代表1毫秒手指移动过的像素数即ms/px

vt.computeCurrentVelocity(1000);

//这里x为正则代表手指向右滑动,为负则代表手指向左滑动,y的比较特殊,为正则代表手指向下滑动,为负则代表手指向上滑动

tv.setText(“the x velocity is”+vt.getXVelocity);

tv.append(“the y velocity is”+vt.getYVelocity);

break;

case:MotionEvent.ACTION_UP:

case:MotionEvent.CANCEL:

vt.recycle();

break;

}

return true;

}

}



版权声明:本文为wobilini原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。