转自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;
}
}
分享到:
相关推荐
利用Android开发中的JNI接口,导入OpenCV库进行手势识别,所使用的图片全部从Android的camera中进行采集,手势需要带上红手套,程序识别红色的方块物体,能够识别出1,2,3。。。的数字。
android 手势识别 demo
android对自己创建出来的手势库进行识别,初学者适用
Android触摸屏手势识别,Android触摸屏手势识别,Android触摸屏手势识别
android 手势识别学习 更多,更详细的内容去我的博客喔 51cto ma_haile
Android的一款手势识别软件 可运行 有注释 简单易懂
安卓 android 复杂 手势识别,不是左右滑动,而是识别复杂的手势,像es管理器 用户自定义手势识别:http://download.csdn.net/detail/u013506037/7898755 我的博客首页...
android触屏手势识别
本源码是为本博客文章:ANDROID手势识别详解的代码参考,只是当你对读文章是看代码不怎么好看或者想对比运行效果的话,就下载去自己再慢慢研究吧....有问题请留言
针对EditText输入限制的测试,及对手势识别的测试,要具体使用哪个手势,下次可以直接调用了
android手势识别两个对勾手势 OnGestureListener手势识别 可用于加载手势库
Android 播放器 手势识别 音乐 画面很漂亮
安卓 android 用户自定义手势 手势识别, 资源是下载别人的,版权归原作者所有
实现手势识别,有源码,有效果可看。 自己之前不明白,在学习过程中,逐渐弄清楚的,也就是在写这些源码的过程中逐渐弄清楚的。这些源码都是学习的过程,希望对你们有帮助。
Android输入法手势识别例子代码,android.gesture这个类在api-4(SDK1.6)才开始支持的!默认存到SD卡中,所以别忘记在AndroidMainfest.xml加上SD卡读写权限!测试时请您在紧凑的时间内用两笔划来完成一个手势! ...
简述Android触摸屏手势识别,关于android程序对于手势的识别
Android手势识别实现:普通手势识别:上下左右 ;自定义手势识别 ; 文章学习地址:http://blog.csdn.net/lablenet/article/details/48098017 的下篇
Android基于卷积神经网络的数字手势识别安卓APP,识别数字手势0-10 Android studio编译,项目有源码和apk,参考链接:https://blog.csdn.net/babyai996/article/details/121196044