`
chroya
  • 浏览: 661555 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android中的事件模型

阅读更多

以前写 android ,对事件的处理没有太深入,只是简单的 onTouchEvent ok 了,现在写的 UI ,很多自定义组件,父 view 和子 view 都需要接收事件,然后处理。如果不弄明白它的事件传递机制,很难拥有好的用户体验。

Touchevent 中,返回值是 true ,则说明消耗掉了这个事件,返回值是 false ,则没有消耗掉,会继续传递下去,这个是最基本的。

View 中跟 Touch 相关的事件有 dispatchTouchEvent interceptTouchEvnet onTouchEvent 三种。 dispatchTouchEvent 是负责分发事件的,事件从 activity 传递出来之后,最先到达的就是最顶层 view dispatchTouchEvent ,然后它进行分发,如果返回 false ,则交给这个 view interceptTouchEvent 方法来决定是否要拦截这个事件,如果 interceptTouchEvent 返回 true ,也就是拦截掉了,则交给它的 onTouchEvent 来处理,如果 interceptTouchEvent 返回 false ,那么就传递给子 view ,由子 view dispatchTouchEvent 再来开始这个事件的分发。

如果事件传递到某一层的子 view onTouchEvent 上了,这个方法返回了 false ,那么这个事件会从这个 view 往上传递,都是 onTouchEvent 来接收。而如果传递到最上面的 onTouchEvent 也返回 false 的话,这个事件就会“消失”,而且接收不到下一次事件。(我说的一次事件指的是 down up 之间的一系列事件)

我画了个图,见附件。

总结一下,如果这一次事件没有人消耗掉,则系统不会给你下一次事件,因为他会认为你这次的事件阻塞了,没必要给下一次。onTouchEvent如果不消耗的话,会从子view传递到父view。

 

  • 大小: 36.2 KB
分享到:
评论
3 楼 liuqun_567 2011-01-27  
dispatchTouchEvent 如果返回true,则说明事件被当前view处理了。
2 楼 chroya 2010-12-02  
aa87963014 写道
请问你的联系方式吗? 我有些关于 事件机制的问题请教。

qq:115818782
1 楼 aa87963014 2010-12-02  
请问你的联系方式吗? 我有些关于 事件机制的问题请教。

相关推荐

    Android中展示Unity3D模型

    Android中展示Unity3D模型

    基于yolov9 ncnn模型部署到android源码+模型+项目说明.zip

    基于yolov9 ncnn模型部署到android源码+模型+项目说明.zip基于yolov9 ncnn模型部署到android源码+模型+项目说明.zip基于yolov9 ncnn模型部署到android源码+模型+项目说明.zip基于yolov9 ncnn模型部署到android源码+...

    android使用jpct加载三维模型

    7. **触摸和手势控制**: Android提供了一系列的触摸事件监听器,如`OnTouchListener`,你可以利用这些接口响应用户的触摸操作,改变相机视角或模型的属性,实现3D交互。 8. **性能优化**: 移动设备的硬件资源有限,...

    Android通过opengl 读取并显示obj模型

    Android通过opengl显示obj模型

    Android OpenGL绘制STL 3D模型

    通过以上步骤,你就能在Android应用中成功展示STL 3D模型,并实现具有特定效果的3D指南针了。在实际开发过程中,你可能还需要考虑性能优化、错误处理以及用户交互等方面的问题,但这些基础步骤将为你提供一个良好的...

    发送模型基于安卓点触事件

    本教程将深入探讨如何在Android环境中实现自定义的触控事件,即“发送模型基于安卓点触事件”。 一、Android触摸事件基础 Android的触摸事件主要由MotionEvent类表示,它包含了触摸屏幕的各种动作,如ACTION_DOWN...

    浅谈android线程模型

    然而,在Android应用开发过程中,理解和掌握线程模型对于构建高性能、响应迅速的应用至关重要。 #### Android的线程模型概览 Android采用了一种基于事件驱动的单线程模型。当应用程序启动时,系统会自动创建一个...

    部署yolov10的ncnn模型到android源码+模型+项目说明.zip

    部署yolov10的ncnn模型到android源码+模型+项目说明.zip 部署yolov10的ncnn模型到android源码+模型+项目说明.zip 部署yolov10的ncnn模型到android源码+模型+项目说明.zip 部署yolov10的ncnn模型到android源码+模型+...

    android事件的处理模型和多线程的处理方法

    总之,Android事件处理模型通过Input子系统实现了高效的事件分发,而多线程技术则保证了应用的流畅运行和用户体验。理解和掌握这些机制对于开发高质量的Android应用至关重要。开发者需要根据具体需求选择合适的事件...

    基于Android实现人脸表情识别的tflite模型源码+模型+项目说明.zip

    基于Android实现人脸表情识别的tflite模型源码+模型+项目说明.zip基于Android实现人脸表情识别的tflite模型源码+模型+项目说明.zip基于Android实现人脸表情识别的tflite模型源码+模型+项目说明.zip基于Android实现...

    Android 游戏FBX文件(T54坦克模型)

    本文将深入探讨Android游戏中的FBX文件,特别是针对“T54坦克模型”的具体应用。 FBX是由Autodesk公司开发的一种数据格式,它允许游戏开发者在不同的3D建模软件(如3ds Max、Maya等)之间导入和导出模型、纹理、...

    yolov8模型集成到android端demo

    在本文中,我们将深入探讨如何将YOLOv8模型集成到Android端的Demo应用程序中,以便实现图像识别功能。YOLO(You Only Look Once)是一种实时目标检测系统,以其高效和准确性而闻名。YOLOv8是YOLO系列的最新版本,它...

    Android开发基于MVVM模型设计的BeatBox程序源码.zip

    Android开发基于MVVM模型设计的BeatBox程序源码Android开发基于MVVM模型设计的BeatBox程序源码Android开发基于MVVM模型设计的BeatBox程序源码Android开发基于MVVM模型设计的BeatBox程序源码Android开发基于MVVM模型...

    Android:复杂数据模型的传递

    在Android开发中,数据模型的传递是一个非常关键的环节,特别是在处理复杂的数据结构时。本文将探讨如何在Android应用程序中有效地传递和管理复杂数据模型,同时结合提供的标签"源码"和"工具",我们将深入解析相关的...

    Android事件模型之interceptTouchEvnet ,onTouchEvent关系正解

    在Android开发中,事件处理是UI交互的核心部分。本文将深入探讨Android事件模型,特别是`onTouchEvent`和`interceptTouchEvent`的关系,帮助开发者更好地理解这两个方法如何协同工作以实现复杂的触摸事件处理。 ...

    Android本地注入事件

    在Linux 2.6版本中,设备驱动模型引入了/dev/input/目录下的event接口,用于处理各种输入设备的事件。每个event接口对应一个设备,编号从0到7(也可能更多,取决于系统的实际设备数量)。例如,/dev/input/event0...

    Android-这是一个基于Android6.0做的一个APP基本模型

    在这个APP模型中,Glide被用来加载音乐专辑封面和其他图形资源,确保了良好的用户体验。 3. **SwipeRefreshLayout**:SwipeRefreshLayout是Android提供的一个刷新布局,用户可以通过下拉手势来触发刷新操作。在网易...

    Android-EasyShow3D一个基于OpenGLES的简单易用的3D模型展示框架

    《Android-EasyShow3D:基于OpenGLES的3D模型展示框架详解》 在移动设备上实现3D模型的展示已经成为许多应用不可或缺...通过这个框架,我们可以轻松地将各种3D模型融入到Android应用中,提升应用的视觉效果和互动性。

    基于Android运行人脸表情识别的tflite模型源码+项目说明.zip

    基于Android运行人脸表情识别的tflite模型源码+项目说明.zip基于Android运行人脸表情识别的tflite模型源码+项目说明.zip基于Android运行人脸表情识别的tflite模型源码+项目说明.zip基于Android运行人脸表情识别的tf...

Global site tag (gtag.js) - Google Analytics