全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android手势识别器GestureDetector使用详解

以前只知道控件的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进行手势检测详解  # 回调  # 双击  # 按下  # 几个  # 有个  # 推荐使用  # 实现了  # 拖动  # 这三个  # 都是  # 是一个  # 我也  # 是个  # 还没有  # 还可以  # 还在  # 不需要  # 我把  # 感兴趣  # 我们可以 


相关文章: 海南网站制作公司有哪些,海口网是哪家的?  建站上传速度慢?如何优化加速网站加载效率?  韩国服务器如何优化跨境访问实现高效连接?  建站之星后台管理如何实现高效配置?  如何通过多用户协作模板快速搭建高效企业网站?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  已有域名如何免费搭建网站?  Swift开发中switch语句值绑定模式  建站之星如何快速解决建站难题?  实例解析angularjs的filter过滤器  如何通过二级域名建站提升品牌影响力?  个人摄影网站制作流程,摄影爱好者都去什么网站?  宝塔面板创建网站无法访问?如何快速排查修复?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  微信小程序制作网站有哪些,微信小程序需要做网站吗?  Python文件管理规范_工程实践说明【指导】  如何通过万网虚拟主机快速搭建网站?  如何在Ubuntu系统下快速搭建WordPress个人网站?  网站企业制作流程,用什么语言做企业网站比较好?  在线制作视频的网站有哪些,电脑如何制作视频短片?  外贸公司网站制作哪家好,maersk船公司官网?  如何在宝塔面板中创建新站点?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  子杰智能建站系统|零代码开发与AI生成SEO优化指南  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  详解jQuery中基本的动画方法  头像制作网站在线制作软件,dw网页背景图像怎么设置?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  大连网站制作公司哪家好一点,大连买房网站哪个好?  如何快速搭建安全的FTP站点?  如何打造高效商业网站?建站目的决定转化率  制作旅游网站html,怎样注册旅游网站?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  建站之星如何快速生成多端适配网站?  高端建站如何打造兼具美学与转化的品牌官网?  设计网站制作公司有哪些,制作网页教程?  清除minerd进程的简单方法  建站主机功能解析:服务器选择与快速搭建指南  兔展官网 在线制作,怎样制作微信请帖?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  建站之星logo尺寸如何设置最合适?  宝塔建站助手安装配置与建站模板使用全流程解析  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  如何设计高效校园网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。