首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在处理ViewGroup中的事件时,您能确定哪个子视图被触摸了吗?

在处理ViewGroup中的事件时,可以通过以下方法确定哪个子视图被触摸了:

  1. 通过设置子视图的点击事件监听器(OnClickListener)来确定哪个子视图被点击了。当用户点击某个子视图时,点击事件会被触发,通过监听器中的回调方法可以获取到被点击的子视图对象。
  2. 通过设置子视图的触摸事件监听器(OnTouchListener)来确定哪个子视图被触摸了。当用户触摸某个子视图时,触摸事件会被触发,通过监听器中的回调方法可以获取到触摸事件的详细信息,包括被触摸的子视图对象。
  3. 通过遍历所有子视图,判断触摸事件的坐标是否在子视图的范围内来确定哪个子视图被触摸了。可以通过触摸事件的坐标(getX()和getY()方法)与子视图的位置和大小进行比较,如果触摸事件的坐标在子视图的范围内,则可以确定该子视图被触摸了。

以上是确定哪个子视图被触摸的一些常用方法,具体使用哪种方法取决于开发者的需求和场景。在实际开发中,可以根据具体情况选择最适合的方法来处理ViewGroup中的事件。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

手把手教你读懂源码,ViewTouch事件传递流程详细剖析

ViewonFilterTouchEventForSecurity方法 如果其他窗口遮挡,该方法返回false,表示需要过滤触摸事件,就会跳过dispatchTouchEvent方法if...onInterceptTouchEvent方法 该方法是ViewGroup特有的方法,用于表示是否拦截触摸事件。...当我们ViewGroup重写该方法返回为true执行事件拦截逻辑时候,可以子View通过调用requestDisallowInterceptTouchEvent方法,重新设置父ViewGroup...如点击地方有两个子View都包含点击事件坐标,那么后添加到布局个子view会先响应事件,即点击时候最上层那个组件先去响应该事件。...Android事件分发机制简图 如果子View之前处理某个事件,但是后续ViewGroup拦截,那么子View会接收到ACTION_CANCEL。

80270

可能是讲解Android事件分发最好文章

我就遇到过这样时候,当时我很想有一篇文章能简单地解释触摸事件是怎样视图层次(view hierarchy)传播,从而可以将之作为进一步深入学习起点。...当我们说到“手势剩余部分”指的是手势后续MOVE事件和最后UP或CANCEL事件。 在这里我也不考虑多点触摸手势(我们只假设用一个手指)并且忽略多个MOVE事件可以归为一组这一实际情况。...我们将要讨论视图层次是这样:最外层是一个ViewGroup A,包含一个或多个子view(children),其中一个子view是ViewGroup B,ViewGroupB又包含一个或多个子view...刚才处理事件”部分,我们遗漏了这一过程,现在,让我们把它加上: DOWN事件传给AonInterceptTouchEvent,该方法返回false,表示它不想拦截。...假如DOWN事件传给ConTouchEvent方法,它返回了false,DOWN事件会继续向上传递给B和AonTouchEvent,即使它们onInterceptTouchEvent方法说它们不想拦截这个

61120
  • Android事件分发机制详解

    一个手势(gesture)是一个事件列,以一个DOWN事件开始(当用户触摸屏幕产生),后跟0个或多个MOVE事件(当用户四处移动手指产生),最后跟一个单独UP或CANCEL事件(当用户手指离开屏幕或者系统告诉你手势...当我们说到“手势剩余部分”指的是手势后续MOVE事件和最后UP或CANCEL事件。 在这里我也不考虑多点触摸手势(我们只假设用一个手指)并且忽略多个MOVE事件可以归为一组这一实际情况。...我们将要讨论视图层次是这样:最外层是一个ViewGroup A,包含一个或多个子view(children),其中一个子view是ViewGroup B,ViewGroupB又包含一个或多个子view...刚才处理事件”部分,我们遗漏了这一过程,现在,让我们把它加上: DOWN事件传给AonInterceptTouchEvent,该方法返回false,表示它不想拦截。...假如DOWN事件传给ConTouchEvent方法,它返回了false,DOWN事件会继续向上传递给B和AonTouchEvent,即使它们onInterceptTouchEvent方法说它们不想拦截这个

    97231

    Android视图焦点Focus详细介绍

    触摸屏设备接收事件处理响应控件是具有焦点(Focused)控件。一个窗口中一个时间内只能有一个具有焦点控件。...早期具有滚轮设备android系统以及现在智能TV电视应用中视图焦点控制就非常重要了。...下面是几个关于焦点特性描述: ViewGroup中有一个mFocued成员来保存子视图中哪个子视图是具有焦点视图,并且这样一直会递归下去。...比如某个视图层次下视图ROOT下有A,B,C三个子视图,而B下面又有B1,B2,B3三个子视图,而这时候B3是具有焦点视图,那么BmFocued保存是B3,而ROOT下mFocued保存是...视图树加载焦点视图遍历 在窗口里视图第一次装载系统会调用ViewRootdoTraversal,这个函数内部会调用根视图requestFocus方法: if (!

    2.5K20

    Android自定义控件总结

    然后各自经历measure、layout、draw三个流程最终显示在用户面前,用户点击屏幕,点击事件随着Activity传入Window,最终由ViewGroup/View进行分发处理。...(只有自定义ViewGroup才用到),这个坐标是相对于当前视图视图而言。...view自身有一些建议权,决定权 父view手中。 调用场景:view需要给其孩子设置尺寸和位置调用。...传递),false不拦截,如果自定义viewgroup里某个子view需要自己处理事件,就需要重写改方法,让他返回false。...见下: ---- ontouch触摸事件也可以交给其他工具类去实现 1.GestureDetector(手势识别器)去处理,可以onFling里处理快速滑动事件,同时MotionEvent.ACTION_UP

    97811

    Android自定义控件总结

    然后各自经历measure、layout、draw三个流程最终显示在用户面前,用户点击屏幕,点击事件随着Activity传入Window,最终由ViewGroup/View进行分发处理。...(只有自定义ViewGroup才用到),这个坐标是相对于当前视图视图而言。...view自身有一些建议权,决定权 父view手中。  调用场景:view需要给其孩子设置尺寸和位置调用。...传递),false不拦截,如果自定义viewgroup里某个子view需要自己处理事件,就需要重写改方法,让他返回false。...见下: ---- ontouch触摸事件也可以交给其他工具类去实现 1.GestureDetector(手势识别器)去处理,可以onFling里处理快速滑动事件,同时MotionEvent.ACTION_UP

    1.3K80

    Android下Touch事件分发详解

    Android 系统触摸事件分发和处理是一个非常重要部分。了解触摸事件分发机制对于我们进行界面交互设计和优化具有重要意义。...这两种方式共同构成了 Android 事件传递完整过程,用于处理 Touch 事件视图层次结构传递和消费。...同时,这种机制也有助于提高事件处理效率,因为事件拦截或消费后,事件将不再继续传递或回传,从而减少了不必要计算开销。 3.2 时序图 时序图描述了 Touch 事件视图层次结构传递过程。...实际应用,开发者可以根据需要重写这些方法,实现自定义事件传递和处理逻辑。...四、ViewGroup dispatchTouchEvent 实现 Android 系统ViewGroup 对 dispatchTouchEvent 方法进行了重载,以实现更复杂事件分发逻辑

    16110

    Android触摸事件派发机制详解与源码分析二(ViewGroup篇)「建议收藏」

    3 Android 5.1.1(API 22) ViewGroup触摸事件传递源码分析 通过上面例子打印我们可以确定分析源码顺序,那就开始分析呗。...;假如点击地方有两个子View都包含点击坐标,那么后添加到布局个子view会先响应事件;这样其实也是符合人思维方式,因为后添加子view会浮在上层,所以我们去点击时候一般都会希望点击最上层那个组件先去响应事件...,进一步决定了ViewGroup是否处理Touch事件,这一点160行开始代码中有体现。...那我们分情况继续分析一下: 当161行if判断mFirstTouchTarget为null,也就是说Touch事件未被消费,即没有找到能够消费touch事件子组件或Touch事件拦截了,则调用ViewGroup...关于他们事件派发来可以继续进阶阅读下一篇《Android触摸事件派发机制详解与源码分析三(Activity篇)》 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    35120

    重新复习Android View事件分发

    ContentView 触摸事件类型 触摸事件对应是MotionEvent类,事件类型主要有如下三种: ACTION_DOWN ACTION_MOVE(移动距离超过一定阈值会被判定为ACTION_MOVE...消费(onTouchEvent):方法返回值为true表示当前视图可以处理对应事件;返回值为false表示当前视图处理这个事件,它会被传递给父视图onTouchEvent方法进行处理。...注意:Android系统,拥有事件传递处理能力类有以下三种。 Activity:拥有分发和消费两个方法。 ViewGroup:拥有分发、拦截和消费三个方法。...Activity对点击事件分发过程 我们对触摸屏进行操作,Linux就会收到相应硬件中断,然后将中断加工成原始输入事件并写入相应设备节点中。...,ViewGroup拦截,mFirstTouchTarget则为null。

    34220

    Android触摸事件机制

    什么是触摸事件 顾名思义,就是触摸手机屏幕后产生事件。这时候请你拿出手机,点击屏幕某个按钮(不要松手),移动一段距离,松手。...分析可知: 触摸事件ev类收到点击ACTION,会回调onUserInteraction方法,一般项目中我们把一些需要用户开始触摸就需要执行任务代码放在这里。...接下来触摸事件ev会传递给Activity窗口绑定视图rootView(View/ViewGroup),如果根视图也有子视图事件ev会一级一级分发下去,如果在这个过程ev消耗了,事件就此结束分发...从中我们看出触摸事件ev会按照子View加入ViewGroup先后顺序相反顺序,依次有机会去消费此触摸事件ev,即最后加入最先有机会消费此触摸事件(消费前提是,触摸点在这个子View视图范围之内...,继续下一步流程; onTouchEvent() 返回true表示事件处理了,不用传递给上一级视图; 返回false表示事件交给上一级视图处理; 初始情况下他们默认返回值都为false。

    71730

    Android高频面试专题 - 提升篇(三)事件分发机制

    1、事件分发机制分发是什么 当用户点击屏幕里View或者ViewGroup时候,将会产生一个事件对象,这个事件对象就是MotionEvent对象,这个对象记录了事件类型,触摸位置,以及触摸时间等...MotionEvent里面定义了事件类型,其实很容易理解,因为用户可以屏幕触摸,滑动,离开屏幕动作,分别对应: MotionEvent.ACTION_DOWN:用户触摸View&ViewGroup。...请看下面的图你就懂更彻底了: ? 2、ACTION_CANCEL什么时候触发 如果某一个子View处理了Down事件,那么随之而来Move和Up事件也会交给它处理。...>onTouchEvent>onclick 7、事件分发3个方法返回值作用 dispatchTouchEvent:方法返回值为true表示事件当前视图消费掉;返回为super.dispatchTouchEvent...onTouchEvent:方法返回值为true表示当前视图可以处理对应事件;返回值为false表示当前视图处理这个事件,它会被传递给父视图onTouchEvent方法进行处理

    2.3K42

    View·dispatchTouchEvent 源码分析(四)

    上节概述 从上节View·dispatchTouchEvent 源码分析(三),我们分析了 ACTION_DOWN 事件派发和拦截过程。 接下去,我们分析后续事件是怎么处理!...所以关注下ViewGroupdispatchTouchEvent()方法。因为 ACTION_DOWN事件已经在前一章处理过了,所以我们跳过对ACTION_DOWN事件处理代码片段。...,执行事件派发 // 【代码贴在第8小节里面】 } } 8、之前DecorView实例处理ACTION_DOWN事件,mFirstTouchTarget...所以mFirstTouchTarget代表当前获取焦点视图(或代码拦截视图),作为事件处理源头开始执行回朔操作。...ACTION_DOWN事件派发 10、确定了3、2、1这条链之后,第8点就能直接对这条链进行事件派发,派发顺序是3、2、1。 ?

    46420

    ViewGroup源码解读

    判断是否拦截后,我们发现他还执行了一句话ev.setAction(action) 官方说明是恢复操作,防止更改。 事件处理 接下来就是检查事件是否取消咯。...如果没有取消并且没有拦截就执行正常事件处理。 如果事件是针对可访问性焦点视图,我们将其提供给具有可访问性焦点视图。如果它不处理它,我们清除该标志并像往常一样将事件分派给所有的 ChildView。...就是如果A和B有重叠部分,并且BA上面,那么他处理便是B事件了。而不处理A事件。 如果子View可以接受事件,那么我们就给他一个触摸标识。...然后得到是执行自身事件还是child事件。 总结 1.ViewGroup包涵多个子view时候,我们是从后遍历,判断当前view是否可以点击,然后分发给需要处理子view。...2.我们可以onInterceptTouchEvent中进行事件拦截。 3.我们可以发现ViewGroup没有onTouchEvent事件,说明他处理逻辑和View是一样

    82380

    事件分发主要过程

    触摸事件由Action_Down、Action_Move、Aciton_UP组成,其中一次完整触摸事件,Down和Up都只有一个,Move有若干个,可以为0个。...分发目的是为了找到真正要处理本次完整触摸事件View,这个View会在onTouchuEvent结果返回true。...当某个子View返回true,会中止Down事件分发,同时ViewGroup记录该子View。接下去Move和Up事件将由该子View直接进行处理。...由于子View是保存在ViewGroup,多层ViewGroup节点结构,上级ViewGroup保存会是真实处理事件View所在ViewGroup对象:如ViewGroup0-ViewGroup1...-TextView结构,TextView返回了true,它将被保存在ViewGroup1,而ViewGroup1也会返回true,保存在ViewGroup0

    41120

    Android事件分发机制源码解析

    预备知识 MotionEvent Android设备触摸事件主要包括点按、长按、拖拽、滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作等。...); } } 所以我们处理某些滑动冲突场景,可以从子View调用父ViewrequestDisallowInterceptTouchEvent方法,阻止父View拦截事件。...等),且传递ACTION_DOWN事件过程没有找到目标子View事件将会直接拦截,交给ViewGroup自己处理。...2.将事件依次分发给子View,若事件某个View消费了,将不再继续分发; 3.如果2没有子View对事件进行消费或者子View数量为零,事件将由ViewGroup自己处理处理流程和View处理流程一致...若事件自上而下传递过程中一直没有消费,而且最底层子View也没有对其进行消费,事件会反向向上传递,此时,父ViewGroup可以对事件进行消费,若仍然没有消费的话,最后会回到Activity

    76330

    Android触摸事件传递机制

    前言:Android开发,经常会遇到触摸事件冲突,比如ViewPager轮播图跟Fragment划动事件冲突,或者轮播图跟下拉事件冲突,自定义view事件处理等,本文章将会详细介绍Activity...二.触摸事件传递阶段 1.分发(Dispatch) Android系统中所有的触摸事件都是由 dispatchTouchEvent 方法进行分发。...该方法判断事件消费( return true ),还是继续分发给子视图处理( return super.dispatchTouchEvent ),如果当前视图ViewGroup或者其子类,则会调用...OnTouchEvent 方法判断,是消费( return true ),还是不处理( return false )并将事件传递给父视图 OnTouchEvent 方法进行处理。...),到达最内层 View ,将由 View OnTouchEvent 方法处理,该方法返回 true 进行消费不再传递,返回 false 再由内向外传递,由外层 OnTouchEvent

    1.2K10

    教你步步为营掌握自定义 View

    (本文不打算讲自定义属性和事件处理,因为太多文章讲这些了) 一、自定义View,你真的掌握了吗? 什么?你说你掌握了自定义View?...当View所在Activity进入stop状态后,View去了?如果我一个后台线程持有一个View引用,我此时能够改变它状态吗?为什么? View能够与其他View交叉重叠吗?...这样,WindowView们组织起来了,一个巨大ViewGroup(以后,我们不再用复合View这个说法,而代之以ViewGroup,二者是一回事),下面有若干ViewGroup和若干View...虽然View无法决定自己ViewGroup位置,但是开发者使用View,可以向ViewGroup表达自己所用View要放在哪里,以vertical LinearLayout为例,开发者书写布局文件...KeyEvent回调接口,是用来处理键盘事件,这与onTouchEvent用来处理触摸事件是相对

    77060
    领券