当前位置: 首页 > news >正文

一起做网店类型的网站网站建设seo优化培训

一起做网店类型的网站,网站建设seo优化培训,专业网站开发技术,做医疗的网站建设文章目录 一、事件传递路径二、触摸事件的三个关键方法2.1 dispatchTouchEvent(MotionEvent ev)2.2 onInterceptTouchEvent(MotionEvent ev)2.3 onTouchEvent(MotionEvent event) 三、ViewGroup中的dispatchTouchEvent实现四、总结 在Android系统中,触摸事件的分发和…

文章目录

  • 一、事件传递路径
  • 二、触摸事件的三个关键方法
    • 2.1 dispatchTouchEvent(MotionEvent ev)
    • 2.2 onInterceptTouchEvent(MotionEvent ev)
    • 2.3 onTouchEvent(MotionEvent event)
  • 三、ViewGroup中的dispatchTouchEvent实现
  • 四、总结

在Android系统中,触摸事件的分发和处理是一个非常重要的部分。了解触摸事件的分发机制对于我们进行界面交互设计和优化具有重要意义。本文将详细介绍Android下的Touch事件分发机制,包括事件分发的过程、涉及的方法以及ViewGroup中事件分发的实现。

一、事件传递路径

触摸事件的传递路径是从Activity到Window,再到View。具体来说,当一个触摸事件产生时,首先会传递给Activity的dispatchTouchEvent方法,然后由Activity将事件传递给Window,最后由Window将事件传递给顶层的View。在View层级结构中,事件会从上到下(父View到子View)进行传递,直到有一个View能够处理这个事件为止。

二、触摸事件的三个关键方法

在Android系统中,触摸事件的分发过程涉及到三个重要的方法:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent ev)和onTouchEvent(MotionEvent ev)。下面我们分别来看一下这三个方法在ViewGroup和Activity中的作用。

2.1 dispatchTouchEvent(MotionEvent ev)

此方法用来分发事件。如果当前事件能传递到该View,该方法一定会被调用。当Touch事件发生时,Activity的dispatchTouchEvent(MotionEvent ev)方法会以隧道方式将事件传递给最外层View的dispatchTouchEvent(MotionEvent ev)方法,并由该View的dispatchTouchEvent(MotionEvent ev)方法对事件进行分发。

2.2 onInterceptTouchEvent(MotionEvent ev)

此方法用来拦截事件。如果返回值为true,表示拦截,否则不拦截。在外层View的dispatchTouchEvent(MotionEvent ev)方法返回系统默认的super.dispatchTouchEvent(ev)情况下,事件会自动的分发给当前View的onInterceptTouchEvent方法。

2.3 onTouchEvent(MotionEvent event)

此方法用于处理当前事件。如果返回值为true表示消耗该事件,否则无法再接收同一个序列的事件。如果dispatchTouchEvent方法return false,事件会以冒泡方式返回给上层的onTouchEvent进行消费。

三、ViewGroup中的dispatchTouchEvent实现

在Android系统中,ViewGroup对dispatchTouchEvent方法进行了重载,以实现更复杂的事件分发逻辑。以下是一些关键的代码片段:

public boolean dispatchTouchEvent(MotionEvent ev) {boolean handled = false;// 调用onInterceptTouchEvent方法来判断是否需要拦截当前的触摸事件if (onInterceptTouchEvent(ev)) {// 如果需要拦截,就会将事件的动作设置为ACTION_CANCEL,并清除所有的触摸目标。ev.setAction(MotionEvent.ACTION_CANCEL);if (mFirstTouchTarget != null) {removePointersFromTouchTargets(0);}handled = true;} else {// 如果没有触摸目标,就会调用onTouchEvent方法来处理事件if (mFirstTouchTarget == null) {handled = onTouchEvent(ev);} else {// 如果有触摸目标,就会遍历所有的触摸目标,调用dispatchTransformedTouchEvent方法来分发事件。TouchTarget target = mFirstTouchTarget;while (target != null) {TouchTarget next = target.next;if (dispatchTransformedTouchEvent(ev, false, target.child, target.pointerIdBits)) {handled = true;}target = next;}}}return handled;
}

首先,onInterceptTouchEvent方法被调用,用于判断当前ViewGroup是否要拦截这个触摸事件。如果onInterceptTouchEvent返回true,那么这个触摸事件将会被拦截,不再向下传递,同时触摸事件的action将会被设置为ACTION_CANCEL,表示这个触摸事件被取消。

然后,如果没有拦截触摸事件,那么会检查是否有触摸目标(mFirstTouchTarget)。如果没有触摸目标,那么会直接调用onTouchEvent方法来处理这个触摸事件。如果有触摸目标,那么会遍历所有的触摸目标,并调用dispatchTransformedTouchEvent方法来分发触摸事件。这个过程会一直进行,直到找到能够处理这个触摸事件的View为止。

总的来说,ViewGroup的dispatchTouchEvent方法通过调用onInterceptTouchEvent和onTouchEvent方法,实现了触摸事件的拦截和处理。这个过程涉及到了事件的分发、拦截和消费,是理解Android触摸事件分发机制的关键。

四、总结

通过本文的介绍,我们了解了Android下的Touch事件分发机制,包括事件分发的过程、涉及的方法以及ViewGroup中事件分发的实现。掌握这些知识点,可以帮助我们更好地进行事件处理和控件开发,提高应用的用户体验。

http://www.yidumall.com/news/96983.html

相关文章:

  • 织梦整形医院网站开发百度下载
  • 暖色调网站欣赏google开户
  • 用dw个人网站怎么做那个推广平台好用
  • 网站优化推广平台查询网 域名查询
  • 做冷饮的网站网站seo优化方案
  • 福州做商城网站公司寻找客户的渠道和方法
  • 互联网做网站seo自学
  • 成都门户网站建设seo需要培训才能找到工作吗
  • 网站建设算什么专业长沙网络推广哪家
  • 阿里巴巴免费做网站吗淘宝摄影培训推荐
  • 网站需要怎么做才能被百度收录营销网站建设创意
  • 横向滚动的网站网页模板怎么用
  • 宁波网站建设设计公司信息深圳百度推广优化
  • 如何将公司网站做的更好看湘潭网站设计外包服务
  • 可以做微积分的网站网络推广方案怎么写
  • php网站后台页面北京搜索关键词优化
  • 网站升级的内容包括哪些日本站外推广网站
  • 下载软件的网站北京百度推广官网首页
  • 一站式服务广告语河南省郑州市金水区
  • 婚恋网站怎么做网络宣传渠道
  • 南京网站建设推广好的竞价推广外包公司
  • 海外网站有哪些seo数据监控平台
  • 网站建设需求分析范例西安seo外包优化
  • 做旅游网站当地人服务赚钱吗微信seo
  • 福建网站建设杭州网站
  • 企业网站托管电话游戏推广公司怎么接游戏的
  • 中央广播电视总台是哪个台湖南靠谱的关键词优化哪家好
  • ps做网页怎么在网站上打开英文外链平台
  • 怎么把做的网页放网站站长素材
  • 怎么建设网站是什么泉州seo网站排名