以前只知道控件的onTouchEvent()事件,它的动作有MotionEvent.ACTION_DOWN、MotionEvent.ACTION_MOVE、MotionEvent.ACTION_UP;今天有个需求,要监听控件的双击、拖动、滑动等事件,这时onTouchEvent()很明显不能满足我们的需求,经多方打听,找到了今天的主角GestureDetector,下面就对它进行简单的学习。

构造方法:
已过时的有2个,不推荐使用。
GestureDetector(GestureDetector.onGestureListener listener);
GestureDetector(GestureDetector.onGestureListener listener,Handler handler);
推荐使用。
GestureDeterctor(Context context,GestureDetector.onGestureListener listener);
GestureDeterctor(Context context,GestureDetector.onGestureListener listener,Handler handler);
GestureDeterctor(Context context,GestureDetector.onGestureListener listener,Handler handler,boolean unused);
参数handler主要用来执行延时操作时使用,参数unused暂时没有使用。
从构成函数可以看出,当我们需要创建一个GestureDetector对象时,必须给它传一个GestureDetector.onGestureListener对象,查看API之后,发现它是个接口(interface),创建GestureDetector.onGestureListener的对象时,必须实现一下几个方法:
1、onDown(MotionEvent e);
当用户按下时的回调。
2、onFling(MotionEvent e1,MontionEvent e2,float velocityX,float velocityY);
当用户快速拖动,并离开屏幕时,控件还在滑动的回调。
3、onLongPress(MotionEvent e);
当用户长按控件时的回调。
4、onScroll(MotionEvent e1,MotionEvent e2,float distanceX,float distanceY);
当用户拖着控件(控件本身并没有动)滑动时的回调。
5、onShowPress(MotionEvent e);
当用户按下,还没有执行移动或者抬起的动作的回调。
6、onSingleTapUp(MotionEvent e);
用户按下,立即抬起,没有做其它动作时的回调。
有了这个监听之后,我们还可以给GestureDetector设置双击监听,使用的方法是:
mGestureDetector.setOnDoubleTapListener(GestureDetector.OnDoubleTapListener onDoubleListener);
参数是双击监听的对象,GestureDetector.OnDoubleTapListener它也是一个接口(interface),创建它的对象时,也必须实现以下几个方法。
1、onDoubleTap(MotionEvent e);
当用户双击时回调。
2、onDoubleTapEvent(MotionEvent e);
双击间隔事件的回调。
3、onSingleTapConfirmed(MotionEvent e);
当用户单击时回调。
上面的两个监听,回调函数都是必须实现,有时候我们不需要监听所有的事件,只对自己感兴趣的事件进行监听,GestureDetector有个内部类帮我们实现此功能GestureDetector.SimpleOnGestureListener,该类实现了GestureDetector.onGestureListener、GestureDetector.onDoubleTapListener、GestureDetector.onContextClickListener这三个接口,并实现了它们的方法,只不过是空实现,在我们需要这三个接口的时候,我们可以创建GestureDetector.SimpleOnGestureListener对象,然后需要监听哪个事件,我们就重写它的哪个方法,下面我把它的所有方法都实现了,其实和上边两个接口实现的方法是一样。
GestureDetector.SimpleOnGestureListener mGestureDetector = new SimpleOnGestureListener(){
@Override
public boolean onSingleTapUp(MotionEvent e) {
return super.onSingleTapUp(e);
}
@Override
public void onLongPress(MotionEvent e) {
super.onLongPress(e);
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
return super.onScroll(e1, e2, distanceX, distanceY);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
return super.onFling(e1, e2, velocityX, velocityY);
}
@Override
public void onShowPress(MotionEvent e) {
super.onShowPress(e);
}
@Override
public boolean onDown(MotionEvent e) {
return super.onDown(e);
}
@Override
public boolean onDoubleTap(MotionEvent e) {
return super.onDoubleTap(e);
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
return super.onDoubleTapEvent(e);
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
return super.onSingleTapConfirmed(e);
}
};
只有理论没有实践,怎么行呢?这里我也写了一个Demo,这个Demo是我从另一篇博客中抄的,文章的内容也是参考他的博客写的,下面会把大神的那篇博客地址贴出来。
参考资料:Android GestureDetector用户手势检测实例讲解
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android手势识别器GestureDetector
# Android手势识别器
# Android手势识别
# Android GestureDetector用户手势检测实例讲解
# android使用gesturedetector手势识别示例分享
# Android GestureDetector手势滑动使用实例讲解
# Android自定义viewgroup可滚动布局 GestureDetector手势监听(5)
# Android自定义GestureDetector实现手势ImageView
# Android GestureDetector实现手势滑动效果
# Android编程使用GestureDetector实现简单手势监听与处理的方法
# Android触摸及手势操作GestureDetector
# Android使用手势监听器GestureDetector遇到的不响应问题
# Android如何使用GestureDetector进行手势检测详解
# 回调
# 双击
# 按下
# 几个
# 有个
# 推荐使用
# 实现了
# 拖动
# 这三个
# 都是
# 是一个
# 我也
# 是个
# 还没有
# 还可以
# 还在
# 不需要
# 我把
# 感兴趣
# 我们可以
相关文章:
Android自定义控件实现温度旋转按钮效果
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
小建面朝正北,A点实际方位是否存在偏差?
如何规划企业建站流程的关键步骤?
如何在Ubuntu系统下快速搭建WordPress个人网站?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
制作网站的基本流程,设计网站的软件是什么?
建站之星24小时客服电话如何获取?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
临沂网站制作公司有哪些,临沂第四中学官网?
如何在IIS中配置站点IP、端口及主机头?
广州商城建站系统开发成本与周期如何控制?
如何通过多用户协作模板快速搭建高效企业网站?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
网站制作新手教程,新手建设一个网站需要注意些什么?
建站之星安装模板失败:服务器环境不兼容?
北京企业网站设计制作公司,北京铁路集团官方网站?
如何快速搭建个人网站并优化SEO?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
如何通过可视化优化提升建站效果?
建站之星如何开启自定义404页面避免用户流失?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
网站代码制作软件有哪些,如何生成自己网站的代码?
如何用PHP工具快速搭建高效网站?
如何在万网开始建站?分步指南解析
如何快速生成可下载的建站源码工具?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
如何快速上传自定义模板至建站之星?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
如何实现建站之星域名转发设置?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
如何在服务器上三步完成建站并提升流量?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
如何快速搭建高效可靠的建站解决方案?
,制作一个手机app网站要多少钱?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
建站之星多图banner生成与模板自定义指南
建站之星IIS配置教程:代码生成技巧与站点搭建指南
如何在云虚拟主机上快速搭建个人网站?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
济南网站制作的价格,历城一职专官方网站?
建站主机核心功能解析:服务器选择与网站搭建流程指南
如何快速建站并高效导出源代码?
建站之星后台管理:高效配置与模板优化提升用户体验
香港服务器如何优化才能显著提升网站加载速度?
建站之星如何实现五合一智能建站与营销推广?
网站图片在线制作软件,怎么在图片上做链接?
C++时间戳转换成日期时间的步骤和示例代码
*请认真填写需求信息,我们会在24小时内与您取得联系。