转自http://blog.csdn.net/kieven2008/article/details/6544270
GestureDetector
ScaleGestureDecoder
VelocityTracker
一. GestureDetector
GestureDetector对象对接收多个MotionEvent事件。并根据这些MotionEvent事件来判断用户在进行什么操作。
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent e) {
//用户轻触屏幕后松开。
return false;
}
@Override
public void onShowPress(MotionEvent e) {
//用户轻触屏幕,尚末松开或拖动,注意,强调的是没有没有松开或者拖动状态
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
//用户按下屏幕并拖动,相当于windows 的mouse_move
return false;
}
@Override
public void onLongPress(MotionEvent e) {
//用户长按屏幕
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
//用户按下屏幕,快速移动后松开(就是在屏幕上滑动),相当于iOS的swipe
}
Java代码:
• @Override
• public boolean onTouchEvent(MotionEvent event) {
• if (gestureDetector.onTouchEvent(event))
• return true;
• else
• return false;
• }
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return mGestureDetector.onTouchEvent(event);
}
二. ScaleGestureListener
主要用于:多点触摸,放大缩小
public static class SimpleOnScaleGestureListener implements OnScaleGestureListener {
public boolean onScale(ScaleGestureDetector detector) {
return false;
}
public boolean onScaleBegin(ScaleGestureDetector detector) {
return true;
}
public void onScaleEnd(ScaleGestureDetector detector) {
// Intentionally empty
}
}
三、VelocityTracker
追踪Fling等触摸事件的速度
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (mVelocityTracker == null) {
mVelocityTracker = VelocityTracker.obtain();
}
mVelocityTracker.addMovement(ev);
final int action = ev.getAction();
switch (action & MotionEvent.ACTION_MASK) {
。。。
case MotionEvent.ACTION_UP:
if (mTouchState == TOUCH_STATE_SCROLLING) {
final VelocityTracker velocityTracker = mVelocityTracker;
velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);
final int velocityX = (int) velocityTracker.getXVelocity(mActivePointerId);
.....
if (velocityX > SNAP_VELOCITY && mCurrentScreen > 0) {
.....
} else if (velocityX < -SNAP_VELOCITY && mCurrentScreen < getChildCount() - 1) {
......
} else {
.....
}
if (mVelocityTracker != null) {
mVelocityTracker.recycle();
mVelocityTracker = null;
}
}
mTouchState = TOUCH_STATE_REST;
break;
}
}
分享到:
相关推荐
这里我们讨论的是如何利用百度的AI技术,特别是其手势识别API,来实现在Android应用中隔空手势的功能。百度的手势识别API是基于深度学习的,能够高效准确地识别多种手势,为开发者提供了强大的工具。 首先,要使用...
在Android开发中,手势识别是提升用户体验的重要一环。Android手势库识别主要涉及的是如何让应用能够理解并响应用户的触摸动作,从而实现更直观、更便捷的交互方式。本教程适用于初学者,将深入探讨如何在Android...
在Android平台上,手势识别是一种常见的用户交互方式,它允许用户通过特定的手势操作来控制或与应用程序进行互动。本项目提供的“Android手势识别源码”是一个可以运行的应用程序,其特点是代码注释清晰,便于理解,...
利用Android开发中的JNI接口,导入OpenCV库进行手势识别,所使用的图片全部从Android的camera中进行采集,手势需要带上红手套,程序识别红色的方块物体,能够识别出1,2,3。。。的数字。
在Android开发中,手势识别是一项重要的技术,它允许用户通过触摸屏幕的各种动作来与应用程序进行交互,提升用户体验。本文将基于“android手势识别讲解源码”这个主题,深入解析手势识别的基本原理,以及如何在实际...
本教程将聚焦于Android手势识别的实现,主要关注`GestureDetector`类。 `GestureDetector`是Android SDK中的一个核心组件,用于处理基本的手势检测。它处理了滑动(swipe)、点击(tap)和长按(long press)等常见...
本篇将详细介绍Android手势识别的基本概念、实现方式以及相关示例。 ### 1. 基本概念 **手势识别**:在移动设备上,手势识别是通过分析用户的触摸屏幕动作,如滑动、缩放、旋转等,来理解用户意图并执行相应操作的...
`Gesture`类是Android手势识别的核心,它包含了手势的所有轨迹点信息。通过`Gesture`对象,我们可以使用`GestureLibrary`和`GestureDetector`进行手势的识别和比较。`GestureLibrary`用于存储预定义的手势,而`...
在安卓(Android)平台上,用户自定义手势识别是一项高级功能,允许用户通过特定的手势来触发应用程序或系统级别的操作,从而提升操作效率和个性化体验。本文将深入探讨这一技术,包括其工作原理、实现方式以及如何...
首先,Android的手势识别主要依赖于`GestureDetector`和`ScaleGestureDetector`这两个内置类。`GestureDetector`用于处理基本的单指和双指触摸事件,如单击、长按、滑动等。而`ScaleGestureDetector`则专门处理双指...
本篇文章将深入探讨Android触屏手势识别的相关知识点,并基于`GestureTest`这个项目实例进行讲解。 一、Android 触摸事件处理 Android系统通过`MotionEvent`类来处理触摸屏幕产生的各种事件。常见的事件类型包括...
例如,在 Android 1.x 版本中,可以使用 CupcakeDetector 类来实现手势识别,而在 Android 2.x 版本中,可以使用 EclairDetector 或 FroyoDetector 类来实现手势识别。 VersionedGestureDetector 类提供了一个 new...
"AndroidStudio 手势识别" AndroidStudio 手势识别是 AndroidStudio 中的一项功能,允许开发者在应用程序中识别用户的手势。手势识别是一个复杂的过程,需要使用机器学习和模式识别技术来实现。通过手势识别,...
本篇将深入探讨"Android应用源码之(触屏手势识别)"的相关知识点,帮助开发者了解如何在自己的项目中实现高效、精确的手势检测。 首先,Android系统提供了`GestureDetector`类来处理基本的手势识别,如单击、双击、...
手势识别与UI设计紧密相关,比如滑动手势通常用于切换歌曲,轻击用于播放/暂停等。 5. **版本控制**:提供的两个压缩文件名包含了Git的提交哈希(如`847ba33`和`6cd07fb`),表明项目使用了Git进行版本控制。Git...
本篇将详细讲解如何实现这些限制,并探讨手势识别在Android中的应用。 一、EditText输入限制 1. 字符长度限制:可以使用`setMaxLength()`方法设置`EditText`能接受的最大字符数。例如,如果只允许输入10个字符,...
在Android开发中,手势识别是用户交互的重要组成部分,它允许用户通过特定的手势来执行相应的操作,提升用户体验。本文将详细介绍如何使用Android API中的GestureOverlayView、GestureDetector和...
安卓 android 复杂 手势识别,不是左右滑动,而是识别复杂的手势,像es管理器 用户自定义手势识别:http://download.csdn.net/detail/u013506037/7898755 我的博客首页...