Android手势识别
2015-08-22 20:47
423 查看
GestureDetector —— 手势识别类
sdk源代码:
SimpleOnGestureListener
点击一下非常快的(不滑动)Touchup:
onDown->onSingleTapUp->onSingleTapConfirmed
点击一下稍微慢点的(不滑动)Touchup:
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
部分示例代码:
使用GestureDetector需要在View中重写onTouchEvent事件。
sdk源代码:
public class GestureDetector { public interface OnGestureListener { boolean onDown(MotionEvent e); void onShowPress(MotionEvent e); boolean onSingleTapUp(MotionEvent e); boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY); void onLongPress(MotionEvent e); boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY); } public interface OnDoubleTapListener { boolean onSingleTapConfirmed(MotionEvent e); boolean onDoubleTap(MotionEvent e); boolean onDoubleTapEvent(MotionEvent e); }
SimpleOnGestureListener
/** * A convenience class to extend when you only want to listen for a subset * of all the gestures. This implements all methods in the * {@link OnGestureListener} and {@link OnDoubleTapListener} but does * nothing and return {@code false} for all applicable methods. */ //touch down后又没有滑动(onScroll),又没有长按(onLongPress),然后Touchup时触发 public boolean onSingleTapUp(MotionEvent e) { return false; } public void onLongPress(MotionEvent e) { } public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } //Touch了滑动一点距离后,up时触发 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } //Touch了还没有滑动时触发 public void onShowPress(MotionEvent e) { } //Touch down时触发 public boolean onDown(MotionEvent e) { return false; } //双击的第二下Touch down时触发 public boolean onDoubleTap(MotionEvent e) { return false; } //双击的第二下Touch down和up都会触发,可用e.getAction()区分。 public boolean onDoubleTapEvent(MotionEvent e) { return false; } //touch down后又没有滑动(onScroll),又没有长按(onLongPress),然后Touchup时触发 public boolean onSingleTapConfirmed(MotionEvent e) { return false; } }
点击一下非常快的(不滑动)Touchup:
onDown->onSingleTapUp->onSingleTapConfirmed
点击一下稍微慢点的(不滑动)Touchup:
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
部分示例代码:
GestureDetector detector new GestureDetector(this, new SimpleOnGestureListener() { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if(Math.abs(e2.getRawY() - e1.getRawY()) > 100) { return true; } if(e2.getRawX() - e1.getRawX() > 200) { //显示上一个页面,从左往右滑动 showLast(); return true; } if(e1.getRawX() - e2.getRawX() > 200) { //显示下一个页面,从右往左滑动 showNext(); return true; } return super.onFling(e1, e2, velocityX, velocityY); } });
使用GestureDetector需要在View中重写onTouchEvent事件。
@Override public boolean onTouchEvent(MotionEvent event) { detector.onTouchEvent(event); return super.onTouchEvent(event); }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories