封装的android监听手指左右滑动屏幕的事件类分享
程序员文章站
2022-08-17 18:05:05
左右滑动是智能手机最常用的动作,在此简单的封装了一下,以后直接拿来用就可以了。
简单的只需要几行就可以了,下面那个类是封装好了的。
package com.ex...
左右滑动是智能手机最常用的动作,在此简单的封装了一下,以后直接拿来用就可以了。
简单的只需要几行就可以了,下面那个类是封装好了的。
package com.example.test; import android.os.bundle; import android.app.activity; import android.content.context; import android.util.log; import android.widget.relativelayout; public class mainactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main);//这里的xml是一个空白的layout //需要监听左右滑动事件的view relativelayout view = (relativelayout) this.findviewbyid(r.id.layout); //setlongclickable是必须的 view.setlongclickable(true); view.setontouchlistener(new mygesturelistener(this)); } /** * 继承gesturelistener,重写left和right方法 */ private class mygesturelistener extends gesturelistener { public mygesturelistener(context context) { super(context); } @override public boolean left() { log.e("test", "向左滑"); return super.left(); } @override public boolean right() { log.e("test", "向右滑"); return super.right(); } } }
package com.example.test; import android.content.context; import android.view.gesturedetector.simpleongesturelistener; import android.view.gesturedetector; import android.view.view; import android.view.view.ontouchlistener; import android.view.motionevent; /** * 实现监听左右滑动的事件,哪个view需要的时候直接setontouchlistener就可以用了 * @author linzhiquan * */ 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); } /** * 向左滑的时候调用的方法,子类应该重写 * @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; } }