多控件触控方法和系统的制作方法

文档序号:6442702阅读:196来源:国知局
专利名称:多控件触控方法和系统的制作方法
多控件触控方法和系统
技术领域
本发明涉及计算机技术领域,特别的涉及一种多控件触控方法和系统。
背景技术
Android(安卓)系统是一种以Linux为基础的开放源码操作系统,其主要用于便携设备,在便携设备的市场中占有很大的份额。Android系统支持在同一个控件上进行多点触控,例如,将一张图片设置成为一个单独的控件,可在该控件上对图片进行双指缩放。但是,不能同时进行多个控件的触控,因为获取焦点的控件只有一个。当一个控件获取了焦点后,原来焦点所在的控件随之丢失焦点。另外,当在用户界面按下一个控件不松开时,按下其它控件无效。而在应用场景中,用户有可能需要同时触控多个控件,例如同时按下Shift键和英文字母键以输入大写的英文字母。而传统的系统不支持在用户界面上同时操作两个控件。

发明内容基于此,有必要提供一种支持多个控件同时操作的多控件触控方法。一种多控件触控方法,包括以下步骤:监测覆盖在多个底层控件上的一个透明控件的按下事件;当发生所述按下事件时,获取所述按下事件的触控点的位置;根据所述触控点的位置获取所述按下事件对应的底层控件;根据获取到的至少两个底层控件执行与所述按下事件相应的处理。基于此,还有必要提供一种支持多个控件同时操作的多控件触控系统。—种多控件触控系统,包括:监测模块,用于监测覆盖在多个底层控件上的一个透明控件的按下事件;触控点位置获取模块,用于当发生所述按下事件时,获取所述按下事件的触控点的位置;底层控件获取模块,用于根据所述触控点的位置获取所述按下事件对应的底层控件;响应模块,用于根据获取到的至少两个底层控件执行与所述按下事件相应的处理。由于同一个控件上支持多点触控,上述多控件触控方法和系统,通过监测覆盖在多个底层控件上的一个透明控件的多个按下事件,并获取该多个按下事件关联的多个触摸点的位置,根据触摸点的位置获取该多个按下事件对应的多个底层控件,进一步执行预设的与该多个底层控件相关的按下处理操 作,从而达到同时操作多个底层控件的效果。


图1为一个实施例中的多控件触控方法的流程示意图;图2为另一个实施例中的多控件触控方法的流程示意图;图3为一个实施例中的多控件触控系统的结构示意图;图4为另一个实施例中的多控件触控系统的结构示意图。
具体实施方式如图1所示,在一个实施例中,一种多控件触控方法,包括以下步骤:步骤S101,监测覆盖在多个底层控件上的一个透明控件的按下事件。具体的,可预先在底层控件上设置一个覆盖底层控件的透明控件,由于该控件是透明的,因此对于用户来说,实际看到的仍然是底层控件。由于用户界面中在需要进行组合操作的多个底层控件上覆盖有一个透明控件,因而用户针对底层控件的操作实际上都被透明控件拦截,而单独的一个控件可支持多点触控,所以可通过监测透明控件的多个按下事件来响应用户针对多个底层控件的按下操作。在一个实施例中,透明控件可采用具有透明背景的ImageView控件。步骤S102,当发生透明控件的按下事件时,获取按下事件的触控点的位置。具体的,当发生透明控件的按下事件,如ACT10N_D0WN、ACT10N_P0INTER_D0WN等按下事件时,可获取触发该按下事件的触控点的位置。步骤S103,根据触控点的位置获取按下事件对应的底层控件。在一个实施例中,可获取透明控件下的所有底层控件的位置信息。进一步的,可根据触控点的位置和底层控件的位置信息获取触控点所在的底层控件。具体的,可根据触控点的位置和底层控件的位置信息得到触控点位于某一个底层控件上,则该底层控件即为按下事件对应的底层控件。步骤S104,根据获取到的至少两个底层控件执行与按下事件相应的处理。具体的,可根据获取到的多个底层控件执行预设的响应处理,如设置该底层控件的状态为按下状态、发出按下的声音、执行相关按下程序等。如图2所示,在另一个实施例中,一种多控件触控方法,包括以下步骤:步骤S201,监测覆盖在多个底层控件上的一个透明控件的按下事件。步骤S202,当发生按下事件时,获取该按下事件的触控点的位置。步骤S203,根据触控点的位置获取按下事件对应的底层控件。步骤S204,获取按 下事件的标记,设置与按下事件对应的底层控件的标记为按下事件的标记。具体的,系统内部由指针对象(pointer)来跟踪触控操作(包括按下、移动、抬起),一个手指(或其它用于产生触控操作的物体)对应一个指针对象,多点触控对应多个活跃的指针对象,指针对象的标记(index)对应指针对象在当前活跃的指针对象中的生成次序,其取值范围可为O 当前活跃的指针对象的总数减一。按下事件的标记(index)即为触发该按下事件的触控操作对应的指针对象的标记。在一个实施例中,可根据MontionEvent类的getActionlndex方法来获取按下事件的标记。进一步的,可将获取的按下事件的标记赋给该按下事件对应的底层控件,在一个实施例中,若按下事件的标记为0,则设置该按下事件对应的底层控件的标记为0,若按下事件的标记为1,则设置该按下事件对应的底层控件的标记为1,依此类推。步骤S205,根据获取到的至少两个底层控件执行与按下事件相应的处理。步骤S206,监测上述透明控件的抬起事件。步骤S207,当发生抬起事件时,获取该抬起事件的标记,获取与抬起事件具有相同标记的底层控件,其中,抬起事件的标记与该抬起事件对应的按下事件的标记相同。由于用户在按下操作和抬起操作的中间过程可能会进行移动操作,因此,针对控件A进行的按下操作,其对应的抬起操作可能发生在控件B上,而该抬起操作触发的抬起事件依然应由与控件A相关的程序来响应。具体的,抬起事件的标记(index)即为触发该抬起事件的触控操作对应的指针对象的标记,而指针对象用于跟踪一个手指(或其它产生触控操作的物体)产生的触控操作(包括按下、移动、抬起),所以抬起事件的标记与该抬起事件对应的按下事件的标记相同。而在步骤S204中,已经将抬起事件对应的按下事件的标记设置给了按下事件对应的底层控件,因而获取标记与抬起事件的标记相同的底层控件,即为该抬起事件对应的底层控件。在一个实施例中,可根据MontionEvent类的getActionlndex方法来获取抬起事件的标记。步骤S208,根据获取到的底层控件执行与抬起事件相应的处理。具体的,可根据获取到的底层控件执行预设的响应处理,如设置该底层控件的状态为松开状态、发出抬起的声音、执行相关抬起程序等。步骤S209,清除与抬起事件具有相同标记的底层控件的标记。底层控件的标记是用于查找抬起事件对应的底层控件的,当抬起事件发生后,即可清除底层控件的标记。具体的,可设置底层控件的标记为与所有当前活跃的指针对象的标记不同的标记。 在一个实施例中,在步骤S209之后,上述方法还包括:查找标记大于当前发生的抬起事件的标记的底层控件,将该底层控件的标记减
O由于发生抬起事件时,触发该抬起事件的触控操作对应的指针对象将被清空,而标记大于该指针对象的标记的指针对象的标记将自动减一。例如,当前触发抬起事件的触控操作对应的指针对象的标记为2,则标记为3的指针对象的标记变为2,标记为4的指针对象的标记变为3,依次类推。因此,为了将底层控件的标记与其对应的指针对象的标记相对应,以便与后续的抬起事件相对应,可将底层控件的标记作相同的处理,即将标记大于当iu发生的抬起事件的标记的底层控件的标记都减一。如图3所示,在一个实施例中,一种多控件触控系统,包括监测模块301、触控点位置获取模块302、底层控件获取模块303、响应模块304,其中:监测模块301用于监测覆盖在多个底层控件上的一个透明控件的按下事件。具体的,可预先在底层控件上设置一个覆盖底层控件的透明控件,由于该控件是透明的,因此对于用户来说,实际看到的仍然是底层控件。由于用户界面中在需要进行组合操作的多个底层控件上覆盖有一个透明控件,因而用户针对底层控件的操作实际上都被透明控件拦截,而单独的一个控件可支持多点触控,所以可通过监测模块301监测透明控件的多个按下事件来响应用户针对多个底层控件的按下操作。在一个实施例中,透明控件可采用具有透明背景的ImageView控件。
触控点位置获取模块302用于当发生透明控件的按下事件时,获取按下事件的触控点的位置。具体的,当发生透明控件的按下事件,如ACT10N_D0WN、ACT10N_P0INTER_D0WN等按下事件时,触控点位置获取模块302可获取触发该按下事件的触控点的位置。底层控件获取模块303用于根据触控点的位置获取按下事件对应的底层控件。在一个实施例中,底层控件获取模块303可获取透明控件下的所有底层控件的位置信息,进一步的,可根据触控点的位置和底层控件的位置信息获取触控点所在的底层控件。具体的,底层控件获取模块303可根据触控点的位置和底层控件的位置信息得到触控点位于某一个底层控件上,则该底层控件即为按下事件对应的底层控件。响应模块304用于根据获取到的至少两个底层控件执行与按下事件相应的处理。具体的,响应模块304可根据获取到的多个底层控件执行预设的响应处理,如设置该底层控件的状态为按下状态、发出按下的声音、执行相关按下程序等。如图4所示,在另一个实施例中,一种多控件触控系统,包括监测模块401、触控点位置获取模块402、底层控件获取模块403、标记模块404、响应模块405、标记清除模块406,其中:监测模块401用于监测覆盖在多个底层控件上的一个透明控件的按下事件。触控点位置获取模块402用于当发生按下事件时,获取该按下事件的触控点的位置。底层控件获取模块403用于根据触控点的位置获取按下事件对应的底层控件。标记模块404用于获取按下事件的标记,设置与按下事件对应的底层控件的标记为按下事件的标记。具体的,系统内部由指针对象(pointer)来跟踪触控操作(包括按下、移动、抬起),一个手指(或其它用于产生触控操作的物体)对应一个指针对象,多点触控对应多个活跃的指针对象,指针对象的标记(index)对应指针对象在当前活跃的指针对象中的生成次序,其取值范围可为O 当前活跃的指针对象的总数减一。按下事件的标记(index)即为触发该按下事件的触控操作对应的指针对象的标记。在一个实施例中,标记模块404可根据MontionEvent类的getActionlndex方法来获取按下事件的标记。进一步的,标记模块404可将获取的按下事件的标记赋给该按下事件对应的底层控件。在一个实施例中,若按下事件的标记为0,则标记模块404设置该按下事件对应的底层控件的标记为0,若按下事件的标记为1,则设置该按下事件对应的底层控件的标记为1,依此类推。响应模块405用于根据获取到的至少两个底层控件执行与按下事件相应的处理。本实施例中,监测模块401还用于监测上述透明控件的抬起事件。底层控件获取模块403还用于当发生抬起事件时,获取该抬起事件的标记,获取与抬起事件具有相同标记的底层控件,其中,抬起事件的标记与该抬起事件对应的按下事件的标记相同。由于用户在按下操作和抬起操作的中间过程可能会进行移动操作,因此,针对控件A进行的按下操作,其对应的抬起操作可能发生在控件B上,而该抬起操作触发的抬起事件依然应由与控件A相关的程序来响应。具体的,抬起事件的标记(index)即为触发该抬起事件的触控操作对应的指针对象的标记,而指针对象用于跟踪一个手指(或其它产生触控操作的物体)产生的触控操作(包括按下、移动、抬起),所以抬起事件的标记与该抬起事件对应的按下事件的标记相同。而标记模块404已经将抬起事件对应的按下事件的标记设置给了按下事件对应的底层控件,因而底层控件获取模块403可获取标记与抬起事件的标记相同的底层控件,即为该抬起事件对应的底层控件。在一个实施例中,底层控件获取模块403可根据MontionEvent类的getActionlndex方法来获取抬起事件的标记。本实施例中,响应模块405还用于根据获取到的底层控件执行与抬起事件相应的处理。具体的,响应模块405可根据获取到的底层控件执行预设的响应处理,如设置该底层控件的状态为松开状态、发出抬起的声音、执行相关抬起程序等。标记清除模块406用于清除与抬起事件具有相同标记的底层控件的标记。底层控件的标记是用于查找抬起事件对应的底层控件的,当抬起事件发生后,标记清除模块406即可清除底层控件的标记。具体的,标记清除模块406可设置底层控件的标记为与所有当前活跃的指针对象的标记不同的标记。在一个实施例中,标记清除模块406还用于查找标记大于当前发生的抬起事件的标记的底层控件,将该底层控件的标记减一。由于发生抬起事件时,触发该抬起事件的触控操作对应的指针对象将被清空,而标记大于该指针对象的标记的指针对象的标记将自动减一。例如,当前触发抬起事件的触控操作对应的指针对象的标记为2,则标记为3的指针对象的标记变为2,标记为4的指针对象的标记变为3,依次类推。因此,为了将底层控件的标记与其对应的指针对象的标记相对应,以便与后续的抬起事件相对应,标记清除模块406可将底层控件的标记作相同的处理,即将标记大于当前发生的抬起事件的标记的底层控件的标记都减一。由于同一个控件上支持多点触控,上述多控件触控方法和系统,通过监测覆盖在多个底层控件上的一个透明控件的多个按下事件,并获取该多个按下事件关联的多个触摸点的位置,根据触摸点的位置获取该多个按下事件对应的多个底层控件,进一步执行预设的与该多个底层控件相关的按下处理操作,从而达到同时操作多个底层控件的效果。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
权利要求
1.一种多控件触控方法,包括以下步骤: 监测覆盖在多个底层控件上的一个透明控件的按下事件; 当发生所述按下事件时,获取所述按下事件的触控点的位置; 根据所述触控点的位置获取所述按下事件对应的底层控件; 根据获取到的至少两个底层控件执行与所述按下事件相应的处理。
2.根据权利要求1所述的多控件触控方法,其特征在于,所述根据所述触控点的位置获取所述按下事件对应的底层控件的步骤包括: 获取所述透明控件下的所有底层控件的位置信息; 根据所述触控点的位置和所述底层控件的位置信息获取触控点所在的底层控件。
3.根据权利要求1所述的多控件触控方法,其特征在于,在所述根据触控点的位置获取所述按下事件对应的底层控件的步骤之后,还包括: 获取按下事件的标记; 设置与所述按下事件对应的底层控件的标记为所述按下事件的标记。
4.根据权利要求3所述的多控件触控方法,其特征在于,所述方法还包括: 监测所述透明控件的抬起事件; 当发生所述抬起事件时,获取该抬起事件的标记,获取与所述抬起事件具有相同标记的底层控件,其中,所述 抬起事件的标记与该抬起事件对应的按下事件的标记相同; 根据获取到的底层控件执行与所述抬起事件相应的处理。
清除与所述抬起事件具有相同标记的所述底层控件的标记。
5.根据权利要求4所述的多控件触控方法,其特征在于,在所述清除所述底层控件的标记的步骤之后,所述方法还包括: 查找标记大于所述抬起事件的标记的底层控件,将该底层控件的标记减一。
6.一种多控件触控系统,其特征在于,包括: 监测模块,用于监测覆盖在多个底层控件上的一个透明控件的按下事件; 触控点位置获取模块,用于当发生所述按下事件时,获取所述按下事件的触控点的位置; 底层控件获取模块,用于根据所述触控点的位置获取所述按下事件对应的底层控件; 响应模块,用于根据获取到的至少两个底层控件执行与所述按下事件相应的处理。
7.根据权利要求6所述的多控件触控系统,其特征在于,所述底层控件获取模块用于获取所述透明控件下的所有底层控件的位置信息,根据所述触控点的位置和所述底层控件的位置信息获取触控点所在的底层控件。
8.根据权利要求6所述的多控件触控系统,其特征在于,所述系统还包括: 标记模块,用于获取按下事件的标记,设置与所述按下事件对应的底层控件的标记为所述按下事件的标记。
9.据权利要求8所述的多控件触控系统,其特征在于,所述监测模块还用于监测所述透明控件的抬起事件; 所述底层控件获取模块还用于当发生所述抬起事件时,获取该抬起事件的标记,获取与所述抬起事件具有相同标记的底层控件,其中,所述抬起事件的标记与该抬起事件对应的按下事件的标记相同;所述响应模块还用于根据获取到的底层控件执行与所述抬起事件相应的处理; 所述系统还包括: 标记清除模块,用于当发生所述抬起事件时,清除与所述抬起事件具有相同标记的所述底层控件的标记。
10.根据权利要求9所述的多控件触控系统,其特征在于,所述标记清除模块还用于查找标记大于所述抬起事件 的标记的底层控件,将该底层控件的标记减一。
全文摘要
一种多控件触控方法,包括以下步骤监测覆盖在多个底层控件上的一个透明控件的按下事件;当发生所述按下事件时,获取所述按下事件的触控点的位置;根据所述触控点的位置获取所述按下事件对应的底层控件;根据获取到的至少两个底层控件执行与所述按下事件相应的处理。由于同一个控件上支持多点触控,上述多控件触控方法通过监测覆盖在多个底层控件上的一个透明控件的多个按下事件,并获取该多个按下事件关联的多个触摸点的位置,根据触摸点的位置获取该多个按下事件对应的多个底层控件,进一步执行预设的与该多个底层控件相关的按下处理操作,从而达到同时操作多个底层控件的效果。此外,还提供一种多控件触控系统。
文档编号G06F3/041GK103176635SQ20111043583
公开日2013年6月26日 申请日期2011年12月22日 优先权日2011年12月22日
发明者衡阵 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1