首页 > 系统 > Android > 正文

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

2020-04-11 11:33:25
字体:
来源:转载
供稿:网友

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

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

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; }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表