CN109426541A - 一种页面换肤的方法和装置 - Google Patents
一种页面换肤的方法和装置 Download PDFInfo
- Publication number
- CN109426541A CN109426541A CN201710776127.6A CN201710776127A CN109426541A CN 109426541 A CN109426541 A CN 109426541A CN 201710776127 A CN201710776127 A CN 201710776127A CN 109426541 A CN109426541 A CN 109426541A
- Authority
- CN
- China
- Prior art keywords
- component
- page
- skin
- preset style
- style file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例提供了一种页面换肤的方法和装置,所述方法包括:接收与页面关联的预设样式文件,所述预设样式文件中配置有页面换肤时换肤组件的组件标识及对应的动态样式,获取页面的组件,所述组件具有组件标识,根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染。本申请实施例中,客户端获取页面的组件,然后根据下发的预设样式文件和组件的组件标识对组件进行样式渲染,以实现页面的换肤,在客户端仅需要增加获取页面的组件和根据组件标识确定是否配置动态样式的代码,无需每个组件都绑定一个动态样式,节省了客户端的代码量,降低了开发成本,且在客户端无需考虑组件和动态样式的绑定,提高了客户端的灵活性。
Description
技术领域
本申请涉及页面显示技术领域,特别是涉及一种页面换肤的方法和装置。
背景技术
随着网络技术的发展,人们通过应用程序在网络上获取各种信息,而应用程序的页面成为了人们与网络的交互媒介之一。页面的皮肤可以根据人们的喜好进行更换,又或者是页面按照预设的规则进行更换。
页面又称之为Activty,一个页面包括多个View(组件),View的样式决定了页面的皮肤。现有的页面换肤方式是通过下发样式表修改需要换肤的页面的View属性,对于一个View,在客户端的代码里对应一个View id,View id和View关联,并且View通过代码与一套样式关联,以实现动态换肤的效果。
现有的页面换肤方法,导致在客户端,对于页面的View,都要通过代码来关联需要更换的样式,这样就存在以下问题:
1)增加了客户端的代码量,提高了开发成本;
2)当需要修改View的样式或者之前View没有关联样式时,只能通过新增代码,升级客户端实现换肤,降低了客户端的灵活性。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种页面换肤的方法和装置。
为了解决上述问题,本申请实施例公开了一种页面换肤的方法,包括:
接收与页面关联的预设样式文件,所述预设样式文件中配置有所述页面换肤时换肤组件的组件标识及对应的动态样式;
获取所述页面的组件,所述组件具有组件标识;
根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染。
可选地,所述获取所述页面的组件的步骤包括:
获取所述页面的视图树,所述视图树的节点用于标记所述页面的一个组件;
遍历所述视图树,得到所述视图树的各个节点对应的组件;
将所述各个节点对应的组件确定为所述页面的组件。
可选地,所述视图树的节点对应的组件包括容器组件,所述容器组件包括多个组件,所述遍历所述视图树,得到所述视图树的多个节点对应的组件的步骤包括:
判断所述节点对应的是否是容器组件;
若是,则遍历所述节点直至所述节点的每个子节点对应的均是组件。
可选地,所述将所述各个节点对应的组件确定为所述页面的组件的步骤包括:
在所述各个节点对应的组件中,查找具有组件标识的组件;
判断所述具有组件标识的组件是否可见;
若是,则确定所述具有组件标识的组件有效;
若否,则确定所述具有组件标识的组件无效;
将所述有效的组件确定为所述页面的组件。
可选地,所述根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染的步骤包括:
对所述预设样式文件进行解析,得到所述页面的组件的组件标识和动态样式;
判断所述组件标识是否配置有动态样式;
若是,则获取所述组件标识对应的动态样式;
采用所述动态样式对所述组件标识对应的组件进行样式渲染。
可选地,在所述获取所述组件配置的动态样式,对所述组件进行样式渲染的步骤之后,还包括:
对所述容器组件设置监听;
当监听到对所述容器组件中的组件的调用时,获取调用的组件的组件标识;
当所述组件标识有效时,返回根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染的步骤。
可选地,所述预设样式文件采用JSON语法描述所述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项。
为了解决上述问题,本申请实施例公开了一种页面换肤的方法,包括:
当满足预设换肤条件时,获取与页面关联的预设样式文件;
将所述预设样式文件发送至所述客户端,所述客户端用于依据所述预设样式文件对所述页面进行渲染。
可选地,所述预设样式文件包括所述页面的组件的组件标识及对应的动态样式。
可选地,所述预设样式文件采用JSON语法描述所述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项。
为了解决上述问题,本申请实施例公开了一种页面换肤的方法,包括:
当客户端运行页面时,检测是否满足预设换肤条件;
若是,则向服务器发送换肤请求;所述换肤请求包括页面的页面标识和换肤信息;
接收所述服务器返回的与所述页面标识和所述换肤信息对应的预设样式文件;
获取所述页面的组件,所述组件具有组件标识;
根据所述组件标识和所述预设样式文件对所述组件进行样式渲染。
可选地,所述检测是否满足预设换肤条件的步骤包括:
获取系统时间;
判断所述系统时间是否是预设时间;
若是,则确定满足预设换肤条件。
可选地,所述获取所述页面的组件的步骤包括:
获取所述页面的视图树,所述视图树的节点用于标记所述页面的一个组件;
遍历所述视图树,得到所述视图树的各个节点对应的组件;
将所述各个节点对应的组件确定为所述页面的组件。
可选地,所述将所述各个节点对应的组件确定为所述页面的组件的步骤包括:
在所述各个节点对应的组件中,查找具有组件标识的组件;
判断所述具有组件标识的组件是否可见;
若是,则确定所述具有组件标识的组件有效;
若否,则确定所述具有组件标识的组件无效;
将所述有效的组件确定为所述页面的组件。
可选地,所述根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染的步骤包括:
对所述预设样式文件进行解析,得到所述页面的组件的组件标识和动态样式;
判断所述组件标识是否配置有动态样式;
若是,则获取所述组件标识对应的动态样式;
采用所述动态样式对所述组件标识对应的组件进行样式渲染。
为了解决上述问题,本申请实施例公开了一种页面换肤的方法,包括:
接收客户端的换肤请求,所述换肤请求包括页面的页面标识和换肤信息;
获取预先存储的与所述页面标识和所述换肤信息对应的预设样式文件;
将所述预设样式文件发送至所述客户端,所述客户端用于依据所述预设样式文件对所述页面进行样式渲染。
可选地,所述获取预先存储的与所述页面标识和所述换肤信息对应的预设样式文件的步骤包括:
在预先存储的样式文件数据库中,查找与所述页面标识关联的多个预设样式文件;
从所述多个预设样式文件中,查找出与所述换肤信息匹配的预设样式文件。
可选地,所述预设样式文件包括所述页面的组件的组件标识和对应的动态样式。
可选地,所述预设样式文件采用JSON语法描述所述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项。
为了解决上述问题,本申请实施例公开了一种页面换肤的装置,包括:
样式文件接收模块,用于接收与页面关联的预设样式文件,所述预设样式文件中配置有所述页面换肤时换肤组件的组件标识及对应的动态样式;
组件获取模块,用于获取所述页面的组件,所述组件具有组件标识;
渲染模块,用于根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染。
可选地,所述组件获取模块包括:
视图树获取子模块,用于获取所述页面的视图树,所述视图树的节点用于标记所述页面的一个组件;
遍历子模块,用于遍历所述视图树,得到所述视图树的各个节点对应的组件;
组件确定子模块,用于将所述各个节点对应的组件确定为所述页面的组件。
可选地,所述视图树的节点对应的组件包括容器组件,所述容器组件包括多个组件,所述遍历子模块包括:
判断单元,用于判断所述节点对应的是否是容器组件;
遍历单元,用于遍历所述节点直至所述节点的每个子节点对应的均是组件。
可选地,所述组件确定子模块包括:
组件查找单元,用于在所述各个节点对应的组件中,查找具有组件标识的组件;
组件判断单元,用于判断所述具有组件标识的组件是否可见;
有效组件确定单元,用于确定所述具有组件标识的组件有效;
无效组件确定单元,用于确定所述具有组件标识的组件无效;
组件确定单元,用于将所述有效的组件确定为所述页面的组件。
可选地,所述渲染模块包括:
解析子模块,用于对所述预设样式文件进行解析,得到所述页面的组件的组件标识和动态样式;
动态样式判断单元,用于判断所述组件标识是否配置有动态样式;
动态样式获取单元,用于获取所述组件标识对应的动态样式;
渲染单元,用于采用所述动态样式对所述组件标识对应的组件进行样式渲染。
可选地,还包括:
监听模块,用于对所述容器组件设置监听;
组件标识获取模块,用于当监听到对所述容器组件中的组件的调用时,获取调用的组件的组件标识;
第二渲染模块,用于当所述组件标识有效时,根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染。
可选地,所述预设样式文件采用JSON语法描述所述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项。
为了解决上述问题,本申请实施例公开了一种页面换肤的装置,包括:
样式文件获取模块,用于当满足预设换肤条件时,获取与页面关联的预设样式文件;
样式文件发送模块,用于将所述预设样式文件发送至所述客户端,所述客户端用于依据所述预设样式文件对所述页面进行渲染。
可选地,所述预设样式文件包括所述页面的组件的组件标识及对应的动态样式。
可选地,所述预设样式文件采用JSON语法描述所述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项。
为了解决上述问题,本申请实施例公开了一种页面换肤的装置,包括:
换肤条件检测模块,用于当客户端运行页面时,检测是否满足预设换肤条件;
换肤请求发送模块,用于向服务器发送换肤请求;所述换肤请求包括页面的页面标识和换肤信息;
样式文件接收模块,用于接收所述服务器返回的与所述页面标识和所述换肤信息对应的预设样式文件;
组件获取模块,用于获取所述页面的组件,所述组件具有组件标识;
渲染模块,用于根据所述组件标识和所述预设样式文件对所述组件进行样式渲染。
可选地,所述换肤条件检测模块包括:
系统时间获取子模块,用于获取系统时间;
时间判断子模块,用于判断所述系统时间是否是预设时间;
换肤条件确定子模块,用于确定满足预设换肤条件。
可选地,所述组件获取模块包括:
视图树获取子模块,用于获取所述页面的视图树,所述视图树的节点用于标记所述页面的一个组件;
遍历子模块,用于遍历所述视图树,得到所述视图树的各个节点对应的组件;
组件确定子模块,用于将所述各个节点对应的组件确定为所述页面的组件。
可选地,所述组件确定子模块包括:
组件查找单元,用于在所述各个节点对应的组件中,查找具有组件标识的组件;
组件判断单元,用于判断所述具有组件标识的组件是否可见;
有效组件确定单元,用于确定所述具有组件标识的组件有效;
无效组件确定单元,用于确定所述具有组件标识的组件无效;
组件确定单元,用于将所述有效的组件确定为所述页面的组件。
可选地,所述渲染模块包括:
解析子模块,用于对所述预设样式文件进行解析,得到所述页面的组件的组件标识和动态样式;
动态样式判断单元,用于判断所述组件标识是否配置有动态样式;
动态样式获取单元,用于获取所述组件标识对应的动态样式;
渲染单元,用于采用所述动态样式对所述组件标识对应的组件进行样式渲染。
为了解决上述问题,本申请实施例公开了一种页面换肤的装置,包括:
换肤请求接收模块,用于接收客户端的换肤请求,所述换肤请求包括页面的页面标识和换肤信息;
样式文件获取模块,用于获取预先存储的与所述页面标识和所述换肤信息对应的预设样式文件;
样式文件发送模块,用于将所述预设样式文件发送至所述客户端,所述客户端用于依据所述预设样式文件对所述页面进行样式渲染。
可选地,所述样式文件获取模块包括:
查找子模块,用于在预先存储的样式文件数据库中,查找与所述页面标识关联的多个预设样式文件;
样式文件确定子模块,用于从所述多个预设样式文件中,查找出与所述换肤信息匹配的预设样式文件。
可选地,所述预设样式文件包括所述页面的组件的组件标识和对应的动态样式。
可选地,所述预设样式文件采用JSON语法描述所述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项。
为了解决上述问题,本申请实施例公开了一种装置,包括:一个或多个处理器;和其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行上述的一个或多个的方法。
为了解决上述问题,一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行上述的一个或多个的方法。
本申请实施例包括以下优点:
本申请实施例中,接收与页面关联的预设样式文件,所述预设样式文件中配置有页面换肤时换肤组件的组件标识及对应的动态样式,获取页面的组件,所述组件具有组件标识,根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染。本申请实施例中,客户端获取页面的组件,然后根据下发的预设样式文件和组件的组件标识对组件进行样式渲染,实现页面的换肤,在客户端仅需要增加获取页面的组件和根据组件标识确定是否配置动态样式的代码,无需每个组件都绑定一个动态样式,节省了客户端的代码量,降低了开发成本,且在客户端无需考虑组件和动态样式的绑定,提高了客户端的灵活性。
例如,当满足预设换肤条件时,服务器下发预设样式文件至客户端,或者客户端检测到满足预设换肤条件时向服务器发送换肤请求,客户端接收到服务器下发的预设样式文件后,可以自动更换当前页面的皮肤,对于客户端而言,无需增加代码和升级版本即可实现自动换肤,提高了客户端的灵活性。
附图说明
图1是本申请的一种页面换肤的方法实施例1的步骤流程图;
图2是本申请的一种页面换肤的方法实施例2的步骤流程图;
图3是本申请的一种页面换肤的方法实施例3的步骤流程图;
图4是本申请的一种页面换肤的方法实施例4的步骤流程图;
图5是本申请的一种页面换肤的方法实施例5的步骤流程图;
图6是本申请的一种页面换肤的装置实施例1的结构框图;
图7是本申请的一种页面换肤的装置实施例2的结构框图;
图8是本申请的一种页面换肤的装置实施例3的结构框图;
图9是本申请的一种页面换肤的装置实施例4的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请实施例先从客户端的角度进行说明,例如用户通过个人计算机或者移动终端运行应用程序,并显示应用程序的一个页面。
参照图1,示出了本申请的一种页面换肤的方法实施例1的步骤流程图,具体可以包括如下步骤:
步骤101,接收与所述页面关联的预设样式文件。
本申请实施例中,页面可以是指应用程序运行的页面,即在终端设备上运行应用程序时,正在显示的页面。例如,可以是用户在个人计算机上通过IE浏览器浏览购物网站的页面,还可以是用户通过移动终端上的APP浏览购物网站的页面,当然不仅仅限于购物网站,还可以是新闻网站、体育网站、视频网站或者其它综合类网站等,本申请实施例对网站的类型不做限制。
客户端显示页面后,可以接收服务器下发的与当前页面关联的预设样式文件,预设样式文件中配置有页面换肤时换肤组件的组件标识及对应的动态样式。在实际应用中,页面在预设条件下需要进行皮肤的更换,此时由服务器下发与页面关联的预设样式文件至客户端,以对客户端的页面进行更换,例如,在双11、母亲节、父亲节等时间节点,购物网站需要更换页面的皮肤,则需要服务器下发预设样式文件至客户端,对客户端当前的页面的皮肤进行更换。
步骤102,获取所述页面的组件,所述组件具有组件标识。
通常的,一个页面由多个组件组成,组件具有组件标识。组件的显示样式决定页面的最终的显示效果,即页面的皮肤。例如,在购物网站的首页,组件在页面上可以体现为购物导航、动态推销窗口、促销窗口等各个显示区域,对页面的皮肤进行更换可以是对页面的各个组件的皮肤进行更换,因此,需要遍历当前显示的页面,找出该页面正在显示的各个组件。
步骤103,根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染。
在接收到预设样式文件后,解析该预设样式文件,可以得到组件标识和组件标识对应的动态样式在预设样式文件中,可以包括了页面的所有组件的组件标识,对于需要更换皮肤的各个组件,其组件标识下可以设置有动态样式,客户端依据动态样式对组件进行渲染,可以更换组件的皮肤,当然,如果该组件不进行皮肤更换,则该组件的组件标识下可以不设置动态样式。
本申请实施例中,得到页面的各个组件和各个组件的动态样式后,可以对对页面的各个组件进行重新渲染,例如对页面的各个组件,采用接收到的动态样式重新渲染,以对各个组件的皮肤进行更换,对页面进行刷新后,重新显示页面,实现对页面的皮肤进行更换。
本申请实施例中,在接收与页面关联的预设样式文件,所述预设样式文件中配置有页面换肤时换肤组件的组件标识及对应的动态样式,获取页面的组件,所述组件具有组件标识,根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染。本申请实施例中,客户端获取页面的组件,然后根据下发的预设样式文件和组件的组件标识对组件进行样式渲染,可以实现页面的换肤,在客户端仅需要增加获取页面的组件和根据组件标识确定是否配置动态样式的代码,无需每个组件都绑定一个动态样式,节省了客户端的代码量,降低了开发成本,且在客户端无需考虑组件和动态样式的绑定,提高了客户端的灵活性。
本申请实施例进一步从客户端的角度进行说明。参照图2,示出了本申请的一种页面换肤的方法实施例2的步骤流程图,具体可以包括如下步骤:
步骤201,接收与所述页面关联的预设样式文件。
客户端显示页面后,可以接收服务器下发的与当前页面关联的预设样式文件。在实际应用中,页面在预设条件下需要进行皮肤的更换,此时由服务器下发与页面关联的预设样式文件至客户端,以对客户端的页面进行更换。
步骤202,获取所述页面的组件,所述组件具有组件标识。
在本申请实施例中,所述步骤202可以包括如下子步骤:
子步骤S11,获取所述页面的视图树,所述视图树的节点用于标记所述页面的一个组件。
本申请实施例中,页面的框架可以是以树形结构构造的,页面的整个显示窗口是最上层的一个节点,即根节点,该根节点下的各个子节点对应于页面上的一个组件,因此可以获取页面的视图树,然后根据视图树的节点得到页面相应的组件。
子步骤S12,遍历所述视图树,得到所述视图树的各个节点对应的组件。
本申请实施例中,在获取页面的视图树后,对所述视图树进行遍历,以得到视图树种各个节点对应的组件,例如从根节点开始,从上至下遍历视图树的各个节点。
在本申请实施例中,节点可以包括组件节点和容器组件节点,则子步骤S12可以进一步包括如下子步骤:
子步骤S121,判断所述节点对应的是否是容器组件。
视图树的节点对应的可以是组件,组件可以是在页面上显示的元素;节点对应的还可以是容器组件,在容器组件的节点下还可以包括组件。因此,在遍历的过程中,判断节点对应的是否是容器组件,若是则执行子步骤S122,若否,该节点对应的即是页面的一个组件。
子步骤S122,遍历所述节点直至所述节点的每个子节点对应的均是组件。
当节点对应的容器组件时,需要对该节点逐个层级进行遍历,直至该节点下的每个子节点对应的均是组件为止,从而获得页面的所有组件。
子步骤S13,将所述各个节点对应的组件确定为所述页面的组件。
遍历后得到的各个节点对应的组件即为页面的组件,而对应当前显示的页面,其显示的是有效的组件,则子步骤S13可以包括如下步骤:
子步骤S131,在所述各个节点对应的组件中,查找具有组件标识的组件。
在视图树的各个节点对应的组件中,查找具有组件标识的组件,组件标识是指该组件在布局文件中编写了组件标识属性,或者在代码中设置了组件标识属性,因此可以在布局文件或者代码中,查找到具有组件标识的组件。
子步骤S132,判断所述具有组件标识的各个组件是否可见。
页面在加载显示时,仅对显示的组件进行渲染,然后进行显示,即可以将渲染过的组件作为可见的组件,没有进行渲染的组件为不可见的组件。因此,当一个具有组件标识的组件已经渲染过,则执行子步骤S133,否则,执行子步骤S134。
子步骤S133,确定所述具有组件标识的组件有效。
当页面的一个组件具有组件标识,并且可见,则可以将该组件作为该页面的一个有效组件。
子步骤S134,确定所述具有组件标识的组件无效。
当页面的一个组件没有设置组件标识,或者不可见,则可以将该组件作为该页面的无效组件,例如页面中一些与页面显示无关的组件,可以不设置组件标识,或者设置了组件标识,但是并不显示。
子步骤S135,确定所有有效的组件为所述页面的组件。
在显示的页面,换肤时更换的组件可以是在当前页面可见的、具有组件标识的组件,因此可以将所有有效的组件作为页面的组件。
本申请实施例中,可以通过遍历页面的视图树,将视图树的节点对应的组件中有效的组件作为页面的各个组件。
步骤203,对所述预设样式文件进行解析,得到所述页面的组件的组件标识和动态样式。
在本申请实施例中,预设样式文件可以是JSON语法描述的数据,例如采用JSON语法描述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项,客户端在接收到该预设样式文件进行解析后,得到一个Map类型的数据,其中包含页面的组件的各个组件标识和动态样式。
步骤204,判断所述组件标识是否配置有动态样式。
服务器下发的预设样式文件中的动态样式,即为组件需要更换的目标动态样式。因此可以根据页面的各个组件的组件标识,预设样式文件中的组件标识和动态样式的对应关系,判断各个组件的组件标识在预设样式文件中是否配置有动态样式,若是,执行步骤205,若否,则忽略该组件,采用默认样式进行渲染。
步骤205,获取所述组件标识对应的动态样式。
预设样式文件中设置了各个组件标识对应的动态样式,动态样式可以是该组件的显示样式,例如字体的大小、字体颜色、背景颜色等。
步骤206,采用所述动态样式对所述组件标识对应的组件进行样式渲染。
在获取各个组件的动态样式后,可以对组件进行样式渲染,以对页面进行刷新,实现页面的皮肤更换,具体而言,可以采用获取到的动态样式,自上而下对整个页面进行重新渲染,在显示界面显示重新渲染后的页面,以更换页面的皮肤。
以下以android系统为示例对本申请实施例进一步说明:
在android系统,页面被称之为Activty,一个Activity中会有很多的View(组件),在Activity加载时,可以通过getDecorView()获取Activity的DecorView,DecorView是整个页面最顶层的窗口,在DecorView下包括有View的节点。
在获取页面的DecorView后,可以调用遍历的函数对DecorView进行遍历。在DecorView中,节点对应的可以是View,也可以是ViewGroup(容器组件)。ViewGroup下包含有View,因此,在遍历DecorView过程中需要判断节点对应的是View还是ViewGroup,若是ViewGroup,则返回该节点,对该节点下的子节点进行遍历,直至每个节点对应的都是View为止,例如可以通过ViewGroup.getChildAt(index)获取ViewGroup下的所有子View,遍历结束。
在得到页面的所有的View后,判断各个View是否可见,如果是,则判断该View的View id(组件标识)是否有效,若是,则该View是当前页面有效的Vew。然后对服务器下发的预设样式文件进行解析,得到一套key为View id,value是动态样式的预设样式文件,通过该View的View id,确定在服务器下发的解析后的预设样式文件中是否配置的动态样式,若是则采用动态样式对该View重新渲染,进行皮肤的更换,否则忽略,结束换肤过程。
例如,一个Activity有10个View,分别对应的id是View1,View2……View10。现在有两个预设样式文件,分别是styleDay(白天模式),styleNight(夜晚模式)。预设样式文件里面分别有对View1到View10的样式描述的动态样式,对于白天模式的动态样式,例如对于viewl,可以得到"testSize":"12","testColor":"#ff0000","backg roundColor":"f00000"等;对于夜晚模式的动态样式,例如对于viewl,可以得到"testSize":"14","testColor":"#aaaaaa","backg roundColor":"ff0000"。
如果将当前页面从白天模式切换到夜晚模式,首先去将夜晚模式的预设样式文件的json获取过来,然后遍历当前Activity里面有效的View,并得到View id(View1,View2……View10),然后用View id去获取对应的动态样式,如果获取到动态样式,则应用动态样式对View进行重新渲染,反之则不渲染。比如遍历到View1得到View id:View1,则在夜晚模式的预设样式文件中得到View1的动态样式为:"testSize":"14","testColor":"#aaaaaa"。
然后将上面的动态样式应用到View1上,如果遍历到View10得到View id:View10,但是在夜晚模式的预设样式文件中没有得到动态样式,则不对View10渲染,使用默认代码中的样式。
可见,在客户端View id并不需要绑定一个动态样式,仅需要增加代码实现在服务器下发的预设样式文件中确定View id是否配置了动态样式即可,因此,本申请实施例的页面换肤方法,节省了客户端的代码量,并且需要重新换肤时仅需要服务器端下发预设样式文件即可,无需客户端更新版本,提高了客户端的灵活性。
在本申请实施例中,有可能在当前页面更换皮肤之后,将容器组件中的组件进行显示,例如,在购物网站中,设置的“下拉显示更多”,用户点击该选项后将显示页面的更多组件,或者通过窗口的滚动条显示页面的更多组件等,这样将在先没有显示的组件增加到页面中,则本申请实施例还包括以下步骤:
对所述容器组件设置监听,当监听到对所述容器组件中的组件的调用时,获取调用的组件的组件标识,并返回步骤204。
对于页面的容器组件,可以设置监听,以确定容器组件中增加到页面的组件,例如,通过setOnHierarchyChangeListener来监听是否存在组件的调用。
当监听到对容器组件中的组件的调用时,获取组件的组件标识,确定组件的有效性后,返回步骤204判断组件标识是否配置有动态样式,如果配置有动态样式,则采用动态样式对组件进行样式渲染。
本申请实施例中,接收与页面关联的预设样式文件,所述预设样式文件中配置有页面换肤时换肤组件的组件标识及对应的动态样式,获取页面的组件,所述组件具有组件标识,根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染。本申请实施例中,客户端仅需获取页面的组件,然后根据下发的预设样式文件和组件的组件标识对组件进行样式渲染,就可以实现页面的换肤,在客户端仅需要增加获取页面的组件和根据组件标识确定是否配置动态样式的代码,无需每个组件都绑定一个动态样式,节省了客户端的代码量,降低了开发成本,且在客户端无需考虑组件和动态样式的绑定,提高了客户端的灵活性。
本申请实施例从服务器的角度进行说明,该服务器存储有应用程序的各种预设样式文件,服务器可以根据预设换肤条件下发预设样式文件至客户端。
参照图3,示出了本申请的一种页面换肤的方法实施例3的步骤流程图,具体可以包括如下步骤:
步骤301,当满足预设换肤条件时,获取与所述页面关联的预设样式文件。
本申请实施例中,预设换肤条件可以是预设的时间,例如对于购物网站,预设换肤条件可以是预设的促销时间,例如双11、父亲节、母亲节等。
服务器在检测到满足预设换肤条件时,在预设的动态样式库中,获取与页面关联的预设样式文件,例如与双11关联的购物网站的首页的预设样式文件、与父亲节关联的购物网站的首页的预设样式文件等。
当然还可以是其它类型的网站,例如世界杯开幕时,服务器获取与世界杯关联的体育网站的预设样式文件,还可以是与白天模式或者晚上模式关联的其它网站的样式文件等。
本申请实施例中,对于一个页面,预设样式文件中可以包括页面的各个组件的组件标识,以及需要更换皮肤的组件标识对应的动态样式,预设样式文件可以采用JSON语法描述,例如可以是JSON语法描述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项的文件。
步骤302,将所述预设样式文件发送至所述客户端,所述客户端用于依据所述预设样式文件对所述页面进行渲染。
服务器在检测到满足预设换肤条件,获取预设样式文件后,将预设样式文件发送至客户端,客户端在接收到预设样式文件后,采用预设样式文件对页面的皮肤进行渲染,以实现当前显示的页面动态换肤。
本申请实施例中,服务器在检测到预设换肤条件时,获取与页面关联的预设样式文件,并将预设样式文件发送至客户端,客户端采用预设样式文件对当前的页面的皮肤进行渲染,无需对客户端版本进行升级,提高了客户端的灵活性。
本申请实施例从客户端的角度出发进行说明,客户端在检测到满足预设换肤条件时,向服务器发送换肤请求。
参照图4,示出了本申请的一种页面换肤的方法实施例4的步骤流程图,具体可以包括如下步骤:
步骤401,当客户端运行页面时,检测是否满足预设换肤条件。
在本申请实施例中,客户端在运行页面时,例如可以是用户通过移动终端上的APP浏览购物网站的页面时,客户端检测是否满足预设换肤条件。预设换肤条件可以是APP预设的,例如APP是购物类的,则可以预设促销的时间,视频类的APP则可以预设新影片上映的时间等等,则步骤401可以包括如下子步骤:
子步骤S21,获取系统时间。
一般地,系统时间可以是指个人计算机或者移动终端的时间,还可以是联网的网络上的时间,还可以是APP内置的时间。
子步骤S22,判断所述系统时间是否是预设时间。
预设时间可以是对页面进行换肤的时间,例如双11,则预设时间可以是****年11月11日00:00:00,此时间可以设置于APP内,这样每年的11月11日00:00:00都是预设时间,当然还可以设置其它的时间,本申请实施例对此不做限制。
子步骤S23,确定满足预设换肤条件。
当系统时间为预设时间时,确定满足预设换肤条件。当然还可以预设其它的换肤条件,例如客户端的地理位置在预设地理位置、客户端所处的温度在预设温度、客户端使用者的性别等等。
步骤402,向服务器发送换肤请求;所述换肤请求包括页面的页面标识和换肤信息。
当客户端检测到满足预设换肤条件时,向服务器发送换肤请求,该换肤请求可以包括页面标识和换肤信息,页面标识可以是当前页面的标识,例如可以是页面的URL。换肤信息可以是与预设换肤条件相应的预定义的信息,例如对于双11,换肤信息可以包括页面在双11时的预设样式文件,对于按照性别进行换肤,换肤信息可以包括性别。
步骤403,接收所述服务器返回的与所述页面标识和所述换肤信息对应的预设样式文件。
服务器根据客户端换肤请求中的页面标识和换肤信息查找到预设样式文件后,发送至客户端,客户端接收服务器返回的预设样式文件。
步骤404,获取所述页面的组件,所述组件具有组件标识。
具体而言,步骤404可以包括如下步骤:
获取所述页面的视图树,所述视图树的节点用于标记所述页面的一个组件;
遍历所述视图树,得到所述视图树的各个节点对应的组件;
将所述各个节点对应的组件确定为所述页面的组件。
上述步骤可参照实施例2的步骤202,为避免重复在此不在赘述。
其中,将所述各个节点对应的组件确定为所述页面的组件可以包括:
在所述各个节点对应的组件中,查找具有组件标识的组件;
判断所述具有组件标识的组件是否可见;
若是,则确定所述具有组件标识的组件有效;
若否,则确定所述具有组件标识的组件无效;
将所述有效的组件确定为所述页面的组件。
上述步骤可以参照实施例3的子步骤S131-子步骤S131,为避免重复在此不在赘述。
本申请实施例中,可以通过遍历页面的视图树,将视图树的节点对应的组件中有效的组件作为页面的各个组件。
步骤405,根据所述组件标识和所述预设样式文件对所述组件进行样式渲染。
在本申请实施例中,步骤405可以包括如下子步骤:
子步骤S31,对所述预设样式文件进行解析,得到所述页面的组件的组件标识和动态样式;
子步骤S32,判断所述组件标识是否配置有动态样式;
子步骤S33,获取所述组件标识对应的动态样式;
子步骤S34,采用所述动态样式对所述组件标识对应的组件进行样式渲染。
子步骤S31-子步骤S34可以参考实施例2中步骤203-步骤206,为避免重复在此不在赘述。
在获取各个组件的动态样式后,可以对页面进行刷新,以进行各个组件的皮肤更换,具体而言,可以采用获取到的动态样式,自上而下对整个页面进行重新渲染,在显示界面显示重新渲染后的页面,以更换页面的皮肤。
本申请实施例中,当客户端运行页面并检测到满足预设换肤条件时,向服务器发送换肤请求,换肤请求包括页面标识和换肤信息,接收与页面关联的预设样式文件,所述预设样式文件中配置有页面换肤时换肤组件的组件标识及对应的动态样式,获取页面的组件,所述组件具有组件标识,根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染。本申请实施例中,客户端检测到满足预设换肤条件时,向服务器发送换肤请求,接收服务器返回的预设样式文件后,客户端获取页面的组件,然后根据下发的预设样式文件和组件的组件标识对组件进行样式渲染,可以实现页面的换肤,在客户端仅需要增加获取页面的组件和根据组件标识确定是否配置动态样式的代码,无需每个组件都绑定一个动态样式,节省了客户端的代码量,降低了开发成本,且在客户端无需考虑组件和动态样式的绑定,提高了客户端的灵活性。
本申请实施例从服务器角度进行说明,本申请实施例的服务器接收到客户端发送的换肤请求后,获取与换肤请求匹配的预设样式文件发送至客户端。参照图5,示出了本申请的一种页面换肤的方法实施例5的步骤流程图,具体可以包括如下步骤:
步骤501,接收客户端的换肤请求,所述换肤请求包括页面的页面标识和换肤信息。
本申请实施例中,服务器可以接收客户端的换肤请求,在实际应用中,换肤请求可以是用户端所在的客户端发送的换肤请求,也可以是客户端的运营商发送的换肤请求,例如,对于某一购物APP客户端,换肤请求可以是用户端的APP检测到满足预设换肤条件后发送至服务器,还可以是购物APP客户端的运营商发送换肤请求至服务器,以请求对所有用户的页面进行换肤。
换肤请求包括需要换肤的页面标识和换肤信息,例如APP的浏览购物网站的首页,换肤信息可以是指示需要更换的目标皮肤的样式,例如可以是指示将页面换成双11的皮肤、换成夜晚模式的皮肤、换成适用女性用户的皮肤等等。
步骤502,获取预先存储的与所述页面标识和所述换肤信息对应的预设样式文件。
服务器接收到换肤请求后,在预先存储的动态样式库中个,查找到与页面标识和换肤信息对应的预设样式文件。具体可以包括如下子步骤:
子步骤S41,在预先存储的样式数据库中,查找与所述页面标识关联的多个预设样式文件;
子步骤S42,从所述多个预设样式文件中,查找出与所述换肤信息匹配的预设样式文件。
本申请实施例中,服务器可以设置有样式文件数据库,在接收到客户端的换肤请求后,可以根据换肤请求中的页面标识查找与页面标识关联的预设样式文件,得到多个预设样式文件,然后在多个预设样式文件中查找到与换肤信息匹配的预设样式文件。
在本申请实施例中,预设样式文件采用JSON语法描述,在解析后,得到一个Map类型,其中包括页面的各个组件的组件标识和动态样式。
步骤503,将所述预设样式文件发送至所述客户端,所述客户端用于依据所述预设样式文件对所述页面的皮肤进行更换。
获取预设样式文件后,将预设样式文件发送至客户端,客户端在接收到预设样式文件后,采用预设样式文件对页面的皮肤进行更换,以实现当前显示的页面动态换肤。
本申请实施例中,服务器在接收到客户端发送的换肤请求时,获取与换肤请求对应的预设样式文件,并将预设样式文件发送至客户端,客户端采用预设样式文件对当前的页面的皮肤进行更换,无需对客户端版本进行升级,提高了客户端的灵活性。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图6,示出了本申请的一种页面换肤的装置实施例1的结构框图,该装置可以应用于客户端,具体可以包括如下模块:
样式文件接收模块601,用于接收与页面关联的预设样式文件,所述预设样式文件中配置有所述页面换肤时换肤组件的组件标识及对应的动态样式;
组件获取模块602,用于获取所述页面的组件,所述组件具有组件标识;
渲染模块603,用于根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染。
可选地,所述组件获取模块602包括:
视图树获取子模块,用于获取所述页面的视图树,所述视图树的节点用于标记所述页面的一个组件;
遍历子模块,用于遍历所述视图树,得到所述视图树的各个节点对应的组件;
组件确定子模块,用于将所述各个节点对应的组件确定为所述页面的组件。
可选地,所述视图树的节点对应的组件包括容器组件,所述容器组件包括多个组件,所述遍历子模块包括:
判断单元,用于判断所述节点对应的是否是容器组件;
遍历单元,用于遍历所述节点直至所述节点的每个子节点对应的均是组件。
可选地,所述组件确定子模块包括:
组件查找单元,用于在所述各个节点对应的组件中,查找具有组件标识的组件;
组件判断单元,用于判断所述具有组件标识的组件是否可见;
有效组件确定单元,用于确定所述具有组件标识的组件有效;
无效组件确定单元,用于确定所述具有组件标识的组件无效;
组件确定单元,用于将所述有效的组件确定为所述页面的组件。
可选地,所述渲染模块603包括:
解析子模块,用于对所述预设样式文件进行解析,得到所述页面的组件的组件标识和动态样式;
动态样式判断单元,用于判断所述组件标识是否配置有动态样式;
动态样式获取单元,用于获取所述组件标识对应的动态样式;
渲染单元,用于采用所述动态样式对所述组件标识对应的组件进行样式渲染。
可选地,还包括:
监听模块,用于对所述容器组件设置监听;
组件标识获取模块,用于当监听到对所述容器组件中的组件的调用时,获取调用的组件的组件标识;
第二渲染模块,用于当所述组件标识有效时,根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染。
可选地,所述预设样式文件采用JSON语法描述所述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项。
参照图7,示出了本申请的一种页面换肤的装置实施例2的结构框图,该装置可以应用于服务器侧,具体可以包括如下模块:
样式文件获取模块701,用于当满足预设换肤条件时,获取与页面关联的预设样式文件;
样式文件发送模块702,用于将所述预设样式文件发送至所述客户端,所述客户端用于依据所述预设样式文件对所述页面进行渲染。
可选地,所述预设样式文件包括所述页面的组件的组件标识及对应的动态样式。
可选地,所述预设样式文件采用JSON语法描述所述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项。
参照图8,示出了本申请的一种页面换肤的装置实施例3的结构框图,该装置可以应用于客户端侧,具体可以包括如下模块:
换肤条件检测模块801,用于当客户端运行页面时,检测是否满足预设换肤条件;
换肤请求发送模块802,用于向服务器发送换肤请求;所述换肤请求包括页面的页面标识和换肤信息;
样式文件接收模块803,用于接收所述服务器返回的与所述页面标识和所述换肤信息对应的预设样式文件;
组件获取模块804,用于获取所述页面的组件,所述组件具有组件标识;
渲染模块805,用于根据所述组件标识和所述预设样式文件对所述组件进行样式渲染。
可选地,所述换肤条件检测模块801包括:
系统时间获取子模块,用于获取系统时间;
时间判断子模块,用于判断所述系统时间是否是预设时间;
换肤条件确定子模块,用于确定满足预设换肤条件。
可选地,所述组件获取模块804包括:
视图树获取子模块,用于获取所述页面的视图树,所述视图树的节点用于标记所述页面的一个组件;
遍历子模块,用于遍历所述视图树,得到所述视图树的各个节点对应的组件;
组件确定子模块,用于将所述各个节点对应的组件确定为所述页面的组件。
可选地,所述组件确定子模块包括:
组件查找单元,用于在所述各个节点对应的组件中,查找具有组件标识的组件;
组件判断单元,用于判断所述具有组件标识的组件是否可见;
有效组件确定单元,用于确定所述具有组件标识的组件有效;
无效组件确定单元,用于确定所述具有组件标识的组件无效;
组件确定单元,用于将所述有效的组件确定为所述页面的组件。
可选地,所述渲染模块805包括:
解析子模块,用于对所述预设样式文件进行解析,得到所述页面的组件的组件标识和动态样式;
动态样式判断单元,用于判断所述组件标识是否配置有动态样式;
动态样式获取单元,用于获取所述组件标识对应的动态样式;
渲染单元,用于采用所述动态样式对所述组件标识对应的组件进行样式渲染。
参照图9,示出了本申请的一种页面换肤的装置实施例4的结构框图,该装置可以应用于服务器侧,具体可以包括如下模块:
换肤请求接收模块901,用于接收客户端的换肤请求,所述换肤请求包括页面的页面标识和换肤信息;
样式文件获取模块902,用于获取预先存储的与所述页面标识和所述换肤信息对应的预设样式文件;
样式文件发送模块903,用于将所述预设样式文件发送至所述客户端,所述客户端用于依据所述预设样式文件对所述页面进行样式渲染。
可选地,所述样式文件获取模块902包括:
查找子模块,用于在预先存储的样式文件数据库中,查找与所述页面标识关联的多个预设样式文件;
样式文件确定子模块,用于从所述多个预设样式文件中,查找出与所述换肤信息匹配的预设样式文件。
可选地,所述预设样式文件包括所述页面的组件的组件标识和对应的动态样式。
可选地,所述预设样式文件采用JSON语法描述所述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项。
本申请实施例还提供了一种装置,包括:一个或多个处理器;和其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行实施例1和/或实施例2和/或实施例3和/或实施例4和/或实施例5所述的一个或多个的方法。
本申请实施例还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行实施例1和/或实施例2和/或实施例3和/或实施例4和/或实施例5所述的一个或多个的方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种页面换肤的方法和一种页面换肤的装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (25)
1.一种页面换肤的方法,其特征在于,包括:
接收与页面关联的预设样式文件,所述预设样式文件中配置有所述页面换肤时换肤组件的组件标识及对应的动态样式;
获取所述页面的组件,所述组件具有组件标识;
根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染。
2.根据权利要求1所述的方法,其特征在于,所述获取所述页面的组件的步骤包括:
获取所述页面的视图树,所述视图树的节点用于标记所述页面的一个组件;
遍历所述视图树,得到所述视图树的各个节点对应的组件;
将所述各个节点对应的组件确定为所述页面的组件。
3.根据权利要求2所述的方法,其特征在于,所述视图树的节点对应的组件包括容器组件,所述容器组件包括多个组件,所述遍历所述视图树,得到所述视图树的多个节点对应的组件的步骤包括:
判断所述节点对应的是否是容器组件;
若是,则遍历所述节点直至所述节点的每个子节点对应的均是组件。
4.根据权利要求2或3所述的方法,其特征在于,所述将所述各个节点对应的组件确定为所述页面的组件的步骤包括:
在所述各个节点对应的组件中,查找具有组件标识的组件;
判断所述具有组件标识的组件是否可见;
若是,则确定所述具有组件标识的组件有效;
若否,则确定所述具有组件标识的组件无效;
将所述有效的组件确定为所述页面的组件。
5.根据权利要求4所述的方法,其特征在于,所述根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染的步骤包括:
对所述预设样式文件进行解析,得到所述页面的组件的组件标识和动态样式;
判断所述组件标识是否配置有动态样式;
若是,则获取所述组件标识对应的动态样式;
采用所述动态样式对所述组件标识对应的组件进行样式渲染。
6.根据权利要求5所述的方法,其特征在于,在所述获取所述组件配置的动态样式,对所述组件进行样式渲染的步骤之后,还包括:
对所述容器组件设置监听;
当监听到对所述容器组件中的组件的调用时,获取调用的组件的组件标识;
当所述组件标识有效时,返回根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染的步骤。
7.根据权利要求1或2或3或5或6所述的方法,其特征在于,所述预设样式文件采用JSON语法描述所述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项。
8.一种页面换肤的方法,其特征在于,包括:
当满足预设换肤条件时,获取与页面关联的预设样式文件;
将所述预设样式文件发送至所述客户端,所述客户端用于依据所述预设样式文件对所述页面进行渲染。
9.根据权利要求8所述的方法,其特征在于,所述预设样式文件包括所述页面的组件的组件标识及对应的动态样式。
10.根据权利要求8或9所述的方法,其特征在于,所述预设样式文件采用JSON语法描述所述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项。
11.一种页面换肤的方法,其特征在于,包括:
当客户端运行页面时,检测是否满足预设换肤条件;
若是,则向服务器发送换肤请求;所述换肤请求包括页面的页面标识和换肤信息;
接收所述服务器返回的与所述页面标识和所述换肤信息对应的预设样式文件;
获取所述页面的组件,所述组件具有组件标识;
根据所述组件标识和所述预设样式文件对所述组件进行样式渲染。
12.根据权利要求11所述的方法,其特征在于,所述检测是否满足预设换肤条件的步骤包括:
获取系统时间;
判断所述系统时间是否是预设时间;
若是,则确定满足预设换肤条件。
13.根据权利要求11所述的方法,其特征在于,所述获取所述页面的组件的步骤包括:
获取所述页面的视图树,所述视图树的节点用于标记所述页面的一个组件;
遍历所述视图树,得到所述视图树的各个节点对应的组件;
将所述各个节点对应的组件确定为所述页面的组件。
14.根据权利要求13所述的方法,其特征在于,所述将所述各个节点对应的组件确定为所述页面的组件的步骤包括:
在所述各个节点对应的组件中,查找具有组件标识的组件;
判断所述具有组件标识的组件是否可见;
若是,则确定所述具有组件标识的组件有效;
若否,则确定所述具有组件标识的组件无效;
将所述有效的组件确定为所述页面的组件。
15.根据权利要求11或12或13或14所述的方法,其特征在于,所述根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染的步骤包括:
对所述预设样式文件进行解析,得到所述页面的组件的组件标识和动态样式;
判断所述组件标识是否配置有动态样式;
若是,则获取所述组件标识对应的动态样式;
采用所述动态样式对所述组件标识对应的组件进行样式渲染。
16.一种页面换肤的方法,其特征在于,包括:
接收客户端的换肤请求,所述换肤请求包括页面的页面标识和换肤信息;
获取预先存储的与所述页面标识和所述换肤信息对应的预设样式文件;
将所述预设样式文件发送至所述客户端,所述客户端用于依据所述预设样式文件对所述页面进行样式渲染。
17.根据权利要求16所述的方法,其特征在于,所述获取预先存储的与所述页面标识和所述换肤信息对应的预设样式文件的步骤包括:
在预先存储的样式文件数据库中,查找与所述页面标识关联的多个预设样式文件;
从所述多个预设样式文件中,查找出与所述换肤信息匹配的预设样式文件。
18.根据权利要求16或17所述的方法,其特征在于,所述预设样式文件包括所述页面的组件的组件标识和对应的动态样式。
19.根据权利要求16或17所述的方法,其特征在于,所述预设样式文件采用JSON语法描述所述页面的组件的组件标识、字体大小、字体颜色、背景色、边框样式和边距中的至少一项。
20.一种页面换肤的装置,其特征在于,包括:
样式文件接收模块,用于接收与页面关联的预设样式文件,所述预设样式文件中配置有所述页面换肤时换肤组件的组件标识及对应的动态样式;
组件获取模块,用于获取所述页面的组件,所述组件具有组件标识;
渲染模块,用于根据所述组件标识和所述预设样式文件,对所述组件进行样式渲染。
21.一种页面换肤的装置,其特征在于,包括:
样式文件获取模块,用于当满足预设换肤条件时,获取与页面关联的预设样式文件;
样式文件发送模块,用于将所述预设样式文件发送至所述客户端,所述客户端用于依据所述预设样式文件对所述页面进行渲染。
22.一种页面换肤的装置,其特征在于,包括:
换肤条件检测模块,用于当客户端运行页面时,检测是否满足预设换肤条件;
换肤请求发送模块,用于向服务器发送换肤请求;所述换肤请求包括页面的页面标识和换肤信息;
样式文件接收模块,用于接收所述服务器返回的与所述页面标识和所述换肤信息对应的预设样式文件;
组件获取模块,用于获取所述页面的组件,所述组件具有组件标识;
渲染模块,用于根据所述组件标识和所述预设样式文件对所述组件进行样式渲染。
23.一种页面换肤的装置,其特征在于,包括:
换肤请求接收模块,用于接收客户端的换肤请求,所述换肤请求包括页面的页面标识和换肤信息;
样式文件获取模块,用于获取预先存储的与所述页面标识和所述换肤信息对应的预设样式文件;
样式文件发送模块,用于将所述预设样式文件发送至所述客户端,所述客户端用于依据所述预设样式文件对所述页面进行样式渲染。
24.一种装置,其特征在于,包括:一个或多个处理器;和其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求1-7和/或8-10和/或11-15和/或16-19所述的一个或多个的方法。
25.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如权利要求1-7和/或8-10和/或11-15和/或16-19所述的一个或多个的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710776127.6A CN109426541A (zh) | 2017-08-31 | 2017-08-31 | 一种页面换肤的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710776127.6A CN109426541A (zh) | 2017-08-31 | 2017-08-31 | 一种页面换肤的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109426541A true CN109426541A (zh) | 2019-03-05 |
Family
ID=65504926
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710776127.6A Pending CN109426541A (zh) | 2017-08-31 | 2017-08-31 | 一种页面换肤的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109426541A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262857A (zh) * | 2019-06-20 | 2019-09-20 | 郑州悉知信息科技股份有限公司 | 一种前端响应方法及装置 |
CN111061414A (zh) * | 2019-11-28 | 2020-04-24 | 北京奇艺世纪科技有限公司 | 皮肤更换方法、装置、电子设备及可读存储介质 |
CN111443912A (zh) * | 2020-03-25 | 2020-07-24 | 平安医疗健康管理股份有限公司 | 基于组件的页面渲染方法、装置、计算机设备和存储介质 |
CN111638927A (zh) * | 2020-05-06 | 2020-09-08 | 北京达佳互联信息技术有限公司 | 一种皮肤切换方法及装置 |
CN112130836A (zh) * | 2020-09-10 | 2020-12-25 | 华帝股份有限公司 | 基于json文件生成多级联动组件的方法 |
CN112269605A (zh) * | 2020-11-12 | 2021-01-26 | 北京百度网讯科技有限公司 | 一种皮肤更换方法、装置、电子设备及存储介质 |
CN112579219A (zh) * | 2019-09-29 | 2021-03-30 | 北京国双科技有限公司 | 软件产品换肤方法以及装置 |
CN113391808A (zh) * | 2021-07-08 | 2021-09-14 | 北京沃东天骏信息技术有限公司 | 页面的配置方法、装置及电子设备 |
CN114153543A (zh) * | 2021-12-03 | 2022-03-08 | 珠海格力电器股份有限公司 | 一种用户界面的渲染方法及装置 |
CN114489882A (zh) * | 2021-12-16 | 2022-05-13 | 成都鲁易科技有限公司 | 浏览器动态皮肤的实现方法及装置、存储介质 |
CN114675912A (zh) * | 2021-05-06 | 2022-06-28 | 腾讯云计算(北京)有限责任公司 | 主题皮肤切换方法、装置、计算机设备及计算机存储介质 |
US20220245208A1 (en) * | 2021-04-27 | 2022-08-04 | Apollo Intelligent Connectivity (Beijing) Technology Co., Ltd. | Method for switching skin of mini-program page, and electronic device |
CN117093218A (zh) * | 2023-10-19 | 2023-11-21 | 浪潮通用软件有限公司 | 一种基于界面描述的前端界面渲染方法、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186370A (zh) * | 2011-12-29 | 2013-07-03 | 金蝶软件(中国)有限公司 | Web页面展示方法及系统 |
CN105574049A (zh) * | 2014-10-30 | 2016-05-11 | 阿里巴巴集团控股有限公司 | 移动应用的页面处理方法、装置和系统 |
CN106294816A (zh) * | 2016-08-16 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 页面信息的处理方法和装置 |
CN106293311A (zh) * | 2015-05-26 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 基于移动应用的页面显示方法、客户端、服务器及平台 |
CN106528601A (zh) * | 2016-09-23 | 2017-03-22 | 北京五八信息技术有限公司 | 动态配置组件的方法和装置 |
CN106990949A (zh) * | 2016-12-31 | 2017-07-28 | 深圳大宇无限科技有限公司 | 应用页面显示方法和装置 |
CN107066273A (zh) * | 2017-03-31 | 2017-08-18 | 北京奇艺世纪科技有限公司 | 一种页面样式更新方法及装置 |
-
2017
- 2017-08-31 CN CN201710776127.6A patent/CN109426541A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186370A (zh) * | 2011-12-29 | 2013-07-03 | 金蝶软件(中国)有限公司 | Web页面展示方法及系统 |
CN105574049A (zh) * | 2014-10-30 | 2016-05-11 | 阿里巴巴集团控股有限公司 | 移动应用的页面处理方法、装置和系统 |
CN106293311A (zh) * | 2015-05-26 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 基于移动应用的页面显示方法、客户端、服务器及平台 |
CN106294816A (zh) * | 2016-08-16 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 页面信息的处理方法和装置 |
CN106528601A (zh) * | 2016-09-23 | 2017-03-22 | 北京五八信息技术有限公司 | 动态配置组件的方法和装置 |
CN106990949A (zh) * | 2016-12-31 | 2017-07-28 | 深圳大宇无限科技有限公司 | 应用页面显示方法和装置 |
CN107066273A (zh) * | 2017-03-31 | 2017-08-18 | 北京奇艺世纪科技有限公司 | 一种页面样式更新方法及装置 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110262857A (zh) * | 2019-06-20 | 2019-09-20 | 郑州悉知信息科技股份有限公司 | 一种前端响应方法及装置 |
CN112579219A (zh) * | 2019-09-29 | 2021-03-30 | 北京国双科技有限公司 | 软件产品换肤方法以及装置 |
CN111061414A (zh) * | 2019-11-28 | 2020-04-24 | 北京奇艺世纪科技有限公司 | 皮肤更换方法、装置、电子设备及可读存储介质 |
CN111443912B (zh) * | 2020-03-25 | 2023-06-30 | 深圳平安医疗健康科技服务有限公司 | 基于组件的页面渲染方法、装置、计算机设备和存储介质 |
CN111443912A (zh) * | 2020-03-25 | 2020-07-24 | 平安医疗健康管理股份有限公司 | 基于组件的页面渲染方法、装置、计算机设备和存储介质 |
CN111638927A (zh) * | 2020-05-06 | 2020-09-08 | 北京达佳互联信息技术有限公司 | 一种皮肤切换方法及装置 |
CN112130836A (zh) * | 2020-09-10 | 2020-12-25 | 华帝股份有限公司 | 基于json文件生成多级联动组件的方法 |
CN112269605A (zh) * | 2020-11-12 | 2021-01-26 | 北京百度网讯科技有限公司 | 一种皮肤更换方法、装置、电子设备及存储介质 |
CN112269605B (zh) * | 2020-11-12 | 2024-07-12 | 南京麒豹信息科技有限公司 | 一种皮肤更换方法、装置、电子设备及存储介质 |
US20220245208A1 (en) * | 2021-04-27 | 2022-08-04 | Apollo Intelligent Connectivity (Beijing) Technology Co., Ltd. | Method for switching skin of mini-program page, and electronic device |
CN114675912A (zh) * | 2021-05-06 | 2022-06-28 | 腾讯云计算(北京)有限责任公司 | 主题皮肤切换方法、装置、计算机设备及计算机存储介质 |
CN113391808A (zh) * | 2021-07-08 | 2021-09-14 | 北京沃东天骏信息技术有限公司 | 页面的配置方法、装置及电子设备 |
CN114153543A (zh) * | 2021-12-03 | 2022-03-08 | 珠海格力电器股份有限公司 | 一种用户界面的渲染方法及装置 |
CN114489882B (zh) * | 2021-12-16 | 2023-05-19 | 成都鲁易科技有限公司 | 浏览器动态皮肤的实现方法及装置、存储介质 |
CN114489882A (zh) * | 2021-12-16 | 2022-05-13 | 成都鲁易科技有限公司 | 浏览器动态皮肤的实现方法及装置、存储介质 |
CN117093218A (zh) * | 2023-10-19 | 2023-11-21 | 浪潮通用软件有限公司 | 一种基于界面描述的前端界面渲染方法、设备及介质 |
CN117093218B (zh) * | 2023-10-19 | 2024-01-26 | 浪潮通用软件有限公司 | 一种基于界面描述的前端界面渲染方法、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109426541A (zh) | 一种页面换肤的方法和装置 | |
US11921798B2 (en) | Generating a contextual search stream | |
EP3485400B1 (en) | Methods and systems for server-side rendering of native content for presentation | |
KR101953303B1 (ko) | 브라우징 액티비티에 기초하여 정합 애플리케이션을 식별하는 기법 | |
CN110968824B (zh) | 页面数据处理方法和装置 | |
US20140026037A1 (en) | Creating personalized networked documents | |
CN104426925B (zh) | 网页资源获取方法及装置 | |
CN107256232B (zh) | 一种信息推荐方法和装置 | |
CN107368487A (zh) | 一种页面组件动态布局方法、装置及客户端 | |
US20090112824A1 (en) | Method and apparatus for generating presentation configuration file of document content | |
CN104866522A (zh) | 一种为提问者提供回答信息的方法与装置 | |
US10303734B2 (en) | Method, system, and device for marking web content | |
US10205678B2 (en) | Systems and methods for client-side dynamic information resource activation and deactivation | |
CN109636485B (zh) | 基于驾驶行为数据的信息推荐方法及装置 | |
US20120290922A1 (en) | Method And Apparatus For Subscribing To Information From A Webpage | |
CN103207874A (zh) | 一种网页更新内容的提示方法及系统 | |
CN103678307A (zh) | 页面显示方法及客户端 | |
US11363040B2 (en) | Systems and methods for dynamically restricting the rendering of unauthorized content included in information resources | |
CN105677654A (zh) | 广告过滤方法及装置 | |
CN104102577A (zh) | 多版本网页访问测试方法 | |
CN110866200A (zh) | 一种业务界面的渲染方法和装置 | |
CN103399693A (zh) | 单页面整体刷新后菜单重新定位方法及系统 | |
CN104699744A (zh) | 信息搜索方法及装置 | |
TWI519980B (zh) | 網頁顯示方法和裝置及電腦可讀取儲存介質 | |
US9843643B2 (en) | System, method, and non-transitory computer-readable storage media for monitoring consumer activity on websites |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190305 |