布局信息处理方法、装置及电子设备
技术领域
本申请涉及互联网技术领域,更具体地,涉及一种布局信息处理方法、装置、电子设备及存储介质。
背景技术
随着智能终端例如智能手机平台的高速发展,人们对移动终端的需求也越来越高,Android智能手机系统也凭借自己开源的特点越来越显现出其优势,各种丰富多彩的应用也让我们的生活更加有趣。在Android应用的开发工程中,View的摆放位置往往会根据另外一个View的位置的摆放情况来做处理,最常见的是在xml布局文件中灵活采用相对布局、线性布局、贞布局等对内部的子View进行布局处理,也有通过代码来实现不同RootView间内部子View的布局信息的共享行为。然而,现有技术在实现不同RootView间内部子View的布局信息的共享行为时开发成本以及维护成本较高,引入更高的代码复杂度。
发明内容
鉴于上述问题,本申请提出了一种布局信息处理方法、装置、电子设备及存储介质,以改善上述问题。
第一方面,本申请实施例提供了一种布局信息处理方法,应用于电子设备,该方法包括:获取第一组件发送的布局变化通知消息,所述布局变化通知消息表征所述第一组件的布局变化,所述布局变化通知消息在所述第一组件的布局发生变化时由所述第一组件生成;将所述布局变化通知消息发送给与所述第一组件关联的第二组件,以使所述第二组件基于所述布局变化通知消息调整所述第二组件的布局。
第二方面,本申请实施例提供了一种布局信息处理装置,运行于电子设备,该装置包括:获取单元,用于获取第一组件发送的布局变化通知消息,所述布局变化通知消息表征所述第一组件的布局变化,所述布局变化通知消息在所述第一组件的布局发生变化时由所述第一组件生成;发送单元,用于将所述布局变化通知消息发送给与所述第一组件关联的第二组件,以使所述第二组件基于所述布局变化通知消息调整所述第二组件的布局。
第三方面,本申请实施例提供了一种电子设备,包括存储器以及一个或多个处理器;一个或多个程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序配置用于执行上述第一方面所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有程序代码,其中,在程序代码由处理器运行时执行上述第一方面所述的方法。
本申请实施例提供的一种布局信息处理方法、装置、电子设备以及存储介质。本方法通过获取第一组件发送的布局变化通知消息,布局变化通知消息表征第一组件的布局变化,布局变化通知消息在第一组件的布局发生变化时由第一组件生成,然后将布局变化通知消息发送给与第一组件关联的第二组件,以使第二组件基于布局变化通知消息调整第二组件的布局。从而通过上述方式实现了在获取了第一组件的布局变化信息的情况下,将布局变化信息发送给与第一组件关联的第二组件,使得第二组件可以直接基于布局变化信息调整第二组件的布局,而不需要去询问第一组件以获取布局变化信息,减少了代码复杂度,进而降低了开发成本与维护成本。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出了本申请一实施例提供的一种布局信息处理方法的方法流程图。
图2示出了本申请另一实施例提供的一种布局信息处理方法的方法流程图。
图3示出了图2中的步骤S230的方法流程图。
图4示出了本实施例中的第一组件以及第二组件的显示样式的一示例图。
图5示出了本实施例中的第一组件以及第二组件的显示样式的另一示例图。
图6示出了本申请又一实施例提供的一种布局信息处理方法的方法流程图。
图7示出了本申请再一实施例提供的一种布局信息处理方法的方法流程图。
图8示出了本申请再一实施例提供的一种布局信息处理方法的方法流程图。
图9示出了本申请实施例提供的布局信息处理方法的一具体示例的流程图。
图10示出了本申请实施例提供的一种布局信息处理装置的结构框图。
图11示出了本申请实施例提供的一种电子设备的结构框图。
图12示出了本申请实施例的用于保存或者携带实现根据本申请实施例的布局信息处理方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请实施例中,View表示与用户交互的元素,可以是按钮,输入框,文本标签或图片等组件,RootView表示Android中一个xml布局文件的最顶层的View,RootView内部可以包含其他的子View(RootView也是一个View)。Activity表示Android应用中的一个应用界面,Fragment是Android应用的应用界面的更小单位的元素代表,一个Activity可以包括多个Fragment。
随着智能终端例如智能手机平台的高速发展,人们对移动终端的需求也越来越高,Android智能手机系统也凭借自己开源的特点越来越显现出其优势,各种丰富多彩的应用也让我们的生活更加有趣。在Android应用的开发工程中,View的摆放位置往往会根据另外一个View的位置的摆放情况来做处理,最常见的是在xml布局文件中灵活采用相对布局、线性布局、贞布局等对内部的子View进行布局处理,也有通过代码来实现不同RootView间内部子View的布局信息的共享行为。然而,现有技术在实现不同RootView间内部子View的布局信息的共享行为时开发成本以及维护成本较高,引入更高的代码复杂度。
针对上述的问题,发明人经过长期的研究发现,可以通过获取第一组件发送的布局变化通知消息,布局变化通知消息表征第一组件的布局变化,布局变化通知消息在第一组件的布局发生变化时由第一组件生成,然后将布局变化通知消息发送给与第一组件关联的第二组件,以使第二组件基于布局变化通知消息调整第二组件的布局。从而通过上述方式实现了在获取了第一组件的布局变化信息的情况下,将布局变化信息发送给与第一组件关联的第二组件,使得第二组件可以直接基于布局变化信息调整第二组件的布局,而不需要去询问第一组件以获取布局变化信息,减少了代码复杂度,进而降低了开发成本与维护成本。因此,提出了本申请实施例提供的一种布局信息处理方法、装置、电子设备及存储介质。
下面将结合附图具体描述本申请的各实施例。
请参阅图1,示出了本申请一实施例提供的一种布局信息处理方法的流程图,本实施例提供一种布局信息处理方法,可应用于电子设备,该方法包括:
步骤S110:获取第一组件发送的布局变化通知消息。
本实施例中,组件可以表示配置的应用程序(这些应用程序可以安装在电子设备中)的显示界面与用户交互的元素。例如,这些元素可以是应用程序的显示界面的按钮、输入框、文本标签或图片等。可选的,应用程序的显示界面可以包括多个组件。作为一种实施方式,本实施例中应用程序的显示界面的组件可以包括第一组件与第二组件。可选的,第二组件的布局样式依赖于第一组件的布局样式,在第一组件的布局样式改变后,第二组件的布局样式也会随之改变。
本实施例中,布局变化通知消息表征第一组件的布局变化,布局变化可以包括第一组件的长度、宽度或者高度等发生变化,或者是第一组件的布局样式发生变化。布局变化通知消息可以在第一组件的布局发生变化时由第一组件生成。例如,在某直播APP的显示界面的第一组件随着直播画面的变化而发生变化时,该第一组件可以生成布局变化通知消息。
可选的,电子设备中可以配置用于管理组件的布局变化数据管理模块,该数据管理模块可以在第一组件的布局样式发生改变后,将第一组件的布局变化通知消息发送给第二组件,使得第二组件可以根据布局变化通知消息及时的改变第二组件的布局。作为一种方式,第一组件可以主动上传所生成的布局变化通知消息给数据管理模块,从而可以实现获取第一组件发送的布局变化通知消息。作为另一种方式,数据管理模块可以将接收到的由其他第二组件(可选的,可以是一个或者多个第二组件)发送的布局变化请求,发送给对应的第一组件,使得可以接收第一组件返回的与布局变化请求对应的布局变化通知消息,从而实现获取第一组件发送的布局变化通知消息。
可选的,本实施例中的第一组件可以是被其他组件依赖的任意组件,在该种方式下,其他组件为第二组件。第一组件可以是一个或者多个组件。可选的,若第一组件是一个组件,第二组件可以是一个或者多个组件。例如,假设某一APP显示界面包括组件1、组件2、组件3、组件4、组件5以及组件6,若第一组件为组件1,那么组件2、组件3、组件4、组件5以及组件6或者他们之间的任意组合可以为第二组件。若第一组件为组件1和组件3,那么组件2、组件4、组件5以及组件6可以均为第二组件。可选的,本实施例中,第一组件以及第二组件的数量可以不作限定。
步骤S120:将所述布局变化通知消息发送给与所述第一组件关联的第二组件,以使所述第二组件基于所述布局变化通知消息调整所述第二组件的布局。
作为一种方式,在获取了第一组件的布局变化通知消息之后,可以将布局变化通知消息发送给与第一组件关联的第二组件,以使得第二组件可以基于布局变化通知消息调整第二组件的布局。
例如,在一个具体的应用场景中,假设第一组件为某直播APP的直播间显示页面的左边的“主播信息控件”,第二组件为该直播APP的直播间显示页面的右边的“用户在线列表控件”,若第一组件(主播信息控件)距离电子设备的显示屏幕的顶部(即电子设备的上边缘)的距离发生了变化,可以生成包含该变化的布局变化通知消息。可选的,电子设备的数据管理模块可以获取该布局变化通知消息,并将该布局变化通知消息发送给第二组件(用户在线列表控件),使得第二组件(用户在线列表控件)可以基于布局变化通知消息调整用户在线列表控件与电子设备的显示屏幕的顶部的距离,使得用户在线列表控件的布局与主播信息控件的布局保持平齐(例如,可以是水平对齐)。通过由数据管理模块将布局变化通知消息直接发送给第二组件,减少了代码复杂度,从而实现了降低开发难度。
本实施例提供的布局信息处理方法,通过获取第一组件发送的布局变化通知消息,布局变化通知消息表征第一组件的布局变化,布局变化通知消息在第一组件的布局发生变化时由第一组件生成,然后将布局变化通知消息发送给与第一组件关联的第二组件,以使第二组件基于布局变化通知消息调整第二组件的布局。从而通过上述方式实现了在获取了第一组件的布局变化信息的情况下,将布局变化信息发送给与第一组件关联的第二组件,使得第二组件可以直接基于布局变化信息调整第二组件的布局,而不需要去询问第一组件以获取布局变化信息,减少了代码复杂度,进而降低了开发成本与维护成本。
请参阅图2,示出了本申请另一实施例提供的一种布局信息处理方法的流程图,本实施例提供一种布局信息处理方法,可应用于电子设备,该方法包括:
步骤S210:获取第一组件发送的布局变化通知消息。
步骤S220:基于所述布局变化通知消息获取当前所述电子设备的显示状态。
可选的,本实施例中,电子设备的显示状态可以理解为用户手握电子设备观看电子设备的姿态,例如,假设用户正向拿着电子设备以竖屏模式观看,那么电子设备的显示状态可以是正向竖屏状态;而若用户正向拿着电子设备以横屏模式观看,那么电子设备的显示状态可以是正向横屏状态;若用户倒向拿着电子设备以竖屏模式观看,那么电子设备的显示状态可以是倒向竖屏状态;若用户倒向拿着电子设备以横屏模式观看,那么电子设备的显示状态可以是倒向横屏状态。
可选的,电子设备处于不同的显示状态下对应的布局变化通知消息的格式可以不同,可以基于获取到的布局变化通知消息的内容格式获取当前电子设备的显示状态。
步骤S230:获取与所述显示状态匹配的调整模式。
作为一种方式,在获取了当前电子设备的显示状态之后,可以获取与显示状态匹配的调整模式。其中,调整模式为调整组件的布局的调整方式,不同的显示状态对应的调整方式可以不同。例如,电子设备以正向竖屏状态显示时的调整方式,与其以正向横屏状态显示时的调整方式可以不同;电子设备以正向竖屏状态显示时的调整方式,与其以倒向竖屏状态显示时的调整方式可以不同等,在此不再一一列举。
可选的,可以预先配置不同的显示状态对应的调整模式,将调整模式与显示状态进行映射关联后存储与电子设备中配置的数据管理模块,以便于在获取了当前电子设备的显示状态之后,可以快速获取与显示状态匹配的调整模式。
请参阅图3,作为一种方式,步骤S230可以包括:
步骤S231:若所述显示状态为第一显示状态,获取与所述第一显示状态匹配的第一调整模式。
可选的,本实施例中的第一显示状态可以为竖屏状态。竖屏状态可以包括正向竖屏状态以及倒向竖屏状态,可选的,竖屏状态对应的布局文件可以包括竖屏标识,正向竖屏状态以及倒向竖屏状态对应的竖屏标识的格式可以不同,正向竖屏状态以及倒向竖屏状态对应的调整模式可以相同。
作为一种方式,若显示状态为第一显示状态,可以获取与第一显示状态匹配的第一调整模式。其中,第一调整模式为与竖屏状态对应的调整模式。可以理解的是,电子设备的显示状态处于正向竖屏状态和倒向竖屏状态时所对应的调整模式可以相同。
例如,在一个具体的应用场景中,请参阅图4,为电子设备的显示状态为第一显示状态的一示例图。如图4所示,电子设备100的显示界面101显示有第一组件102以及第二组件103,电子设备100当前的显示状态为正向竖屏状态,则可以获取与正向竖屏状态匹配的第一调整模式,以便于可以使第二组件基于第一调整模式调整第二组件的布局。在该种方式下,若第一组件的位置发生了变化,第二组件可以基于第一调整模式调整第二组件距离电子设备处于正向竖屏状态时的上边缘以及右边缘(或是左边缘)的位置。
步骤S232:若所述显示状态为第二显示状态,获取与所述第二显示状态匹配的第二调整模式。
可选的,本实施例中的第二显示状态可以为横屏状态,横屏状态可以包括正向横屏状态以及倒向横屏状态。可选的,正向横屏状态以及倒向横屏状态所对应的调整模式可以相同。
作为一种方式,若检测到电子设备的显示状态为第二显示状态,可以获取与第二显示状态匹配的调整模式,以使得第二组件可以基于第一组件的布局变化通知消息,以与第二显示状态匹配的调整模式调整第二组件的布局。
例如,在一个具体的应用场景中,请参阅图5,为电子设备的显示状态为第二显示状态的一示例图。如图5所示,电子设备100当前的显示状态为横屏状态,电子设备100的显示界面101显示有第一组件102以及第二组件103,第二组件103的布局变化依赖于第一组件102的布局变化。可选的,在该种方式下,若第一组件102的布局发生了变化,第二组件103的布局可以基于第一组件的布局变化通知消息,以与第二显示状态匹配的调整模式调整第二组件距离电子设备处于正向横屏状态时的上边缘以及右边缘(或是左边缘)的位置。
可选的,本实施例中的第二组件可以包括多个组件,如图4或图5所示,组件104可以为第二组件,组件104的布局变化可以依赖于第一组件102的布局变化。
步骤S240:将所述布局变化通知消息发送给与所述第一组件关联的第二组件,以使所述第二组件基于所述布局变化通知消息,以对应的所述调整模式调整所述第二组件的布局。
可选的,在获取了与电子设备的显示状态对应的调整模式之后,可以将第一组件的布局变化通知消息发送给与第一组件关联的第二组件,以使得第二组件可以基于布局变化通知消息,以对应的调整模式调整第二组件的布局。
本实施例提供的布局信息处理方法,通过获取第一组件发送的布局变化通知消息,继而基于布局变化通知消息获取当前电子设备的显示状态,再获取与显示状态匹配的调整模式,然后将布局变化通知消息发送给与第一组件关联的第二组件,以使第二组件基于布局变化通知消息,以对应的调整模式调整第二组件的布局。从而通过上述方式实现了在获取了第一组件的布局变化信息的情况下,将布局变化信息发送给与第一组件关联的第二组件,使得第二组件可以基于布局变化通知消息,以与当前电子设备的显示状态所匹配的调整模式调整第二组件的布局,实现了有针对性的对第二组件的布局进行调整,降低了开发过程中的代码复杂度。
请参阅图6,示出了本申请又一实施例提供的一种布局信息处理方法的流程图,本实施例提供一种布局信息处理方法,可应用于电子设备,该方法包括:
步骤S310:获取第一组件发送的布局变化通知消息。
步骤S320:分别获取所述多个第二组件与所述第一组件的关联等级。
本实施例中,第二组件可以包括多个第二组件,例如,如图4或5所示,电子设备100的显示界面可以包括第二组件103及第二组件104,可选的,实际实现时可以有更多或更少的第二组件,图4或图5中仅示出了两个,并不构成对本方案的限定。可选的,多个第二组件的布局可以依赖于第一组件的布局,即多个第二组件的布局可以随着第一组件的布局的变化而变化。
可以理解的是,多个第二组件与第一组件的距离,以及多个第二组件与与第一组件的布局结构可以不同。可选的,可以通过多个第二组件分别距离第一组件的距离,分别获取多个第二组件与第一组件的关联等级,第二组件距离第一组件的距离越小对应的关联等级越大。例如,假设如图5所示的第一组件102的布局随着直播画面内容的切换发生了变化,距离第一组件102较近的第二组件103可能会需要调整布局,而距离第一组件103较远的第二组件104则可以不调整布局,或者说先调整第二组件103的布局,再调整第二组件104的布局。
步骤S330:按照所述关联等级将所述布局变化通知消息分别发送给与所述第一组件关联的所述多个第二组件,以使所述多个第二组件基于所述布局变化通知消息调整所述多个第二组件的布局。
作为一种方式,可以按照关联等级将第一组件的布局变化消息分别发送给与第一组件关联的多个第二组件,以便于多个第二组件可以分别基于布局变化通知消息调整对应的布局。其中,关联等级越高,发送布局变化通知消息的发送顺序可以越靠前。例如,如图5所示,假设第二组件103与第一组件102的关联等级高于第二组件104与第一组件102的关联等级,那么可以先将第一组件101的布局变化通知消息发送给第二组件103,等到第二组件103的布局变化之后,再将第一组件101的布局变化通知消息发送给第二组件104,以使第二组件104基于布局变化通知消息调整第二组件104的布局。
本实施例提供的布局信息处理方法,通过获取第一组件发送的布局变化通知消息,继而分别获取多个第二组件与第一组件的关联等级,然后按照关联等级将布局变化通知消息分别发送给与第一组件关联的多个第二组件,以使多个第二组件基于布局变化通知消息调整多个第二组件的布局。从而通过上述方式实现了在获取了第一组件的布局变化信息的情况下,按照多个第二组件与第一组件的关联等级所对应的顺序,依次将布局变化通知消息发送给多个与第一组件关联的第二组件,实现了布局变化消息的有序发送,进而实现了多个第二组件的布局的有序调整,从而保持了多个第二组件的布局调整的衔接性与美观度。
请参阅图7,示出了本申请再一实施例提供的一种布局信息处理方法的流程图,本实施例提供一种布局信息处理方法,可应用于电子设备,该方法包括:
步骤S410:获取第一组件发送的布局变化通知消息。
步骤S420:分别获取所述多个第二组件与所述第一组件的关联等级。
步骤S430:获取与所述关联等级对应的调整顺序。
可选的,在获取了多个第二组件分别与第一组件的关联等级之后,可以基于关联等级获取对多个第二组件的布局的调整顺序。可选的,关联等级越高,调整顺序可以越靠前。
步骤S440:按照所述关联等级将所述布局变化通知消息分别发送给与所述第一组件关联的所述多个第二组件,以使所述多个第二组件基于所述布局变化通知消息,按照所述调整顺序依次调整所述多个第二组件的布局。
可以理解的是,为了保证电子设备的显示界面的所有组件的布局的美观度,可以在按照多个第二组件分别与第一组件的关联等级将布局变化通知消息分别发送给与第一组件关联的多个第二组件之后,配置使多个第二组件基于布局变化通知消息,按照对应的调整顺序依次调整多个第二组件的布局。
例如,如图5所示,假设第二组件103与第一组件102的关联等级高于第二组件104与第一组件102的关联等级,那么可以先将第一组件101的布局变化通知消息发送给第二组件103,在第二组件103的布局变化之后,再将第一组件101的布局变化通知消息发送给第二组件104,使第二组件104基于第一组件101以及第二组件103的布局变化结果调整第二组件104的布局。
本实施例提供的布局信息处理方法,通过获取第一组件发送的布局变化通知消息,继而分别获取多个第二组件与第一组件的关联等级,再获取与关联等级对应的调整顺序,然后按照关联等级将布局变化通知消息分别发送给与第一组件关联的多个第二组件,以使多个第二组件基于布局变化通知消息,按照调整顺序依次调整多个第二组件的布局。从而通过上述方式实现了在获取了第一组件的布局变化信息的情况下,按照多个第二组件与第一组件的关联等级所对应的顺序,依次将布局变化通知消息发送给多个与第一组件关联的第二组件,实现了布局变化消息的有序发送;同时按照调整顺序依次调整多个第二组件的布局,实现了多个第二组件的布局的有序调整,进一步保持了多个第二组件的布局调整的衔接性与美观度,并减少了代码复杂度,减少开发维护成本。
请参阅图8,示出了本申请再一实施例提供的一种布局信息处理方法的流程图,本实施例提供一种布局信息处理方法,可应用于电子设备,该方法包括:
步骤S510:获取第一组件发送的布局变化通知消息。
步骤S520:获取与所述第一组件对应的组件标识。
可选的,本实施例中的第一组件与第二组件可以是具有不同功能的组件,不同的组件可以配置不同的组件标识,组件标识可以存储于第一组件的布局变化文件中。在获取第一组件发送的布局变化通知消息时,可以识别布局变化文件中携带的与第一组件对应的组件标识。
步骤S530:判断是否存在与所述组件标识匹配的布局变化请求。
可选的,第一组件可以包括多个第一组件,第二组件可以包括多个第二组件。可以理解的是,不同的第二组件的布局可以依赖于相同的第一组件的布局变化,也可以分别依赖于不同的第二组价的布局变化。
作为一种方式,可以判断是否存在与当前获取到的组件标识匹配的布局变化请求,具体的,可以遍历接收到的所有布局变换请求中携带的组件标识是否与当前获取到的组件标识相同。可选的,若相同,那么可以判定存在与当前接收到的组件标识匹配的布局变化请求;若不相同,那么可以判定不存在与当前接收到的组件标识匹配的布局变化请求。
步骤S540:执行所述将所述布局变化通知消息发送给与所述第一组件关联的第二组件,以使所述第二组件基于所述布局变化通知消息调整所述第二组件的布局。
作为一种方式,若存在与组件标识匹配的布局变化请求,那么可以执行将布局变化通知消息发送给与第一组件关联的第二组件,以使第二组件基于布局变化通知消息调整第二组件的布局的步骤。
步骤S550:将所述布局变化通知消息发送给与所述第一组件关联的第三组件,以使所述第三组件基于所述布局变化通知消息调整所述第三组件的布局。
作为另一种方式,若不存在与组件标识匹配的布局变化请求,那么可以判定当前的第一组件为电子设备的其他显示界面的组件,在这种方式下,可以将第一组件的布局变化通知消息发送给其他显示界面与第一组件关联的第三组件,以使第三组件可以基于第一组件的布局变化通知消息调整第三组件的布局。其中,第三组件为上述电子设备的其他显示界面的组件,可选的,第三组件的布局依赖于第一组件的布局变化。
例如,在一个具体的应用场景中,下面以图9为例对本实施例进行示例性的说明:
如图9所示,假设电子设备的当前页面的布局文件中包括一个活动容器AActivity,可选的,A Activity在启动的时候可以创建对应的订阅中心,如图9所示的订阅中心(A Activity),订阅中心(A Activity)可理解为电子设备中配置的用于管理电子设备的显示页面的组件的布局的数据管理模块。A Activity可以包括多个显示元素,多个显示元素可以为如图9所示的A Fragment,B Fragment,......Fragment。其中,A Fragment可以用第一组件A View表示,B Fragment可以用第二组件B View表示。作为一种方式,第二组件B View可以在订阅中心(A Activity)订阅其他组件的布局发生变化时的通知,例如,第二组件B View可以在订阅中心(A Activity)订阅第一组件A View的布局变化通知消息。第一组件A View在其布局发生变化时可以实时的生成布局变化通知消息,并将布局变化通知消息推送给订阅中心(A Activity),以便于订阅中心(A Activity)可以将布局变化通知消息发送给对应的订阅方。
作为一种实施方式,每一个组件可以配置有唯一的身份标识(ID),订阅中心(AActivity)可以根据该身份标识判断订阅方订阅的是哪一组件的布局变化通知消息,以及将布局变化通知消息依据该身份标识准确的返回给对应的订阅方。
可选的,若订阅中心(A Activity)在接收到某一组件发送的布局变化通知消息时,发现不存在对应的订阅方,那么可以进行容器切换,即由容器A Activity切换到容器BActivity。在该种方式下,发送布局变化通知消息的组件可以是容器B Activity中的组件。可选的,容器B Activity可以创建对应的订阅中心(B Activity),可以由订阅中心(BActivity)将布局变化通知消息发送给对应的订阅方所在的组件。可选的,在切换容器的过程中,可以使用ViewModel技术,或借助其自身可感知lifecycle的特性来自动实现订阅中心的创建销毁的自动化管理。
可选的,若某一容器中存在多个订阅方(可以理解为多个第二组件)同时关联一个共享方(可以理解为一个第一组件)时,可以使用RxJava2的BehaviorSubject类,实现将多个第二组件与第一组件关联,以使得多个第二组件可以根据第一组件的布局的变化而变化,而不需要去分别访问第一组件的对象,实现了降低开发过程中代码的复杂度,进而提升开发的效率,从而降低维护成本。
本实施例提供的布局信息处理方法,通过获取第一组件发送的布局变化通知消息,继而获取与第一组件对应的组件标识,再判断是否存在与组件标识匹配的布局变化请求,然后按照判断结果将布局变化通知消息发送给对应的组件,以使该组件基于布局变化通知消息调整组件的布局。从而通过上述方式实现了在获取了第一组件的布局变化信息的情况下,依据组件标识将布局变化信息发送给与第一组件对应关联的组件,使得该对应关联的组件可以直接基于布局变化信息调整组件的布局,而不需要去询问第一组件以获取布局变化信息,减少了代码复杂度,进而降低了开发成本与维护成本。
请参阅图10,为本申请实施例提供的一种布局信息处理装置的结构框图,本实施例提供一种布局信息处理装置600,运行于电子设备,所述装置600包括:获取单元610以及发送单元620:
获取单元610,用于获取第一组件发送的布局变化通知消息,所述布局变化通知消息表征所述第一组件的布局变化,所述布局变化通知消息在所述第一组件的布局发生变化时由所述第一组件生成。
发送单元620,用于将所述布局变化通知消息发送给与所述第一组件关联的第二组件,以使所述第二组件基于所述布局变化通知消息调整所述第二组件的布局。
可选的,装置600还可以包括状态获取单元以及调整模式获取单元,状态获取单元用于在获取第一组件发送的布局变化通知消息之后,基于所述布局变化通知消息获取当前所述电子设备的显示状态。调整模式获取单元用于获取与所述显示状态匹配的调整模式。在这种方式下,发送单元620具体可以用于将所述布局变化通知消息发送给与所述第一组件关联的第二组件,以使所述第二组件基于所述布局变化通知消息,以对应的所述调整模式调整所述第二组件的布局。
其中,获取与所述显示状态匹配的调整模式可以包括:若所述显示状态为第一显示状态,获取与所述第一显示状态匹配的第一调整模式;若所述显示状态为第二显示状态,获取与所述第二显示状态匹配的第二调整模式。可选的,所述第一显示状态可以为竖屏状态,所述第二显示状态可以为横屏状态。
可选的,第二组件可以包括多个第二组件。作为一种方式,可以分别获取所述多个第二组件与所述第一组件的关联等级;然后按照所述关联等级将所述布局变化通知消息分别发送给与所述第一组件关联的所述多个第二组件,其中,所述关联等级越高发送顺序越靠前。
作为一种方式,可以获取与所述关联等级对应的调整顺序,在该种方式下,可以使所述多个第二组件基于所述布局变化通知消息,按照所述调整顺序依次调整所述多个第二组件的布局。
作为一种方式,装置600还可以包括请求检测单元,用于在获取第一组件发送的布局变化通知消息之后,获取与所述第一组件对应的组件标识,然后判断是否存在与该组件标识对应的布局变化请求。可选的,若不存在与所述组件标识匹配的布局变化请求,可以将所述布局变化通知消息发送给与所述第一组件关联的第三组件,以使所述第三组件基于所述布局变化通知消息调整所述第三组件的布局;若存在与所述组件标识匹配的布局变化请求,则执行所述将所述布局变化通知消息发送给与所述第一组件关联的第二组件,以使所述第二组件基于所述布局变化通知消息调整所述第二组件的布局。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,所显示或讨论的模块相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参阅图11,基于上述的布局信息处理方法及装置,本申请实施例还提供了一种可以执行前述布局信息处理方法的电子设备100。电子设备100包括存储器102以及相互耦合的一个或多个(图中仅示出一个)处理器104,存储器102以及处理器104之间通信线路连接。存储器102中存储有可以执行前述实施例中内容的程序,而处理器104可以执行存储器102中存储的程序。
其中,处理器104可以包括一个或者多个处理核。处理器104利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器102内的指令、程序、代码集或指令集,以及调用存储在存储器102内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器104可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器104可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器104中,单独通过一块通信芯片进行实现。
存储器102可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器102可用于存储指令、程序、代码、代码集或指令集。存储器102可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现前述各个实施例的指令等。存储数据区还可以存储电子设备100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图12,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读存储介质700中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质700可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质700包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质700具有执行上述方法中的任何方法步骤的程序代码710的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码710可以例如以适当形式进行压缩。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。