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上滚动的功能。

为什么简单的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完整应用程序教程”系列
  • Android Google Maps教程
  • Android快速偏好设定教学课程
  • Android文字转语音应用
  • Android HTTP Camera Live预览教程
  • Android依赖注入和测试库