android拾遗04——手势监听

来源:互联网 发布:淘宝客服账号怎么登陆 编辑:程序博客网 时间:2024/06/05 20:26

android的手势监听

android的手势监听可以监听用户在屏幕上的任何点击、滑动事件,然后通过基于监听器的事件处理机制来做出响应。
开发的步骤有两步:

  1. 创建手势探测器,并进行实例化
  2. 为手势探测器绑定手势监听器,实现处理方法

手势的监听器监听且只监听以下几种事件:

  1. onDOwn 触碰事件
  2. onFling 拖动事件,这个方法会获得拖动的速度
  3. onLongPress 长按事件
  4. onScroll 滚动事件
  5. onShowPress 按下还未拖动或者松开时调用
  6. onSingleTapUp 轻触事件

代码示例:

package com.exe.feifei.gesture;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.GestureDetector;import android.view.MotionEvent;import android.widget.Toast;public class MainActivity extends ActionBarActivity {    //声明手势探测器    GestureDetector gd;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //实例化手势探测器的同时就是在为手势探测器绑定监听器,传入的第一个参数是当前的activity,第二个就是手势监听器        gd=new GestureDetector(this,new MyGestureListener());    }    //在这个activity的触摸事件里面将触摸的处理托管给手势探测器处理    @Override    public boolean onTouchEvent(MotionEvent me)    {        return gd.onTouchEvent(me);    }    //自定义手势监听器    class MyGestureListener implements GestureDetector.OnGestureListener {        //当手指按下去的时候会调用,事件里面会有按下去的坐标        @Override        public boolean onDown(MotionEvent arg0)        {            Toast.makeText(MainActivity.this,"按下去了ondown"+arg0.getX()+","+arg0.getY(),Toast.LENGTH_SHORT).show();            return false;        }        //长按事件处理方法一般按下去三秒才会处理事件        @Override        public void onLongPress(MotionEvent e)        {            Toast.makeText(MainActivity.this,"长按下去了onlongpress"+e.getX()+","+e.getY(),Toast.LENGTH_SHORT).show();        }        //手指在屏幕上快速滑动的时候调用,velocityX和VelocityY分别指的是在X和Y方向上的速度        @Override        public boolean onFling(MotionEvent e1,MotionEvent e2,float velocityX,float velocityY)        {            Toast.makeText(MainActivity.this,"快速滑动onfling"+e1.getX()+","+e1.getY(),Toast.LENGTH_SHORT).show();            return false;        }        //当手指在屏幕上拖动的整个过程中都会形成事件,所以这个会调用很多次,但是每次的参数值是一样的,因为是在滑动的动作做完之后才会触发        @Override        public boolean onScroll(MotionEvent e1,MotionEvent e2,float distanceX,float distanceY)        {            Toast.makeText(MainActivity.this,"滚动onscroll"+e1.getX()+","+e1.getY(),Toast.LENGTH_SHORT).show();            return false;        }        //每次按下去但是没有马上抬起来就会调用,和轻触相区别,测试估计每次两秒才相应        @Override        public void onShowPress(MotionEvent e)        {            Toast.makeText(MainActivity.this,"点击onshowpress"+e.getX()+","+e.getY(),Toast.LENGTH_SHORT).show();        }        //轻触事件,按下去在一秒甚至更短的时间内抬起就会触发        @Override        public boolean onSingleTapUp(MotionEvent e)        {            Toast.makeText(MainActivity.this,"singleTapUP"+e.getX()+","+e.getY(),Toast.LENGTH_SHORT).show();            return  false;        }    }}

0 0
原创粉丝点击