手势识别
2016-06-10 17:13
274 查看
基本原理:
通过为控件设置监听器,获取到控件的MotionEvent,然后交给GestureDetector处理,而GestureDetector实例化的时候必须传入一个监听器以在必要的时候可以回掉其中的方法
![](http://img.blog.csdn.net/20160610170553309?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160610170612762?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
而安卓系统已经有类SimpleOnGestureListener实现了上述的两个接口,我们只需要继承这个类重写响音的方法就可以了。
Eg:
// 实例化手势识别器,传入监听器
detector = new GestureDetector(new yang());
// 为图片设置监听器,捕获事件
image.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent e) {
// 把捕获到的事件交给手势识别器类处理
detector.onTouchEvent(e);
return true;
}
});
}
private class yang extends SimpleOnGestureListener {
// 此类的内部已经对事件进行了相应的分析了,
// 我们只需要重写相应的方法,供发生这个事件的时候回掉就可以了
@Override
public boolean onFling(MotionEvent e_down, MotionEvent e_up,
float velocityX, float velocityY) {
if (e_down.getX() - e_up.getX() > 30) {
System.out.println("从右边向左边滑动了");
} else if (e_up.getX() - e_down.getX() > 30) {
System.out.println("从做想右边边滑动了");
}
return super.onFling(e_down, e_up, velocityX, velocityY);
}
}
通过为控件设置监听器,获取到控件的MotionEvent,然后交给GestureDetector处理,而GestureDetector实例化的时候必须传入一个监听器以在必要的时候可以回掉其中的方法
而安卓系统已经有类SimpleOnGestureListener实现了上述的两个接口,我们只需要继承这个类重写响音的方法就可以了。
Eg:
// 实例化手势识别器,传入监听器
detector = new GestureDetector(new yang());
// 为图片设置监听器,捕获事件
image.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent e) {
// 把捕获到的事件交给手势识别器类处理
detector.onTouchEvent(e);
return true;
}
});
}
private class yang extends SimpleOnGestureListener {
// 此类的内部已经对事件进行了相应的分析了,
// 我们只需要重写相应的方法,供发生这个事件的时候回掉就可以了
@Override
public boolean onFling(MotionEvent e_down, MotionEvent e_up,
float velocityX, float velocityY) {
if (e_down.getX() - e_up.getX() > 30) {
System.out.println("从右边向左边滑动了");
} else if (e_up.getX() - e_down.getX() > 30) {
System.out.println("从做想右边边滑动了");
}
return super.onFling(e_down, e_up, velocityX, velocityY);
}
}
相关文章推荐
- 面向对象--封装
- Androidstuido编译加速
- 键盘事件keydown、keypress、keyup随笔整理总结(摘抄)
- java局部内部类与方法里final变量的关系
- webService学习6:解析组件 's:schema' 时出错。在该组件中检测到 's:schem
- IMF 检查虚拟机swap内存,清理及spark程序重新调整
- Grids
- HTML5中canvas画图之绘制路径
- 创建oracle数据库
- Maven如何手动添加依赖的jar文件到本地Maven仓库
- IOS UITableView删除增加操作
- 二叉树的销毁(O(1)空间复杂度)
- js中bind、call、apply函数的用法
- 个人完成案列之乐学成语(显示主界面)
- C++ Primer学习笔记(一)
- udp包头解析
- 1. 打印100~200 之间的素数 2. 输出乘法口诀表 3. 判断1000年---2000年之间的闰年
- 【LeetCode】-- 260. Single Number III
- 查看LINUX进程内存占用情况
- 35个非主流开源数据库 你知道吗?