今天在做一个项目时用到了简单的手势功能(向左,向右滑切屏),于是简单地封装了下

import android.content.Context;

import android.util.DisplayMetrics;

import android.view.GestureDetector;

import android.view.GestureDetector.OnGestureListener;

import android.view.MotionEvent;

public class GestureHelper implements OnGestureListener {

private GestureDetector gesture_detector;

private int screen_width;

private OnFlingListener listener_onfling;

public static abstract class OnFlingListener {

public abstract void OnFlingLeft();

public abstract void OnFlingRight();

}

public GestureHelper(Context context) {

DisplayMetrics dm = context.getResources().getDisplayMetrics();

screen_width = dm.widthPixels;

gesture_detector = new GestureDetector(context, this);

}

public void setOnFlingListener(OnFlingListener listener) {

listener_onfling = listener;

}

public boolean onTouchEvent(MotionEvent event) {

return gesture_detector.onTouchEvent(event);

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

// 触发条件 :

// X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒

final int FLING_MIN_DISTANCE = (int) (screen_width / 3.0f), FLING_MIN_VELOCITY = 200;

if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) {

listener_onfling.OnFlingLeft();

} else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) {

listener_onfling.OnFlingRight();

}

return true;

}

@Override

public boolean onDown(MotionEvent e) {

return false;

}

@Override

public void onLongPress(MotionEvent e) {

}

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,

float distanceY) {

return false;

}

@Override

public void onShowPress(MotionEvent e) {

}

@Override

public boolean onSingleTapUp(MotionEvent e) {

return false;

}

}

使用方法如下:

public class TestActivity extends Activity {

private GestureHelper gh;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_start);

gh = new GestureHelper(this);

gh.setOnFlingListener(new OnFlingListener() {

@Override

public void OnFlingLeft() {

//向左滑动

}

@Override

public void OnFlingRight() {

//向右滑动

}

});

}

@Override

public boolean onTouchEvent(MotionEvent event) {

return gh.onTouchEvent(event);

}

}

诸如向上向下滑等因为需求不多所以没有加上去,有需求的朋友可以自己加上。

android 手势类的封装,Android手势识别简单封装类相关推荐

  1. Android 手势解锁 GestureLock的使用和简单修复

    github地址:https://github.com/7heaven/GestureLock 下面是对github的GestureLock的适当修改... 先上图,默认效果图: 当然可以自定义数量啊 ...

  2. android手势密码源码,Android自定义UI手势密码改进版源码下载

    在之前文章的铺垫下,再为大家分享一篇:Android手势密码,附源码下载,不要错过. 先看第一张图片的布局文件 activity_main.xml xmlns:tools="http://s ...

  3. Android Canvas类介绍和Android Draw Rect 坐标图示

    当我们调整好画笔之后,现在需要绘制到画布上,这就得用Canvas类了.在Android中既然把Canvas当做画布,那么就可以在画布上绘制我们想要的任何东西.除了在画布上绘制之外,还需要设置一些关于画 ...

  4. android 加载条封装,Android基于JsBridge封装的高效带加载进度的WebView

    图片发自简书App 概述 从去年4月项目就一直用起了JsBridge,前面也针对jsBridge使用姿势介绍过一篇入门篇,<Android JsBridge实战 打造专属你的Hybrid APP ...

  5. android 数据埋点封装,Android 数据埋点的重新思考

    已经有很久没有更新文章了,我想做过客户端开发的应该都有干过数据埋点的事吧,其实我之前一直在思考怎么让数据埋点更优雅,好在最近有了新的想法,所以分享出来给大家一起参考参考. 有人说我的之前文章很些难懂, ...

  6. android图片视频图片封装,Android图片、视频资源选择库(支持图片/视频/仿微信拍照、拍视频)...

    简介 Android媒体资源选择库(支持图片/视频/仿微信拍照.拍视频),非常简单使用,支持图库多选.单选.仿微信拍照拍视频.系统照相机拍照拍视频(v1.1.2).如需使用美颜滤镜.简单图片编辑,ff ...

  7. android手势第一次设置密码_[Android开发实战]Android手势密码(支付宝手势密码)实现(支持2.x) | 学步园...

    在很多安全性比较高的应用程序中,每次打开程序,都会有让用户输入密码,这些安全性比较高的程序,密码也会相对复杂,在手机上输入起来,就会不大方便,至少要切换一次输入法,对用户体验造成不好的影响,在移动互联 ...

  8. android 工具类放哪里,android开发工具类——Constants(存放全局变量)

    具体参照代码: 这是个人项目中常用到的一些全局变量. package com.imeibi.constants; import android.os.Environment; /** * Create ...

  9. android图片视频图片封装,Android中的图片截屏和视频截屏

    各位看官老爷先看这里!!!!! 这篇文章的截屏有前提条件的: ①.代码中的截屏均是以全屏模式下,即图片再展示的时候是全屏,视频在播放的时候是全屏. ②.视频的截屏并不能算的上是真正意义上的截屏,而是抽 ...

最新文章

  1. 机器学习实战源码数据集
  2. 7 Papers Radios | GCN大佬公开博士论文;谷歌提出扩展型BERT架构
  3. SQLSERVER执行计划详解
  4. Linux sed 打印模式空间p命令使用案例
  5. android异步网络连接开源:Android Asynchronous Http Client
  6. ffplay的快捷键以及选项
  7. 基于SpringBoot+Mybatis+Thymeleaf商品信息管理系统
  8. LeetCode 518. 零钱兑换 II(动态规划)
  9. Win7系统桌面壁纸换不了怎么办
  10. jupyter notebook一些实用技巧
  11. winxp下安装虚拟机,并安装linux操作系统
  12. PHP语言编程实现采集远程图片资源
  13. matlab 带通滤波结果不对,带通滤波 matlab
  14. CAJViewer 无法获取document路径问题--360卫士C盘搬家
  15. 换服务器影响网站排名,网站更换服务器空间会影响排名吗
  16. 前端搜索引擎优化SEO优化之Title 和 Meta 标签
  17. 电子设计大赛-电源电路
  18. “ConnectionString属性尚未初始化”问题解析
  19. MySQL快速学习笔记(建议收藏)
  20. Kotlin SQLite URL转义字符(Escape)(一)

热门文章

  1. Windows下JDK开发环境搭建及环境变量配置
  2. myeclipse8.5集成svn
  3. wps表格里面计算机在哪里,“Excel表格软件在电脑上到哪里找?“电脑excle在哪里...
  4. php 如何根据经纬度计算距离,小程序实例:如何根据经纬度计算两点之间的距离(代码)...
  5. java单击按钮切换图片_JAVA点击按钮改变背景图片 跪求代码·
  6. go excel换行符替换_微软Excel与WPS Excel哪个好玩?
  7. android.mk官网介绍,转载:Android.mk语法介绍
  8. 苏宁大数据怎么运营_【苏宁大数据部门怎么样?进去能学到技术吗?】-看准网...
  9. linux 临时 目录权限,linux文件和目录权限的设置
  10. linux有k歌软件吗,在Linux下可用Wine安装和运行暴风影音16、全民K歌