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

作者:junjie 时间:2021-10-21 07:10:08 

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

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


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

标签:android,监听,手指,滑动,屏幕
0
投稿

猜你喜欢

  • 详解Java中数组判断元素存在几种方式比较

    2021-09-25 13:49:21
  • Android 一些常用的混淆Proguard

    2021-10-13 06:46:29
  • java中final与finally的使用介绍

    2023-04-21 05:36:43
  • SpringCloud实现灰度发布的方法步骤

    2023-03-17 05:18:37
  • SpringBoot中使用Redis Stream实现消息监听示例

    2021-09-02 04:42:07
  • C#算法之无重复字符的最长子串

    2021-05-24 21:56:59
  • Android使用Scroll+Fragment仿京东分类效果

    2022-11-17 16:56:48
  • 在Unity中捕捉Android的常用按钮返回事件

    2023-01-31 00:11:36
  • Android实现数字跳动效果的TextView方法示例

    2023-05-24 16:54:29
  • Android开发笔记之:深入理解Cursor相关的性能问题

    2021-10-31 15:06:49
  • SpringMVC实现多文件上传

    2023-10-12 16:49:15
  • Java日期时间操作的方法

    2021-12-27 18:36:05
  • 如何用Dos命令运行Java版HelloWorld你知道吗

    2022-07-24 22:32:26
  • C#下解析HTML的两种方法介绍

    2021-07-03 16:08:21
  • 为IObservable实现自己的运算符(详解)

    2022-04-02 08:58:15
  • 常见JavaWeb安全问题和解决方案

    2023-11-09 01:02:17
  • android TextView设置中文字体加粗实现方法

    2023-08-06 02:32:03
  • C#使用yield关键字让自定义集合实现foreach遍历的方法

    2022-07-21 11:44:28
  • 基于hibernate框架在eclipse下的配置方法(必看篇)

    2022-11-09 20:30:26
  • Android AutoCompleteTextView连接数据库自动提示的方法(附demo源码下载)

    2023-09-23 14:53:20
  • asp之家 软件编程 m.aspxhome.com