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

欢迎加群讨论:    杭州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;

}


   }




  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值