博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 侧滑事件的监听
阅读量:4218 次
发布时间:2019-05-26

本文共 3261 字,大约阅读时间需要 10 分钟。

   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 implements	OnTouchListener {    /** 左右滑动的最短距离 */      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设置上触摸事件的监听者,然后在本地继承之前写好的类,来实现对于侧滑事件的监听
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();          }      }

 

转载地址:http://cbtmi.baihongyu.com/

你可能感兴趣的文章
您绝对想不到的 SQL 子查询错误
查看>>
外连接 ON 条件的三个作用及与 WHERE 的区别
查看>>
select into 和 insert into select 两种表复制语句
查看>>
XML和JSON
查看>>
linux 常用命令
查看>>
hibernate详解
查看>>
Java中堆与栈的区别
查看>>
深入探讨Iterator模式
查看>>
JAVA写的多线程下载程序,并具有断点续传功能
查看>>
Java 中 Vector、ArrayList、List 使用深入剖析
查看>>
深入理解java多态性
查看>>
Java新手进阶:细说引用类型
查看>>
Java中增强型for循环的样例和解释
查看>>
Java性能优化[0]:概述
查看>>
java Serializable和Externalizable序列化反序列化详解
查看>>
[java]垃圾收集器和堆
查看>>
JAVA 处理时间
查看>>
java(Web)中相对路径,绝对路径问题总结
查看>>
Java跨平台的原理
查看>>
Java线程之守护线程(Daemon)
查看>>