android 侧滑事件的监听

来源:互联网 发布:织梦cms使用 编辑:程序博客网 时间:2024/05/21 11:01

   Android的侧滑事件可以帮助我们更好地实现单手操作,特别是对于一些超过5.0的屏来说,通过侧滑可以为我们带来很好的体验,要做的侧滑,在这里,自己写了一个类,以后可以通过调用这个类来方便实现对于侧滑事件的监听。

package com.example.dialogdemo;import android.content.Context;import android.view.GestureDetector;import android.view.GestureDetector.SimpleOnGestureListener;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;public class GestureListener extends SimpleOnGestureListener implementsOnTouchListener {    /** 左右滑动的最短距离 */      private int distance = 100;      /** 左右滑动的最大速度 */      private int velocity = 200;      //声明手势识别类    private GestureDetector gestureDetector;            public GestureListener(Context context) { super();   gestureDetector = new GestureDetector(context, this);  // TODO Auto-generated constructor stub    }    /**      * 向左滑的时候调用的方法,子类应该重写      * @return      */      public boolean left() {          return false;      }            /**      * 向右滑的时候调用的方法,子类应该重写      * @return      */      public boolean right() {          return false;      }        //移动的监听    @Override      public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,              float velocityY) {          // TODO Auto-generated method stub          // e1:第1个ACTION_DOWN MotionEvent,即手指所触及的位置的坐标          // e2:最后一个ACTION_MOVE MotionEvent          // velocityX:X轴上的移动速度(像素/秒)          // velocityY:Y轴上的移动速度(像素/秒)            // 向左滑          if (e1.getX() - e2.getX() > distance                  && Math.abs(velocityX) > velocity) {              left();          }          // 向右滑          if (e2.getX() - e1.getX() > distance                  && Math.abs(velocityX) > velocity) {              right();          }          return false;      }      @Override      public boolean onTouch(View v, MotionEvent event) {          // TODO Auto-generated method stub          gestureDetector.onTouchEvent(event);          return false;      }        public int getDistance() {          return distance;      }        public void setDistance(int distance) {          this.distance = distance;      }    //获得速度,    public int getVelocity() {          return velocity;      }    //设定速度    public void setVelocity(int velocity) {          this.velocity = velocity;      }        public GestureDetector getGestureDetector() {          return gestureDetector;      }        public void setGestureDetector(GestureDetector gestureDetector) {          this.gestureDetector = gestureDetector;      }  }

接下来就是在activity中调用该监听来监听屏幕中的触摸和移动事件

首先我们要获得监听器所要执行的view对象

RelativeLayout relative = (RelativeLayout) findViewById(R.id.view1);relative.setLongClickable(true);relative.setOnTouchListener(new MyGestureListener(this));
为给布局view设置上触摸事件的监听者,然后在本地继承之前写好的类,来实现对于侧滑事件的监听
<pre name="code" class="java">private class MyGestureListener extends GestureListener {          public MyGestureListener(Context context) {              super(context);          }            @Override          public boolean left() {              TextView text = (TextView)findViewById(R.id.text);            text.setText("向左滑动");            return super.left();          }            @Override          public boolean right() {              TextView text = (TextView)findViewById(R.id.text);            text.setText("向右滑动");            return super.right();          }      }      



1 0
原创粉丝点击