当前位置: 移动技术网 > 移动技术>移动开发>Android > 封装的android监听手指左右滑动屏幕的事件类分享

封装的android监听手指左右滑动屏幕的事件类分享

2019年07月24日  | 移动技术网移动技术  | 我要评论

左右滑动是智能手机最常用的动作,在此简单的封装了一下,以后直接拿来用就可以了。

简单的只需要几行就可以了,下面那个类是封装好了的。

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;
 }
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网