分层定位事件分派制造技术

技术编号:18824747 阅读:35 留言:0更新日期:2018-09-01 13:41
一种电子设备(102)包括:显示器(104),所述显示器(104)用于显示视图的布局(108);用户输入组件(212、214、216),所述用户输入组件(212、214、216)用于接收表示定位事件(118)的输入;以及定位事件处理程序组件(226),所述定位事件处理程序组件(226)用于检测定位事件。电子设备还包括:注册表管理组件(230),所述注册表管理组件(230)用于基于定位事件的地点来识别视图的布局的终端视图(122);以及视图树管理组件(228),所述视图树管理组件(228)用于从布局构造终端视图的一个或多个祖先视图的祖先链(126)。定位事件处理程序组件将从祖先链的根视图(110)开始在祖先链中顺序地分派定位事件。

【技术实现步骤摘要】
【国外来华专利技术】分层定位事件分派
本公开大体涉及图形用户界面,并且更具体涉及在图形用户界面中接收和处理触摸事件和其它定位事件。
技术介绍
图形用户界面(GUI)使得能够使用多个窗口或视图,通过所述多个窗口或视图可以向用户显示信息或者可以从用户接收输入。通常,此输入是通过使用触摸屏、触控板、鼠标、或其它位置输入组件来提供的。在常规系统中,用户经由位置输入组件与GUI的交互采取一个或多个定位事件的形式,每个定位事件具有相对于系统的显示空间的二维位置。对于这些定位事件中的每一个,底层GUI框架操作来将输入事件分派(dispatch)给意图视图以供处理。通常,GUI实现当前显示的视图的视图层次(也常常被称为“视图树”),并且表示这些视图之间的父子关系。因此,输入事件的分派通常涉及往视图层次向下分派输入事件。在许多实例下,随着输入事件遍历该视图层次,定位事件可以被意图视图的父视图拦截或者修改,诸如以虑及触摸“倾溢(slop)”或在不同类型的手势输入之间进行区分。在由此要求每个子视图被完全包含在父视图的有界框内的GUI配置中,往视图层次向下分派视图事件是相对直接的,因为每个父视图基于定位事件的地点与有界框重叠或者在父视图对象的界限内而接收父视图,并且父视图仅需要将输入事件传递给与定位事件地点重叠的任何一个子视图对象。然而,出于美学原因或其它设计原因可能期望提供子视图对象的定位不受其父视图对象的有界框限制的视图布局。在这样的实例下,意图用于特定视图的输入事件的地点可以不落在该特定视图的父视图对象的边界内。将视图对象约束成仅接受视图对象的有界框内的定位事件的常规的基于空间的分层事件分派过程无法在这样的实例下准确地分派和处理定位事件。附图说明通过参考附图,本公开可以被更好地理解,并且其许多特征和优点对于本领域的技术人员而言变得显而易见。在不同的附图中使用相同的附图标记表示类似或相同的项目。图1是图示依照本公开的至少一个实施例的,在利用无约束GUI的电子设备中分派定位事件的过程的图。图2是图示依照本公开的至少一个实施例的,图1的电子设备的示例硬件配置的框图。图3是图示依照本公开的至少一个实施例的,用于无约束GUI的定位事件分派的方法的流程图。图4是图示依照本公开的至少一个实施例的,用于确定表示布局的视图的定位的四叉树数据结构的方法的图。图5是图示依照本公开的至少一个实施例的,用于确定表示布局的视图的定位的视图映射数据结构的方法的图。图6是图示依照本公开的至少一个实施例的,用于确定表示布局的视图的列表数据结构的方法的图。具体实施方式图1至图6图示用于处理“无约束”GUI(即,不将子视图的位置约束到父视图的有界框或其它边框的GUI)中的定位输入事件的示例设备和技术。电子设备提供具有视图的布局的GUI的显示。用户可以利用触摸屏、触控板、鼠标或其它位置输入组件来以相对于当前布局中的视图的定位输入事件(在下文中,为了简洁为“定位事件”)的形式经由GUI提供输入。电子设备以表示当前布局中的视图及其相对于电子设备的显示器的布局或显示空间的位置的数据结构的形式维护视图显示空间注册表。响应于定位事件,电子设备使用视图显示空间注册表来识别定位事件很可能意图针对的视图—此视图在本文中被标识为“终端视图”。电子设备然后识别终端视图在当前布局的视图层次中的地点并且从终端视图逐步发展视图层次以从该视图层次构建表示从顶部父视图向下到终端视图的视图链的祖先链。电子设备然后可以顺序地分派祖先链中的定位事件,直到祖先链中的视图消费或者修改定位事件或者定位事件最终被终端视图拒绝为止。作为此分派过程的一部分,可以禁用或者绕过基于定位事件的地点对定位事件的过滤,从而允许祖先链中的每个视图考虑定位事件,而不管定位事件的地点与非终端视图的有界框或其它界限之间的关系如何。通过利用视图显示空间注册表来识别独立于任何父视图的终端视图、从终端视图向上构造祖先链、并且往此祖先链向下连续地分派定位事件,祖先视图可以在不必识别定位输入将被分派给的子视图的情况下考虑定位输入。因此,子视图的位置与父视图的边界之间的关系与定位事件的分派没有密切关系,这允许子视图被部分地或完全地定位在父视图的界限外部,同时仍然许可定位事件的预期分层处理。即,随着每个祖先视图被提供消费、延迟或者以其它方式修改定位事件的机会时,诸如滚动、轻扫手势、多点触摸手势等的较大场境(context)用户输入的处理继续被恰当地处置。为了易于参考,在下面参考如由谷歌公司(GoogleInc)所发布的安卓(Android)操作系统(OS)框架(在下文中,“安卓框架”)及其对应术语或者在它们的场境中描述各个方面的示例和实施方式。然而,这些参考文献仅是示例性的而不旨在为限制性的。可以使用本文中所提供的指南来在其它OS框架或用户界面(UI)框架中类似地实现所标识的方面。图1图示依照至少一个实施例的,用于针对不将子视图的位置约束到父视图的有界框或其它边界的GUI(在下文中,“受约束GUI”)来分派定位事件的示例过程100。过程100由具有显示器104和一个或多个位置用户输入组件(在图1中未示出)(诸如触摸屏、触控板、鼠标等)的电子设备102执行。电子设备102可以包括例如支持计算的蜂窝电话、平板计算机、支持计算的手表或其它支持计算的可穿戴设备、笔记本计算机、台式计算机、游戏控制台、远程控制器、网络器具、服务器计算机、家庭自动化控制器、汽车显示接口、支持计算的医疗设备等。如所描绘的,电子设备102经由显示器104向用户提供GUI106。GUI106包括当前显示在GUI中的视图(诸如视图110、112、114)的布局108。对于此示例,视图110、112是窗口视图而视图114是按钮视图。另外,视图114是视图112的子视图,所述视图112进而是视图110的子视图,并且因此视图110是视图112的父,所述视图112进而是视图114的父。如也由图1所示,GUI106是无约束GUI,因为GUI106的视图可以被至少部分地或完全地定位在其父视图的边界外部。为了图示,视图114完全位于视图112的边界外部,并且视图112同样完全位于视图110的边界外部。由于父视图与子视图之间的这种无约束关系,常规的基于有界框的分层分派过程将很可能无法恰当地处理定位事件。为了图示,如果用户将通过在与视图112的位置重叠的位置处发起与触摸屏(未示出)接触来发起触摸手势,则此地点在视图110的边界外部,并且因此当与初始触摸屏接触相对应的定位事件在常规的基于空间的分层分派过程中被往视图层次向下分派时,视图110将拒绝定位事件,因为定位事件的地点在视图110的边界外部。为了防止对定位事件的这样的基于边界的拒绝并且因此使得GUI106能够作为无约束GUI有效地操作,电子设备102采用无约束分层分派技术(过程100),所述无约束分层分派技术操作来以不依靠基于有界框的过滤的方式分派定位事件,同时继续使得能实现分层事件分派以供处理较大场境用户输入事件。为此,电子设备102维护视图显示空间注册表116,所述视图显示空间注册表116存储表示当前视图布局108的视图中的一些或全部视图及其相对于布局108或相对于显示空间的位置的信息。视图显示空间注册表116可以包括各种数据结构中的任本文档来自技高网...

【技术保护点】
1.一种由电子设备执行的方法,所述方法包括:在所述电子设备的显示器处显示视图的布局;以及响应于经由所述电子设备的用户输入组件检测到与所述布局相关联的定位事件:基于所述定位事件的地点来识别视图的所述布局的终端视图;从所述布局构造所述终端视图的一个或多个祖先视图的祖先链;以及从所述祖先链的根视图开始在所述祖先链中顺序地分派所述定位事件。

【技术特征摘要】
【国外来华专利技术】2016.01.06 US 14/989,0871.一种由电子设备执行的方法,所述方法包括:在所述电子设备的显示器处显示视图的布局;以及响应于经由所述电子设备的用户输入组件检测到与所述布局相关联的定位事件:基于所述定位事件的地点来识别视图的所述布局的终端视图;从所述布局构造所述终端视图的一个或多个祖先视图的祖先链;以及从所述祖先链的根视图开始在所述祖先链中顺序地分派所述定位事件。2.根据权利要求1所述的方法,其中:显示视图的所述布局包括:显示具有有界框的第一视图;以及至少部分地在所述有界框外部显示第二视图,所述第二视图包括所述第一视图的子视图;识别所述布局的所述终端视图包括将所述第二视图识别为所述终端视图;构造所述祖先链包括在所述祖先链中将所述第一视图识别为所述第二视图的祖先;以及顺序地分派所述定位事件包括在将所述定位事件分派给所述第二视图之前将所述定位事件分派给所述第一视图。3.根据权利要求2所述的方法,其中:顺序地将所述定位事件分派给所述第一视图包括禁用或者绕过由所述第一视图对定位事件的基于有界框的过滤。4.根据权利要求1至3中的任一项所述的方法,其中:在所述祖先链中顺序地分派所述定位事件包括:沿循所述祖先链顺序地将所述定位事件分派给每个视图,直到所述祖先链的视图消费或修改所述定位事件、或者所述终端视图拒绝所述定位事件为止。5.根据权利要求4所述的方法,其中:所述定位事件是表示由用户执行的手势的定位事件的序列的初始定位事件;并且所述方法进一步包括:将所述序列中的其它定位事件分派给所述祖先链的消费或修改了所述初始定位事件的视图。6.根据权利要求1至5中的任一项所述的方法,进一步包括:提供将所述布局的每个视图映射到与所述布局相关联的显示空间中的一个或多个对应位置的数据结构;以及其中,识别所述终端视图包括:使用所述定位事件的地点基于对所述数据结构的查找来识别所述终端视图。7.根据权利要求6所述的方法,其中,提供所述数据结构包括:将所述数据结构作为条目的二维阵列来提供,所述阵列的每个条目与所述显示器的显示空间的对应像素块相关联并且包括一个或多个子条目,每个子条目被配置成存储具有与所述显示空间中的该像素块重叠的位置的对应视图的标识符。8.根据权利要求7所述的方法,其中,识别所述终端视图包括:识别所述阵列的与位于所述定位事件的位置处的像素块相关联的条目;以及选择由下述子条目表示的视图作为所述终端视图:该子条目表示由所识别的条目的子条目表示的所有视图的最低绘制次序。9.根据权利要求1至8中的任一项所述的方法,进一步包括:识别视图的所述布局的哪些视图被配置成消费或者修改定位事件;提供包括所识别的视图的列表的数据结构;以及其中,识别所述终端视图包括:使用所述定位事件的地点和所识别的视图的列表中的视图的位置来执行命中测试。10.一种电子设备,包括:显示器,所述显示器用于显示视图的布局;用户输入组件,所述用户输入组件被布置成接收表示定位事件的输入;定位事件处理程序组件,所述定位事件处理程序组件被布置成检测所述定位事件;注册表管理组件,所述注册表管理组件用于基于所述定位事件的地点来识别视图的所述布局的终端视图;视图树管理组件,所述视图树管理组件被布置成从所述布局构造所述终端视图的一个或多个祖先视图的祖先链;以...

【专利技术属性】
技术研发人员:克里斯托弗·克雷克亚当·威廉·鲍威尔
申请(专利权)人:谷歌有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1