著录项信息
专利名称 | 控件拖拽方法和装置 |
申请号 | CN201210587550.9 | 申请日期 | 2012-12-28 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2013-04-17 | 公开/公告号 | CN103049272A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/44 | IPC分类号 | G;0;6;F;9;/;4;4;;;G;0;6;F;3;/;0;4;8;6查看分类表>
|
申请人 | 北京新媒传信科技有限公司 | 申请人地址 | 北京市海淀区万泉庄路28号万柳新贵大厦A座602室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京新媒传信科技有限公司 | 当前权利人 | 北京新媒传信科技有限公司 |
发明人 | 胡立宁 |
代理机构 | 北京三高永信知识产权代理有限责任公司 | 代理人 | 关文魁 |
摘要
本发明公开了一种控件拖拽方法和装置,属于拖拽技术领域。所述方法包括:当第一容器内的控件被拖拽出第一容器时,获取所述控件的属性;如果支持容器外拖拽,则将所述控件从第一容器中移除,生成拖拽源;当拖拽结束时,获取所述控件当前的位置;如果该位置位于第二容器中,则将所述拖拽源发送给第二容器,由第二容器决定是否接收所述拖拽源;如果该位置无容器,由第一容器的业务逻辑层判断是否进行处理,若进行处理,则生成一个新的容器,将所述拖拽源发送给新的容器,由新的容器接收并显示所述拖拽源。所述装置包括:第一容器,该第一容器包括第一处理模块和第二处理模块。本发明实现了跨容器的控件拖拽,提高了控件布局的灵活性。
1.一种控件拖拽方法,其特征在于,所述方法包括:
当第一容器内的控件被拖拽出所述第一容器时,获取所述控件的属性;
如果所述控件的属性支持容器外拖拽,则将所述控件从所述第一容器中移除,生成所述控件的拖拽源,所述控件的拖拽源包括所述控件加载的页面的相关信息,当所述控件被拖拽时,所述控件加载的页面也被拖拽,当所述控件在新的位置显示时,所述页面也被显示;
当拖拽结束时,获取所述控件当前的位置;
如果所述位置位于第二容器中,则将所述控件的拖拽源发送给所述第二容器,由所述第二容器决定是否接收所述控件的拖拽源;
如果所述位置无容器,由所述第一容器的业务逻辑层判断是否对所述拖拽进行处理,如果对所述拖拽进行处理,则生成一个新的容器,将所述控件的拖拽源发送给所述新的容器,由所述新的容器接收并显示所述控件的拖拽源;如果不对所述拖拽进行处理,则所述第一容器恢复已被移除的所述控件;所述第一容器、所述第二容器和所述新的容器为同一个应用程序内的容器,所述控件为所述应用程序内的控件;
在所述控件在所述第一容器内移动的过程中,动画显示被所述控件挤压的各个控件的移动过程,其中,每一个被挤压的控件均从原来所在的位置,沿着与被拖拽的所述控件移动的相反方向,移动至相邻的位置处。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述控件的拖拽源发送给所述第二容器后,所述第二容器根据所述拖拽源判断所述控件的名称是否符合预设的命名条件;
如果所述控件的名称符合预设的命名条件,则所述第二容器允许所述控件停靠,接收所述控件的拖拽源并在所述第二容器中显示所述控件的拖拽源;
如果所述控件的名称不符合预设的命名条件,则所述第二容器拒绝接收所述控件的拖拽源。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述控件的属性支持容器外拖拽,则按照预设的透明度生成所述控件的虚影,在界面上显示所述虚影,且使所述虚影随所述控件的移动而移动;
当拖拽结束时,停止显示所述虚影。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
将所述控件从所述第一容器中移除后,判断所述第一容器中是否还有其它控件,如果没有其它控件,则由所述第一容器的业务逻辑层决定是否销毁所述第一容器。
5.一种控件拖拽装置,其特征在于,所述装置包括第一容器,所述第一容器包括:
第一处理模块,用于当所述第一容器内的控件被拖拽出所述第一容器时,获取所述控件的属性;如果所述控件的属性支持容器外拖拽,则将所述控件从所述第一容器中移除,生成所述控件的拖拽源;
第二处理模块,用于当拖拽结束时,获取所述控件当前的位置;如果所述位置位于第二容器中,则将所述控件的拖拽源发送给所述第二容器,由所述第二容器决定是否接收所述控件的拖拽源,所述控件的拖拽源包括所述控件加载的页面的相关信息,当所述控件被拖拽时,所述控件加载的页面也被拖拽,当所述控件在新的位置显示时,所述页面也被显示;
如果所述位置无容器,由所述第一容器的业务逻辑层判断是否对所述拖拽进行处理,如果对所述拖拽进行处理,则生成一个新的容器,将所述控件的拖拽源发送给所述新的容器,由所述新的容器接收并显示所述控件的拖拽源;如果不对所述拖拽进行处理,则所述第一容器恢复已被移除的所述控件;所述第一容器、所述第二容器和所述新的容器为同一个应用程序内的容器,所述控件为所述应用程序内的控件;
动画显示模块,用于在所述控件在所述第一容器内移动的过程中,动画显示被所述控件挤压的各个控件的移动过程,其中,每一个被挤压的控件均从原来所在的位置,沿着与被拖拽的所述控件移动的相反方向,移动至相邻的位置处。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括所述第二容器,所述第二容器包括:
判断模块,用于当所述第一容器的第二处理模块将所述控件的拖拽源发送给所述第二容器后,根据所述拖拽源判断所述控件的名称是否符合预设的命名条件;
控制模块,用于如果所述控件的名称符合预设的命名条件,则允许所述控件停靠,接收所述控件的拖拽源并在所述第二容器中显示所述控件的拖拽源;如果所述控件的名称不符合预设的命名条件,则拒绝接收所述控件的拖拽源。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括:
虚影处理模块,用于如果所述控件的属性支持容器外拖拽,则按照预设的透明度生成所述控件的虚影,在界面上显示所述虚影,且使所述虚影随所述控件的移动而移动;当拖拽结束时,停止显示所述虚影。
8.根据权利要求5至7中任一项所述的装置,其特征在于,所述第一处理模块还用于:
将所述控件从所述第一容器中移除后,判断所述第一容器中是否还有其它控件,如果没有其它控件,则由所述第一容器的业务逻辑层决定是否销毁所述第一容器。
控件拖拽方法和装置\n技术领域\n[0001] 本发明涉及拖拽技术领域,特别涉及一种控件拖拽方法和装置。\n背景技术\n[0002] 目前,很多种应用程序都支持拖拽的功能。拖拽是将应用程序中的某些控件通过鼠标或手指拖放操作,从原来的位置移动到其它位置的过程。当鼠标或手指按下某一控件并且按住开始拖拽时,该控件会随着鼠标或手指的移动而移动,当鼠标或手指放开该控件时,拖拽结束,该控件就停留在鼠标或手指放开时的位置。用户通过拖拽操作可以很方便地将控件移动到指定位置。\n[0003] 但是,目前的拖拽通常是仅支持容器内的拖拽,用户可以将一个控件从容器内的一个位置拖拽至另一个位置,当用户需要将控件拖拽至容器外的其它位置时,则无法实现。\n发明内容\n[0004] 为了实现跨容器的控件拖拽,本发明提供了一种控件拖拽方法和装置。所述技术方案如下:\n[0005] 一方面,本发明提供了一种控件拖拽方法,所述方法包括:\n[0006] 当第一容器内的控件被拖拽出所述第一容器时,获取所述控件的属性;\n[0007] 如果所述控件的属性支持容器外拖拽,则将所述控件从所述第一容器中移除,生成所述控件的拖拽源,所述控件的拖拽源包括所述控件加载的页面的相关信息,当所述控件被拖拽时,所述控件加载的页面也被拖拽,当所述控件在新的位置显示时,所述页面也被显示;\n[0008] 当拖拽结束时,获取所述控件当前的位置;\n[0009] 如果所述位置位于第二容器中,则将所述控件的拖拽源发送给所述第二容器,由所述第二容器决定是否接收所述控件的拖拽源;\n[0010] 如果所述位置无容器,由所述第一容器的业务逻辑层判断是否对所述拖拽进行处理,如果对所述拖拽进行处理,则生成一个新的容器,将所述控件的拖拽源发送给所述新的容器,由所述新的容器接收并显示所述控件的拖拽源;如果不对所述拖拽进行处理,则所述第一容器恢复已被移除的所述控件;所述第一容器、所述第二容器和所述新的容器为同一个应用程序内的容器,所述控件为所述应用程序内的控件;\n[0011] 在所述控件在所述第一容器内移动的过程中,动画显示被所述控件挤压的各个控件的移动过程,其中,每一个被挤压的控件均从原来所在的位置,沿着与被拖拽的所述控件移动的相反方向,移动至相邻的位置处。\n[0012] 其中,所述方法还包括:\n[0013] 将所述控件的拖拽源发送给所述第二容器后,所述第二容器根据所述拖拽源判断所述控件的名称是否符合预设的命名条件;\n[0014] 如果所述控件的名称符合预设的命名条件,则所述第二容器允许所述控件停靠,接收所述控件的拖拽源并在所述第二容器中显示所述控件的拖拽源;\n[0015] 如果所述控件的名称不符合预设的命名条件,则所述第二容器拒绝接收所述控件的拖拽源。\n[0016] 其中,所述方法还包括:\n[0017] 如果所述控件的属性支持容器外拖拽,则按照预设的透明度生成所述控件的虚影,在界面上显示所述虚影,且使所述虚影随所述控件的移动而移动;\n[0018] 当拖拽结束时,停止显示所述虚影。\n[0019] 其中,所述方法还包括:\n[0020] 将所述控件从所述第一容器中移除后,判断所述第一容器中是否还有其它控件,如果没有其它控件,则由所述第一容器的业务逻辑层决定是否销毁所述第一容器。\n[0021] 另一方面,本发明还提供了一种控件拖拽装置,所述装置包括第一容器,所述第一容器包括:\n[0022] 第一处理模块,用于当所述第一容器内的控件被拖拽出所述第一容器时,获取所述控件的属性;如果所述控件的属性支持容器外拖拽,则将所述控件从所述第一容器中移除,生成所述控件的拖拽源;\n[0023] 第二处理模块,用于当拖拽结束时,获取所述控件当前的位置;如果所述位置位于第二容器中,则将所述控件的拖拽源发送给所述第二容器,由所述第二容器决定是否接收所述控件的拖拽源,所述控件的拖拽源包括所述控件加载的页面的相关信息,当所述控件被拖拽时,所述控件加载的页面也被拖拽,当所述控件在新的位置显示时,所述页面也被显示;如果所述位置无容器,由所述第一容器的业务逻辑层判断是否对所述拖拽进行处理,如果对所述拖拽进行处理,则生成一个新的容器,将所述控件的拖拽源发送给所述新的容器,由所述新的容器接收并显示所述控件的拖拽源;如果不对所述拖拽进行处理,则所述第一容器恢复已被移除的所述控件;所述第一容器、所述第二容器和所述新的容器为同一个应用程序内的容器,所述控件为所述应用程序内的控件;\n[0024] 动画显示模块,用于在所述控件在所述第一容器内移动的过程中,动画显示被所述控件挤压的各个控件的移动过程,其中,每一个被挤压的控件均从原来所在的位置,沿着与被拖拽的所述控件移动的相反方向,移动至相邻的位置处。\n[0025] 其中,所述装置还包括所述第二容器,所述第二容器包括:\n[0026] 判断模块,用于当所述第一容器的第二处理模块将所述控件的拖拽源发送给所述第二容器后,根据所述拖拽源判断所述控件的名称是否符合预设的命名条件;\n[0027] 控制模块,用于如果所述控件的名称符合预设的命名条件,则允许所述控件停靠,接收所述控件的拖拽源并在所述第二容器中显示所述控件的拖拽源;如果所述控件的名称不符合预设的命名条件,则拒绝接收所述控件的拖拽源。\n[0028] 其中,所述装置还包括:\n[0029] 虚影处理模块,用于如果所述控件的属性支持容器外拖拽,则按照预设的透明度生成所述控件的虚影,在界面上显示所述虚影,且使所述虚影随所述控件的移动而移动;当拖拽结束时,停止显示所述虚影。\n[0030] 其中,所述第一处理模块还用于:\n[0031] 将所述控件从所述第一容器中移除后,判断所述第一容器中是否还有其它控件,如果没有其它控件,则由所述第一容器的业务逻辑层决定是否销毁所述第一容器。\n[0032] 本发明提供的技术方案带来的有益效果是:通过获取被拖拽至容器外的控件的属性,在所述属性支持容器外拖拽时,生成所述控件的拖拽源,并根据拖拽结束时控件当前的位置,将拖拽源发送给第二容器或者新的容器,由所述第二容器决定是否接收所述拖拽源,或者由新的容器接收并显示所述拖拽源,从而实现了跨容器的控件拖拽,提高了控件布局的灵活性,为用户提供了一种灵活的、可控的布局方式,能够达到用户根据自身喜好和需求来进行控件布局的效果。\n附图说明\n[0033] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。\n[0034] 图1是本发明一实施例提供的控件拖拽方法流程图;\n[0035] 图2是本发明另一实施例提供的控件拖拽方法流程图;\n[0036] 图3是本发明实施例提供的控件显示示意图;\n[0037] 图4是本发明一实施例提供的控件拖拽装置结构图;\n[0038] 图5是本发明另一实施例提供的控件拖拽装置结构图。\n具体实施方式\n[0039] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。\n[0040] 参见图1,本发明一实施例提供了一种控件拖拽方法,包括:\n[0041] 101:当第一容器内的控件被拖拽出第一容器时,获取该控件的属性。\n[0042] 102:如果该控件的属性支持容器外拖拽,则将该控件从第一容器中移除,生成该控件的拖拽源。\n[0043] 103:当拖拽结束时,获取该控件当前的位置。\n[0044] 104:如果该位置位于第二容器中,则将该控件的拖拽源发送给第二容器,由第二容器决定是否接收该控件的拖拽源;如果该位置无容器,由所述第一容器的业务逻辑层判断是否对所述拖拽进行处理,如果对所述拖拽进行处理,则生成一个新的容器,将该控件的拖拽源发送给新的容器,由新的容器接收并显示该控件的拖拽源。\n[0045] 本实施例中涉及的所有容器均是指同一个应用程序内的容器。通常一个应用程序可以包括多个容器,容器的载体是窗口,一个窗口内可以只包括一个容器,当然也可以包括多个容器。一个容器内可以包括一个控件,当然也可以包括多个控件。本实施例中涉及的控件是指应用程序内的控件,包括该应用程序提供的控件,以及用户根据该应用程序提供的功能自定义的控件等。\n[0046] 本实施例中,控件的属性通常有多种,如名称、大小、颜色、位置等等,本实施例主要涉及其中的一个属性,就是该控件是否支持容器外拖拽,如果一个控件具有支持容器外拖拽的属性,则当该控件被拖拽至容器外时按照上述方法执行相应的流程,如果一个控件不具有支持容器外拖拽的属性,则当该控件被拖拽至容器外时禁止该控件继续拖拽,仍然保留该控件在原来的容器中。\n[0047] 本实施例中,一个控件的拖拽源是指与该控件有关的各种信息,包括但不限于该控件本身的信息,以及该控件加载的页面的相关信息等等。当一个控件被拖拽时,不仅该控件本身被拖拽,相应地该控件加载的页面也被拖拽,当该控件在新的位置显示时,该页面也需要显示,以达到与该控件在原来的位置相同的显示效果。因此,在一个控件被拖拽时,为该控件生成包含控件本身以及加载页面的相关信息在内的拖拽源,令该拖拽源随控件移动而移动,增强了拖拽的效果,保证了拖拽后显示的完整性。\n[0048] 本实施例中的拖拽可以为用户通过鼠标点击触发的拖拽,或者也可以为用户通过触摸的方式触发的拖拽,本发明对此不做具体限定。本实施例提供的上述方法可以应用于计算机、笔记本电脑等等。\n[0049] 本实施例提供的上述方法,通过获取被拖拽至容器外的控件的属性,在所述属性支持容器外拖拽时,生成所述控件的拖拽源,并根据拖拽结束时控件当前的位置,将拖拽源发送给该位置所在的第二容器或者新的容器,由所述第二容器决定是否接收所述拖拽源,或者由新的容器接收并显示所述拖拽源,从而实现了跨容器的控件拖拽,提高了控件布局的灵活性,为用户提供了一种灵活的、可控的布局方式,能够达到用户根据自身喜好和需求来进行控件布局的效果。\n[0050] 参见图2,本发明另一实施例提供了一种控件拖拽方法,包括:\n[0051] 201:当第一容器内的控件被拖拽出第一容器时,第一容器获取该控件的属性。\n[0052] 本实施例中涉及的所有容器均是指同一个应用程序内的容器。通常一个应用程序可以包括多个容器,容器的载体是窗口,一个窗口内可以只包括一个容器,当然也可以包括多个容器。一个容器内可以包括一个控件,当然也可以包括多个控件。本实施例中涉及的控件是指应用程序内的控件,包括该应用程序提供的控件,以及用户根据该应用程序提供的功能自定义的控件等。\n[0053] 例如,参见图3,为本实施例提供的控件显示示意图。其中,在一个即时通讯应用程序中,一个容器内包括三个控件,分别为:“联系人”、“群/讨论组”和“最近联系人”。每个控件都显示有加载的页面,页面内显示与该控件有关的内容。如,“联系人”控件的页面中显示联系人列表,“群/讨论组”控件的页面显示群/讨论组的列表,“最近联系人”控件的页面显示最近联系人列表等等。\n[0054] 本实施例中,控件的属性通常有多种,如名称、大小、颜色、位置等等,本实施例主要涉及其中的一个属性,就是该控件是否支持容器外拖拽,如果一个控件具有支持容器外拖拽的属性,则当该控件被拖拽至容器外时按照上述方法执行相应的流程,如果一个控件不具有支持容器外拖拽的属性,则当该控件被拖拽至容器外时禁止该控件继续拖拽,仍然保留该控件在原来的容器中。\n[0055] 本实施例中的拖拽可以为用户通过鼠标点击触发的拖拽,或者也可以为用户通过触摸的方式触发的拖拽,本发明对此不做具体限定。本实施例提供的上述方法可以应用于计算机、笔记本电脑等等。\n[0056] 202:如果该控件的属性支持容器外拖拽,则将该控件从第一容器中移除,生成该控件的拖拽源。\n[0057] 本实施例中,一个控件的拖拽源是指与该控件有关的各种信息,包括但不限于该控件本身的信息,以及该控件加载的页面的相关信息等等。当一个控件被拖拽时,不仅该控件本身被拖拽,相应地该控件加载的页面也被拖拽,当该控件在新的位置显示时,该页面也需要显示,以达到与该控件在原来的位置相同的显示效果。因此,在一个控件被拖拽时,为该控件生成包含控件本身以及加载页面的相关信息在内的拖拽源,令该拖拽源随控件移动而移动,增强了拖拽的效果,保证了拖拽后显示的完整性。\n[0058] 本实施例中,如果该控件的属性不支持容器外拖拽,则保留该控件在第一容器中,禁止该控件向容器外拖拽。\n[0059] 进一步地,本步骤还可以包括:\n[0060] 如果该控件的属性支持容器外拖拽,则第一容器按照预设的透明度生成该控件的虚影,在界面上显示该虚影,且使该虚影随该控件的移动而移动。\n[0061] 所述预设的透明度可以根据需要设定,本发明对此不做具体限定,如可以设定为透明度为50%即半透明,或者也可以设定为其它的透明度如40%或60%等等。所述虚影除了透明度以外,其它的显示属性均与该控件相同,因此,从显示效果上看,所述虚影就相当于该控件的一个复制,区别仅在于透明度不同。其中,使该虚影随控件的移动而移动,可以让用户看到控件的移动效果,更直观地表达了控件的拖拽过程。\n[0062] 203:在该控件在第一容器内移动的过程中,第一容器动画显示被所述控件挤压的各个控件的移动过程,其中,每一个被挤压的控件均从原来所在的位置,沿着与被拖拽的控件移动的相反方向,移动至相邻的位置处。\n[0063] 以图3所示的容器为例,当拖拽“联系人”控件在“群/讨论组”控件、“最近联系人”控件表面向右移动时,“群/讨论组”控件、“最近联系人”控件会被移动中的“联系人”控件挤压向左移动,当“联系人”控件移动到“群/讨论组”控件上方时,“群/讨论组”控件则向左移动到“联系人”控件最初的位置,给“联系人”控件空出位置;当“联系人”控件继续移动到“最近联系人”控件上方时,“最近联系人”控件向左移动到最初“群/讨论组”控件的位置,将最右边的位置空出留给“联系人”控件,从而达到了动画显示的效果。\n[0064] 204:当拖拽结束时,第一容器获取被拖拽的该控件当前的位置。\n[0065] 205:第一容器判断已获取的该位置是否位于第二容器中或者该位置无容器,如果该位置位于第二容器中,则执行206;如果该位置无容器,则执行210。\n[0066] 206:第一容器将该控件的拖拽源发送给第二容器。\n[0067] 207:第二容器根据第一容器发来的拖拽源,判断该控件的名称是否符合预设的命名条件;如果该控件的名称符合预设的命名条件,则执行208;如果该控件的名称不符合预设的命名条件,则执行209。\n[0068] 本实施例中,所述预设的命名条件可以由业务层预先设定好,通过该命名条件可以过滤掉第二容器不希望接收和容纳的控件,进一步地提升了控件拖拽的灵活性。其中,控件的名称会包含在拖拽源中,第二容器可以从拖拽源中提取该控件的名称,并与预设的命名条件进行比较,从而判断出该控件的名称是否符合预设的命名条件,以决定是否接收该拖拽源。所述命名条件可以一种,或者也可以为多种条件的组合,本发明对此不做具体限定。\n[0069] 208:第二容器允许该控件停靠,接收该控件的拖拽源并在第二容器中显示该控件的拖拽源,流程结束。\n[0070] 具体地,当第二容器允许该控件停靠时,如果上述步骤中为该控件生成了虚影,则该控件移动进入第二容器后,停止显示该虚影,该虚影从第二容器所在的窗口内消失。如果第二容器内已经存在其它的控件,则当前拖拽的控件根据移动的位置与所述第二容器内已经存在的其它控件进行位置滑动的排序,直到拖拽结束。在该排序的过程中,可以按照步骤\n203中描述的方式进行动画显示,此处不赘述。\n[0071] 本实施例中,通过第二容器接收并显示被拖拽的控件,实现了被拖拽的控件合并到第二容器中,提供了跨容器拖拽控件的合并布局,该控件从第一容器中移除,实现了被拖拽的控件与原容器的分离,提供了跨容器拖拽控件的分离布局,从而有效地解决了跨容器控件拖拽的问题。\n[0072] 本实施例中,类似地,第二容器中的控件也可以实现跨容器的拖拽,如将第二容器内的控件拖拽至其它的容器中,或者从其它容器拖拽控件至第二容器中,或者将第二容器内的控件拖拽至无容器的位置,等等,具体过程与第一容器中控件的拖拽过程类似,此处不赘述。\n[0073] 209:第二容器拒绝接收该控件的拖拽源,第一容器恢复已被移除的该控件,流程结束。\n[0074] 210:由第一容器的业务逻辑层判断是否对所述拖拽进行处理,如果对所述拖拽进行处理,则生成一个新的容器,第一容器将该控件的拖拽源发送给该新的容器,该新的容器接收第一容器发来的该控件的拖拽源,并显示该控件的拖拽源,流程结束;如果不对所述拖拽进行处理,则第一容器恢复已被移除的该控件,流程结束。\n[0075] 本实施例提供的上述方法,进一步地还可以包括以下步骤:\n[0076] 将所述控件从第一容器中移除后,判断第一容器中是否还有其它控件,如果没有其它控件,则由第一容器的业务逻辑层决定是否销毁第一容器。如果第一容器的业务逻辑层决定销毁第一容器,则销毁第一容器,否则,保留第一容器。\n[0077] 本实施例提供的上述方法,通过获取被拖拽至容器外的控件的属性,在所述属性支持容器外拖拽时,生成所述控件的拖拽源,并根据拖拽结束时控件当前的位置,将拖拽源发送给第二容器或者新的容器,由所述第二容器决定是否接收所述拖拽源,或者由新的容器接收并显示所述拖拽源,从而实现了跨容器的控件拖拽,提高了控件布局的灵活性,为用户提供了一种灵活的、可控的布局方式,能够达到用户根据自身喜好和需求来进行控件布局的效果。\n[0078] 参见图4,本发明又一实施例还提供了一种控件拖拽装置,该装置包括第一容器\n40,第一容器40包括:\n[0079] 第一处理模块401,用于当第一容器40内的控件被拖拽出第一容器40时,获取该控件的属性;如果该控件的属性支持容器外拖拽,则将该控件从第一容器40中移除,生成该控件的拖拽源;\n[0080] 第二处理模块402,用于当拖拽结束时,获取该控件当前的位置;如果该位置位于第二容器中,则将该控件的拖拽源发送给第二容器,由第二容器决定是否接收该控件的拖拽源;如果该位置无容器,由第一容器的业务逻辑层判断是否对所述拖拽进行处理,如果对所述拖拽进行处理,则生成一个新的容器,将该控件的拖拽源发送给新的容器,由新的容器接收并显示该控件的拖拽源。\n[0081] 第一种实施方式下,上述装置还包括:\n[0082] 动画显示模块,用于在该控件在第一容器40内移动的过程中,动画显示被控件挤压的各个控件的移动过程,其中,每一个被挤压的控件均从原来所在的位置,沿着与被拖拽的控件移动的相反方向,移动至相邻的位置处。\n[0083] 参见图5,第二种实施方式下,上述装置还包括第二容器50,第二容器50包括:\n[0084] 判断模块501,用于当第一容器40的第二处理模块402将该控件的拖拽源发送给第二容器50后,根据该拖拽源判断该控件的名称是否符合预设的命名条件;\n[0085] 控制模块502,用于如果该控件的名称符合预设的命名条件,则允许该控件停靠,接收该控件的拖拽源并在第二容器50中显示该控件的拖拽源;如果该控件的名称不符合预设的命名条件,则拒绝接收该控件的拖拽源。\n[0086] 第三种实施方式下,上述装置还包括:\n[0087] 虚影处理模块,用于如果该控件的属性支持容器外拖拽,则按照预设的透明度生成控件的虚影,在界面上显示该虚影,且使该虚影随控件的移动而移动;当拖拽结束时,停止显示该虚影。\n[0088] 上述方法或者上述任一种实施方式中,第一处理模块401还可以用于:\n[0089] 将该控件从第一容器40中移除后,判断第一容器40中是否还有其它控件,如果没有其它控件,则由第一容器的业务逻辑层决定是否销毁第一容器40。\n[0090] 本实施例提供的上述装置可以执行上述任一方法实施例中提供的方法,详细过程见方法实施例中的描述,此处不赘述。\n[0091] 本实施例提供的上述装置,通过获取被拖拽至容器外的控件的属性,在所述属性支持容器外拖拽时,生成所述控件的拖拽源,并根据拖拽结束时控件当前的位置,将拖拽源发送给第二容器或者新的容器,由所述第二容器决定是否接收所述拖拽源,或者由新的容器接收并显示所述拖拽源,从而实现了跨容器的控件拖拽,提高了控件布局的灵活性,为用户提供了一种灵活的、可控的布局方式,能够达到用户根据自身喜好和需求来进行控件布局的效果。\n[0092] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。\n[0093] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2020-09-18
专利权人的姓名或者名称、地址的变更
专利权人由北京新媒传信科技有限公司变更为北京新媒传信科技有限公司
地址由100089 北京市海淀区万泉庄路28号万柳新贵大厦A座602室变更为100080 北京市海淀区海淀大街34号8层810室
- 2016-08-31
- 2013-05-15
实质审查的生效
IPC(主分类): G06F 9/44
专利申请号: 201210587550.9
申请日: 2012.12.28
- 2013-04-17
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |