Android教程:应用程序中的手势

如今,移动应用程序中的手势非常普遍。 几乎所有拥有智能手机经验的人都知道,捏通常会放大图像。 现在,在Android中使用手势非常方便。

OnTouch

实际上,所有手势都由一个Activity上的一个事件处理。 只要在屏幕上触摸视图,就会调用OnTouch。 它提供了创建一些非常有趣的手势所需的所有信息。 Android提供了一些简单的类,使您可以快速将一些手势添加到应用程序中,而无需真正了解手势的细节。 触发OnTouch时,您会收到一个MotionEvent和对所触摸视图的引用。

运动事件说明

每次在OnTouch回调中触摸屏幕时,Android操作系统就会返回Motion事件。 MotionEvent对象包含有关有多少手指触摸屏幕以及移动手指的速度的信息。 它具有处理任何手势所需的所有细节。 Android也更进一步。

Android为一些基本的手势检测提供了一些不错的类,例如单指拖放。 通过使用SimpleOnGestureListener,它们为开发人员提供了一种实现几种手势的简便方法,而又不会使您的手真正弄脏。

如何使用OnGestureListener

使用OnGestureListener非常容易。 在您的活动中,将OnTouch侦听器连接到活动的根视图(如果要在全屏上显示手势)。

rootLayout.setOnTouchListener(new OnTouchListener() {
	@Override
	public boolean onTouch(View v, MotionEvent event) {
		yourGestureListener.onTouchEvent(event);
		return false;
	}
});

现在,您的SimpleOnGestureListener将处理rootlayout上的所有touch事件。 剩下的就是实现您的Gesture Listener在某些触摸事件上要做的事情。 通过简单地覆盖所需的方法,就可以实现手势功能,而无需确定用户完成了哪种手势。 例如,您可以重写SimpleOnGestureListener的OnScroll方法,以实现自己的用于在View上滚动的功能。

为什么Simple GestureDetector不太好

Simple GestureDetector非常适合只需要一些基本手势的任何手势。 但是,对于要进行两次(或更多次)触摸的任何手势,您都没有运气。 如果您真的想深入了解手势,则确实需要进一步研究Motion Event对象。

创建更多复杂的手势

让我们朝与上述示例不同的方向前进。 可以说,与其在我们的OnTouch回调中仅调用Gesture Listener,不如让我们再看一下Motion Event对象。

我们收到的每个运动事件都有其自己的动作,例如DOWN (在视图上按下手指)或MOVE (在VEVE上 ,手指从二维平面上的一个位置移动到另一位置)。 运动事件还具有一个对处理多点触摸手势非常有用的动作,称为POINTER_DOWN ,当在视图上进行第二次触摸时使用该动作。

使用这些动作,可以创建复杂的手势。 例如,捏手势(通常用于放大地图)可以像这样工作:

1.收到DOWN。 我们记录用户触摸屏幕的初始位置。

2.收到POINTER_DOWN。 由于我们知道这可能是两指手势,因此我们记录了第二次触摸的点

3.收到MOVE。 现在,我们检查一下我们检测到的两个指针是否已经朝着彼此移动。 *

*请注意,在运动事件对象中,可以使用event.getX()方法获取不同触摸的坐标。

手势预测

Android还可以将特定手势加载到您的应用程序中。 这些特定手势比上面提到的手势更独特,例如在屏幕上绘制Z符号。

创建这些类型的手势需要模拟器。 您首先在模拟器中绘制手势,然后将它们保存到文件中。 然后,您可以获取创建的手势文件并将其加载到应用程序中。 通过将GestureOverLayView添加到您的布局中,您可以使用新创建的手势来执行所需的操作。

单击此处以获取有关手势预测的更多信息。

参考: Android教程: JCG合作伙伴 Isaac TaylorProgramming Mobile博客上 为您的应用添加手势

相关文章 :

翻译自: https://www.javacodegeeks.com/2011/09/android-tutorial-gestures-in-your-app.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值