Android onTouch事件与手势操作



触摸,手势操作已经很好的融入了我们的生活。那么 Android 开发中触摸事件要如何捕捉?如何处理?如何识别手势?事件的传递机制又是怎么样的?下面我们将通过一个小例子来进行这方面的学习。


先看效果图

如上图所示,就是一个跟随手指移动的按钮。用来演示我们接下来要说的 onTouch 事件和手势操作。

为了让大家看懂里面的代码,我们来先介绍一下基础知识。


onTouch事件
做什么都好先了解原理以后的工作就会更简单,关于手势以及我们熟悉的 onclick
onLongClick 事件都是基于对 onTouch 事件的捕捉和处理。那么在使用手势工具类的前提下我们应该去学习了解基本的 onTouch 事件。


onTouch 常用的以下 4 个事件:


1 ACTION_DOWN
表示按下了屏幕,第一个执行也是必然执行的方法。


2 ACTION_MOVE
表示为移动手势,会不断的执行直到触摸停止。


3 ACTION_UP 
表示为离开屏幕,触摸停止的时候执行。


4 ACTION_CANCEL
表示取消手势,不会由用户产生,而是由程序产生的。
一个 Action_DOWN,  多个 ACTION_MOVE, 1 ACTION_UP ,就构成了 Android 中众多的事件。


onTouch的参数

View
受到 Touch 事件的 view 对象


MotionEvent
包含的事件的详细信息,例如触摸点的信息,触摸事件类型的信息等
MotionEvent 的方法例如 getRowX 所描述的都是触摸点的信息。



几个重要方法的说明:


getRowX :触摸点相对于屏幕的坐标
getX : 触摸点相对于 view 的坐标
getTop : 按钮左上角相对于父 view LinerLayout )的 y 坐标
getLeft : 按钮左上角相对于父 view LinerLayout )的 x 坐标


onTouch的返回值

这个部分涉及到事件传递和处理机制,详细的不在此介绍。

作用:
这里的返回值代表的是,对于这个触摸事件 touch 是否已经处理完成。
如果我们设置返回值为 true 代表的是处理完成,这样就不会再传递给下一个对象。也就是说后面的控件或者对象就不会接收到触摸事件了。
反之,后面的对象或控件会在此接收到这个触摸事件并被调用。



实践

在学习基础知识之后,我们来看看如何使用这些来实现一个可以拖动的按钮吧。


思路


这里的主要思路就是在 ACTION_DOWN 按下的第一时间记录下初始的状态,在 ACTION_MOVE 滑动事件中不断的刷新按钮的位置。
为了保证有我们正常理解下的点击事件发生,下面我还加了位置是否移动的判断。


下面是实现该功能的内部类
[Java]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
class MyOnTouch implements OnTouchListener{
 
int [] temp = new int [] { 0 , 0 };
 
Boolean ismove = false ;
 
int downX = 0 ;
 
int downY = 0 ;
 
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值