`
水木清华77
  • 浏览: 36880 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

我来说说Android touch 系统的设计哲学

阅读更多

环境

设备:nexus4 ,系统:Android4.4.2,源代码:Android api 19, debug工具: android studio.

目的

分析Android的touch传递机制,为实现各种hack效果(比如继承listview,实现下拉刷新效果)和复杂的交互效果提供理论支撑。

研究对象

activity 、 viewGroup、view的子类。

Android对touch系统的设计哲学

touch事件包括DOWN MOVE UP 三类基本事件,touch系统里面(这里除去ActionBarOverlayLayout类,为了更加简单地说明问题)分为国王和3类公民:

  • 国王:PhoneWindow.DecorView类,从GOD(android系统)接收一切touch事件,分配touch事件给整个王国(app).
  • 一等公民:activity及其子类,始终可以接收来自国王的各种touch事件,然后告诉国王先把touch事件交给二等公民处理,如果二等公民accept了touch事件,他就不再自己处理了,否则他选择自己处理这个touch事件。
  • 二等公民:viewGroup及其子类,负责传递touch事件。第一梯队的二等公民会排队接收DOWN事件,依次将DOWN事件,传递给他的子嗣(还是二等公民),如果子嗣家中有三等公民接收了DOWN事件,排队的二等公民就会各自散去,否则国王会把DOWN事件,挨个传递给排队的二等公民。一旦第一梯队中有二等公民的奴隶(三等公民)接收处理了这个DOWN事件,国王会把接着而来的MOVE UP 事件都交由这个第一梯队的二等公民处理,其他第一梯队的二等公民可以闲着没吊事了,直到下一次国王分配DOWN事件的时候。
  • 三等公民:view及其子类,作为二等公民家里面的奴隶,负责处理来自二等公民touch事件。

note:当然有些体贴奴隶的二等公民,会自己接收处理事件。

touch王国里面各种术语

接收分配事件:dispatchTouchEvent,使用者:国王和三类公民
接收分配事件:superDispatchTouchEvent,使用者:国王 使用场景:一等公民告诉国王先把touch事件交给二等公民处理。
拦截处理事件:onInterceptTouchEvent,使用者:体贴奴隶的二等公民
处理事件:onTouchEvent,使用者:三类公民,一般来说奴隶使用频率是最高的。

底层公民图谱

screenshot

现世的图

screenshot

结束语

谢谢各位看官捧场,touch系统里面的各种小细节就不在这里披露了,如有需要可以私下探讨。若有写的不对的地方,也请各位看官不吝指出。

0
0
分享到:
评论

相关推荐

    掌握android Touch 系统

    为了深入理解和掌握Android的触摸系统,我们需要从以下几个方面来了解:触摸系统的概述、触摸事件的框架、自定义触摸处理、系统提供的触摸处理程序和系统提供的手势处理程序。 首先,Android的触摸系统工作流程可以...

    android soundtouch demo

    这个“android soundtouch demo”是专为Android平台设计的,展示了如何在Windows环境下使用Cygwin工具链进行交叉编译。这个例子对开发者来说是一个宝贵的资源,特别是那些希望在Android应用中实现音频处理功能的...

    Android Touch事件rawX,rawY与x,y的区别

    在Android开发中,触摸事件(Touch Events)是用户与设备交互的重要部分,特别是涉及到界面的交互操作时。本文将深入探讨Android Touch事件中`rawX`、`rawY`与`x`、`y`的区别,帮助开发者更好地理解和处理触摸事件。...

    android touch demo

    `android touch demo`是一个用于演示Android系统中触摸事件处理的示例项目,通过这个项目,我们可以深入理解Android触摸事件的工作原理以及如何在应用中实现对触摸事件的响应。 触摸事件主要由三类基本事件组成:...

    android测试Touch事件DEMO

    总结来说,"android测试Touch事件DEMO"是一个用于教学和实践的实例,它涵盖了Android中触摸事件的基本处理、事件分发以及自定义日志记录,对于理解和掌握Android触摸事件机制非常有帮助。通过这个DEMO,开发者可以...

    Android-ForceTouch在Android中的简单实现

    Force Touch技术,起源于Apple的iPhone,并逐渐被引入到Android系统中,为用户界面带来了全新的交互体验。它能够感知用户触摸屏幕时的压力变化,通过不同的按压力度来执行不同的操作。在Android平台上,尽管并非所有...

    Android深入研究Touch事件demo

    在Android开发中,触摸事件(Touch Event)是用户与设备交互的重要部分,它涉及到Activity、View及ViewGroup之间复杂的事件分发机制。本篇将深入探讨Android中的触摸事件处理,包括事件的产生、分发、拦截以及如何...

    Android Touch事件传递机制解析

    在Android系统中,触摸事件(Touch Event)是用户与设备交互的重要方式,它涉及到了UI控件的响应和处理。本文将深入解析Android的Touch事件传递机制,帮助开发者理解这一核心概念。 首先,我们了解下Android中的...

    android之Touch事件处理机制测试

    在Android开发中,触摸事件(Touch Events)是用户与设备交互的主要方式,特别是对于移动设备。本文将深入探讨“android之Touch事件处理机制测试”,包括滑动事件冲突的解决、ViewGroup中的事件触发和传递机制。 一...

    SDR Touch Android.zip

    SDR Touch Android是一款专为Android设备设计的软件定义无线电(Software Defined Radio, SDR)应用。SDR技术的核心理念是将传统的硬件无线电功能,如频率调谐、信号处理等,转移到软件层面执行,从而实现更灵活、可...

    Android Touch事件分发机制代码一

    在Android系统中,触摸事件的分发是UI交互的核心部分,它涉及到Activity、ViewGroup和View之间的协同工作。本文将深入解析Android的Touch事件分发机制,并通过一个名为"EventDispatchTest"的示例来说明。 1. **事件...

    android Touch事件传递机制

    在Android系统中,触摸事件(Touch Events)是用户与设备交互的主要方式,它涉及到了复杂的事件传递机制。本文将深入探讨Android的触摸事件处理流程,包括事件的产生、分发以及处理过程,以实例的形式帮助开发者理解...

    android 关于touch demo

    在Android开发中,触摸事件(Touch Events)是用户与设备交互的重要方式,特别是对于移动应用而言。本示例"android 关于touch demo"主要关注如何处理`onTouch`事件,尤其是如何判断用户的上下移动操作。在Android中...

    安卓Android源码——touch1.rar

    "安卓Android源码——touch1.rar"这个压缩包很可能包含了与触摸事件处理相关的源代码,让我们来详细探讨一下这个主题。 Android操作系统是基于Linux内核的开源移动设备平台,它的源码由许多组件组成,如HAL(硬件...

    Android Touch Test APK 源码

    总的来说,`Android Touch Test APK 源码`是一个宝贵的资源,可以帮助开发者深入了解Android触摸事件的生命周期、分发机制以及如何在实际应用中实现各种触摸交互。通过深入阅读和实践,开发者可以提升自己在Android...

    android4.0 input touch分析

    android4.0 输入触摸分析 android4.0下的输入触摸流程分析文档,主要分为两个部分:android Framework 层和 Linux 内核层。下面将从头到尾详细分析输入触摸流程。 android Framework 层 在android Framework 层,...

    Android Touch Circle 测试附源代码.rar

    Android Touch Circle Activity触屏操作测试附源代码示例,触摸圆点:  //此方法重画时调用  @Override  protected void onDraw(Canvas canvas) {   //canvas可以看做画板   super.onDraw(canvas);   //创建...

    Android中Touch事件的传递

    总结来说,Android中的Touch事件传递涉及到了Activity的布局加载、DecorView和ViewGroup的事件分发机制以及事件拦截。通过理解这些机制,开发者可以编写出更加合理和高效的事件处理代码,以优化用户界面的响应性和...

    android-touch.zip_android touch

    this code is useful for android platforms. when the user touch on the pad, do processes of the touching and manage them.

Global site tag (gtag.js) - Google Analytics