Android学习第七弹之手势操作

在昨天我们讲了Android的OnTouch触摸事件,有时候触摸和手势是相互联系的,密不可分的关系,所以上节我们讲了触摸事件,今天我们自然而然的就需要讲手势操作了。触摸,手势操作已经很好的融入了我们的生活,那在Android开发中如何进行手势识别呢?下面我们就来讲讲。

什么是手势呢?

手势就是用户对手机屏幕进行连续触碰,比如:从屏幕左边滑到手机右边,从屏幕上面滑动到屏幕下面等等,手势可以是一笔,也可以是多笔,可以形成规则或不规则的图形。

手势是如何识别的呢? Android的SDK提供了对手势的识别、自定义手势、存取手势、手势库中査询手势的相关类/接 口,提供了android.view.GestureDetector包用于检测用户的手势。就是通过这些先关的类和接口进行相关的操作的。今天我们主要讲的就是这些类和接口的作用与用法。

与手势相关的类和接口

手势操作一般用到下面的三个类:

  • android.view.GestureDetector 手势操作的识别类,通过他来使用下面的识别接口,该类在andmid.view.GestureDetector包中,可将该类视为手势检测器。
  • android.view.GestureDetector.SimpleOnGestureListener 手势识别的接口类,使用他可以按需重载自己想要的方法,该类实现了 OnGestureListener接口,因此,通过该类可实现对手势的检测操作。
  • android.view.GestureDetector.OnGestureListener; 手势识别的类,SimpleOnGestureListener接口的父类。使用他需要实现他所有的方法,该接口中定义了检测手势按下、按下未松开、轻击、滚动、 长按、拖动等方法。

方法说明

OnGestureListener有下面的几个方法:

按下(onDown):

在按下时调用。

抛掷 boolean OnGestureListener.onFling(MotionEvent el, MotionEvent e2, float velocityX, float velocityY)

作用:检测手势划动事件。

参数: el划动的起始坐标

e2划动的结束坐标

velocityX每秒横向划动的像素值。

velocityY每秒纵向划动的像素值。

长按 OnGestureListener.onLongPress(MotiphEvent e)

作用:检测长按事件。

滚动 boolean onScroll(MotionEvent el, MotionEvent e2, float distanceX, float distanceY);

作用:检测手势滚动事件。

参数:

el:滚动的起始坐标

e2:滚动的结束坐标

distanceX:滚动的横向巨离

distanceY:滚动的纵向距离

按住 OnGestureListener.onShowPress(MotionEvent e)

手指按在触摸屏上,它的时间范围在按下起效,在长按之前。

抬起 onSingleTapUp(MotionEvent e)

作用:检测单击事件,手指离开触摸屏的那一刹那。

SimpleOnGestureListener比OnGestureListener多出来的方法:

双击(onDoubleTap)

双击的第二下Touch down时触发

双击事件(onDoubleTapEvent)

双击的第二下Touch down和up都会触发一次,可用e.getAction()区分。

检测手势的步骤

1、创建手势监听器类继承SimpIeOnGestureListener或实现OnGestureListener

2、创建gestureDetector对象

3、在onTouch或onTouchEvent方法中,将Touch事件传递给gestureDetector对象的onTouchEvent方法进行手势判定。

原文发布于微信公众号 - 非著名程序员(non-famous-coder)

原文发表时间:2015-08-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python爬虫日记

python3下搜狗AI API实现

a、搜狗也发布了自己的人工智能 api,包括身份证ocr、名片ocr、文本翻译等API,初试感觉准确率一般般。

1893
来自专栏mukekeheart的iOS之旅

iOS学习——tableview中带编辑功能的cell键盘弹出遮挡和收起问题解决

  最近在项目中经常用到UITableView中的cell中带有UITextField或UITextView的情况,然后在这种场景下,当我们点击屏幕较下方的ce...

7378
来自专栏QQ音乐技术团队的专栏

web实时长图实践

本文将介绍几种浏览器端和服务器端 web 实时生成图片的方案,欲知详情请看文章详情。

1.3K8
来自专栏码神联盟

【原创】说好的暴雨呢,搁哪呢?还能不能 雨~露~均~沾?

不是说下大雨吗?玩儿呐?搁哪呢?大雨搁哪呢?下丢啦?哗啦到海里去啦?让五娃给吞啦?南方整的那老大,看不起副中心咋的?还能不能 雨~露~均~沾~?你说我小...

3806
来自专栏developerHaoz 的安卓之旅

知乎 Matisse 源码解析,带你探究高效图片选择库的秘密

可以看到 Matisse 的可拓展性是非常强的,不仅可以自定义我们需要的主题,而且还可以按照需求来过滤出我们想要的文件,除此之外,Matisse 采用了建造者模...

5441
来自专栏Golang语言社区

使用Go开发一个简单的服务器程序

最近有个小项目,需要一个简单的后台程序来支撑,本来想用Nodejs来做,但是由于本人js一直很菜,并且很讨厌callback,虽然我也很喜欢异步模型,但我一直都...

37510
来自专栏Golang语言社区

使用Go开发一个简单的服务器程序

最近有个小项目,需要一个简单的后台程序来支撑,本来想用Nodejs来做,但是由于本人js一直很菜,并且很讨厌callback,虽然我也很喜欢异步模型,但我一直都...

3636
来自专栏androidBlog

使用ViewDragHelper打造属于自己的DragLayout(抽屉开关 )

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details...

1382
来自专栏Material Design组件

Human Interface Guidelines —— Pickers

1062
来自专栏程序员互动联盟

【Windows编程】系列第六篇:创建Toolbar与Statusbar

上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏...

4913

扫码关注云+社区

领取腾讯云代金券