CN114296822A - 应用程序的换肤处理方法、装置、设备及介质 - Google Patents

应用程序的换肤处理方法、装置、设备及介质 Download PDF

Info

Publication number
CN114296822A
CN114296822A CN202111624428.XA CN202111624428A CN114296822A CN 114296822 A CN114296822 A CN 114296822A CN 202111624428 A CN202111624428 A CN 202111624428A CN 114296822 A CN114296822 A CN 114296822A
Authority
CN
China
Prior art keywords
skin
resource
package
application program
target
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
Application number
CN202111624428.XA
Other languages
English (en)
Inventor
秦洋
李文娟
邵广玉
王洪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BOE Technology Group Co Ltd
Beijing Zhongxiangying Technology Co Ltd
Original Assignee
BOE Technology Group Co Ltd
Beijing Zhongxiangying Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BOE Technology Group Co Ltd, Beijing Zhongxiangying Technology Co Ltd filed Critical BOE Technology Group Co Ltd
Priority to CN202111624428.XA priority Critical patent/CN114296822A/zh
Publication of CN114296822A publication Critical patent/CN114296822A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本申请涉及一种应用程序的换肤处理方法、装置、设备及介质,该换肤处理方法包括:显示应用程序的皮肤资源列表;接收对所述皮肤资源列表中目标资源的选择操作;依据所述选择操作,获取所述目标资源对应的皮肤资源包;依据所述皮肤资源包的文件路径,构建目标资源管理实例;通过所述目标资源管理实例,构建所述目标资源对应的资源对象实例;依据所述资源对象实例加载的皮肤资源信息,刷新所述应用程序的显示页面。本申请解决了现有技术中需要在APK内置多套皮肤资源导致APK体积增大、换肤灵活性差等问题,提升用户体验。

Description

应用程序的换肤处理方法、装置、设备及介质
技术领域
本申请涉及安卓(Android)应用开发技术领域,尤其涉及一种应用程序的换肤处理方法、装置、设备及介质。
背景技术
随着计算机网络的快速发展,诸如平板电脑、手机等智能终端越来越普及,众多应用程序(Application,App)应运而生。App在满足用户日常功能使用前提下,需要提升用户的使用体验,如在用户需要更个性的App皮肤选择,以及节假日以及各种活动时,管理员进行主动触发应用程序换肤。为了满足用户的体验和需求,诞生了Android应用换肤技术。
目前,Android应用换肤技术方案主要是在Android App程序内内置多套皮肤资源,然后用户只能在内置的多套皮肤资源中进行选择使用。然而,这种换肤的方式只能更换Android App程序中内置的皮肤资源,灵活性差;且这种换肤的方式需要将内置的多套皮肤资源添加到Android应用程序包(Android application package,APK),导致APK体积太大,如在应用中一般图片资源能占到APK大小的一半左右的情况下,若同时在APK内置多套皮肤资源则会导致APK体积增大几倍。
发明内容
鉴于此,为解决上述技术问题或部分技术问题,本申请实施例提供一种应用程序的换肤处理方法、装置、设备及介质。
第一方面,本申请实施例提供一种应用程序的换肤处理方法,包括:
显示应用程序的皮肤资源列表;
接收对所述皮肤资源列表中目标资源的选择操作;
依据所述选择操作,获取所述目标资源对应的皮肤资源包;
依据所述皮肤资源包的文件路径,构建目标资源管理实例;
通过所述目标资源管理实例,构建所述目标资源对应的资源对象实例;
依据所述资源对象实例加载的皮肤资源信息,刷新所述应用程序的显示页面。
在一种可能的实施方式中,所述显示应用程序的皮肤资源列表,包括:
在应用程序起动后,监测皮肤列表页面的用户触发操作;
依据所述用户触发操作,向所述应用程序的服务端发送资源获取请求,所述资源获取请求携带有所述用户触发操作的用户信息;
获取所述服务端发送的皮肤列表数据,所述皮肤列表数据包含所述服务端依据所述用户信息推荐的皮肤资源数据;
依据所述皮肤列表数据,显示所述皮肤资源列表。
在一种可能的实施方式中,所述依据所述选择操作,获取所述目标资源对应的皮肤资源包,包括:基于所述选择操作,获取所述目标资源的皮肤包状态信息;若所述皮肤包状态信息为目标下载状态信息,则从所述应用程序的下载文件中获取所述皮肤资源包;若所述皮肤包状态信息为非目标下载状态信息,则根据所述目标资源的资源标识信息,从所述服务端下载所述皮肤资源包。
在一种可能的实施方式中,所述根据所述目标资源的资源标识信息,从所述服务端下载所述皮肤资源包,包括:依据所述资源标识信息创建皮肤包下载任务,所述皮肤包下载任务用于从所述服务端下载所述资源标识信息对应的皮肤包;基于所述皮肤包的下载进度信息,对所述皮肤包进行完整性校验,得到校验结果;若所述校验结果为校验通过结果,则将所述皮肤包确定为所述皮肤资源包,并将所述皮肤包状态信息更新为所述目标下载状态信息;若所述校验结果为校验错误结果,则触发所述皮肤包下载任务重新下载所述皮肤包,并更新所述皮肤包的下载进度信息。
在一种可能的实施方式中,所述通过所述目标资源管理实例,构建所述目标资源对应的资源对象实例,包括:
通过所述目标资源管理实例获取皮肤包名信息;
依据应用程序的资源对象标识,确定目标资源特征信息;
依据所述皮肤包名信息,从所述皮肤资源包中提取所述目标资源特征信息对应的目标资源对象标识;
依据所述目标资源对象标识构建所述资源对象实例。
在一种可能的实施方式中,所述依据所述资源对象实例加载的皮肤资源信息,刷新所述应用程序的显示页面,包括:
基于所述应用程序的页面刷新操作,触发所述资源对象实例加载所述目标资源对象标识对应的所述皮肤资源信息;
基于所述皮肤资源信息刷新所述显示页面。
第二方面,本申请实施例提供一种应用程序的换肤处理装置,包括:
皮肤资源列表显示模块,用于显示应用程序的皮肤资源列表;
选择操作接收模块,用于接收对所述皮肤资源列表中目标资源的选择操作;
皮肤资源包获取模块,用于依据所述选择操作,获取所述目标资源对应的皮肤资源包;
资源管理实例构建模块,用于依据所述皮肤资源包的文件路径,构建目标资源管理实例;
资源对象实例构建模块,用于通过所述目标资源管理实例,构建所述目标资源对应的资源对象实例;
页面显示模块,用于依据所述资源对象实例加载的皮肤资源信息,刷新所述应用程序的显示页面。
在一种可能的实施方式中,所述皮肤资源列表显示模块,包括:
触发操作监测子模块,用于在应用程序起动后,监测皮肤列表页面的用户触发操作;
获取请求发送子模块,用于依据所述用户触发操作,向所述应用程序的服务端发送资源获取请求,所述资源获取请求携带有所述用户触发操作的用户信息;
列表数据获取子模块,用于获取所述服务端发送的皮肤列表数据,所述皮肤列表数据包含所述服务端依据所述用户信息推荐的皮肤资源数据;
资源列表显示子模块,用于依据所述皮肤列表数据,显示所述皮肤资源列表。
第三方面,本申请实施例提供一种电子设备,包括:处理器,以及用于存储所述处理器的可执行指令的存储器;其中,所述处理器被配置为执行如第一方面任一所述的应用程序的换肤处理方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一所述的应用程序的换肤处理方法。
本申请实施例提供的应用程序的换肤处理方法、装置、设备及介质,通过显示应用程序的皮肤资源列表,并接收对该皮肤资源列表中目标资源的选择操作,以依据选择操作获取目标资源对应的皮肤资源包,随后依据皮肤资源包的文件路径构建目标资源管理实例,以通过目标资源管理实例构建目标资源对应的资源对象实例,使得应用程序可以根据选择操作从下载到的皮肤资源包中加载相应的皮肤资源信息,实现换肤操作,解决了现有技术中需要在APK内置多套皮肤资源导致APK体积增大、换肤灵活性差等问题。此外,本申请示例依据资源对象实例加载的皮肤资源信息刷新应用程序的显示页面,无需用户重新启动应用程序的当前页面,提升用户体验。
附图说明
图1为本申请实施例提供的一种应用程序的换肤处理方法的步骤流程图;
图2为本申请可选实施例提供的一种应用程序的换肤处理方法的步骤流程图;
图3为本申请实施例提供的一种应用程序的换肤处理装置的结构框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为便于对本申请实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本申请实施例的限定。
参照图1,示出了本申请实施例提供的一种应用程序的换肤处理方法的步骤流程图。在具体实现中,本申请实施例提供的应用程序的换肤处理方法,具体可以包括如下步骤:
步骤110,显示应用程序的皮肤资源列表。
具体的,本申请实施例在应用程序启动后,可以进入应用程序的皮肤列表页面,显示该应用程序的皮肤资源列表,以便用户可以通过该皮肤资源列表选择其所需要使用的皮肤资源。其中,皮肤资源列表可以包含一个过多个皮肤资源的主题标识信息,如主题名称等,本申请实施对此不作限制。
步骤120,接收对所述皮肤资源列表中目标资源的选择操作。
其中,目标资源可以是指被选中的皮肤资源。具体而言,本申请实施例在显示应用程序的皮肤资源列表后,可以接收用户针对该皮肤资源列表中某一皮肤资源提交的选择操作,并可将用户通过选择操作选中的皮肤资源作为目标资源,以便后续可以依据该选择操作动态加载目标资源的皮肤资源包。需要说明的是,选择操作可以包括各种用于选中目标资源的操作,如可以是用户点击皮肤资源列表中某一皮肤资源的主题名称的点击操作等,本实施对此不作限制。
步骤130,依据所述选择操作,获取所述目标资源对应的皮肤资源包。
具体的,本申请实施例在接收到对目标资源的选择操作后,可以基于该选择操作,根据目标资源的资源标识(Identity Document,ID)信息,从应用程序的已下载文件中或服务端获取对应的皮肤资源包,以作为目标资源对应的皮肤资源包。其中,应用程序的已下载文件可以是指用于存储应用程序下载到的皮肤资源包的下载文件,且该下载文件中的皮肤资源包可以包含有应用程序在启动后从服务端动态下载到的皮肤资源包。进一步而言,本申请实施例依据所述选择操作,获取所述目标资源对应的皮肤资源包,具体可以包括:基于所述选择操作,获取所述目标资源的皮肤包状态信息;若所述皮肤包状态信息为目标下载状态信息,则从所述应用程序的下载文件中获取所述皮肤资源包;若所述皮肤包状态信息为非目标下载状态信息,则根据所述目标资源的资源标识信息,从所述服务端下载所述皮肤资源包。需要说明的是,目标资源的皮肤包状态信息可以用于确定目标资源的皮肤资源包状态,如在某一目标资源的皮肤资源包状态信息为目标下载状态信息时,可以确定该目标资源的皮肤资源包已经下载到应用程序本地中,处于已下载完成、可使用的状态;而在目标资源的皮肤资源包状态信息为非目标下载状态信息时,可以确定该目标资源的皮肤资源包未下载到应用程序本地中,处于不可用的状态。因此,本实施例在目标资源的皮肤包状态信息为非目标下载状态信息时,可根据目标资源的资源标识信息创建相应的皮肤包下载任务,通过执行皮肤包下载任务,从服务端下载资源标识信息对应的皮肤包,并可将下载到的皮肤包确定为目标资源对应的皮肤资源包,达到应用程序动态下载皮肤资源包的目的。
步骤140,依据所述皮肤资源包的文件路径,构建目标资源管理实例。
步骤150,通过所述目标资源管理实例,构建所述目标资源对应的资源对象实例。
在实际处理中,Android访问资源使用的是资源(Resources)类,但是应用程序里面通过方法getContext()获取到的Resources实例实际上是对应应用程序原生的资源实例,也就是说这个原生的资源实例只能加载App里面的资源,无法加载外置皮肤资源包内的资源。具体而言,Android App所有的资源通常都是使用原生的资源管理框架(AssetManager)去加载的,当使用Resources对象实例根据资源ID去加载资源时,默认会去本APP的目录下的资源文件resources.arsc里去找到资源ID对应的资源名称,然后使得原生的AssetManager可以通过资源名称去加载对应的资源,由此可见应用程序原生的资源实例只能加载App里面的资源,无法加载外置皮肤包内的资源。因此,本申请实施例在获取目标资源对应的皮肤资源包后,根据该皮肤资源包的文件路径构建一个AssetManager对象,以作为目标资源管理实例,以便后续可以通过目标资源管理实例构建目标资源对应的资源对象实例,从而创建出属于目标资源对应的皮肤资源包的Resources对象,作为目标资源对应的资源对象实例,进而可以通过该资源对象实例加载到目标资源对应的皮肤资源包中的资源。
作为本申请的一个示例,可以在应用程序内构建一个Resources对象实例,同时可以让这个Resources对象实例指向所需加载的皮肤资源包,以作为目标资源对应的资源对象实例。具体的,可以构建一个AssetManager对象,并可调用AssetManager对象中的addAssetPath方法将资源文件的路径设置为目标资源对应的皮肤资源包的文件路径,实现了依据皮肤资源包的文件路径构建目标资源管理实例,随后可使用构建的AssetManager对象和应用程序原来的方法DisplayMetrics()获取到的显示屏信息、布局(Configuration)信息构造一个Resources对象实例,以作为目标资源对应的资源对象实例。需要说明的是,Resources可以是指Android应用开发中用于访问资源的应用程序编程接口(ApplicationProgramming Interface,API);方法DisplayMetrics()获取到的显示屏信息可以包括诸如手机等智能终端显示屏的各种基本信息,如尺寸、密度、字体缩放等信息,本示例对此不作限制。
步骤160,依据所述资源对象实例加载的皮肤资源信息,刷新所述应用程序的显示页面。
其中,资源对象实例加载的皮肤资源信息可以是指通过资源对象实例加载到的各种皮肤资源,如背景颜色、字体大小和字体颜色等,本申请实施例对此不作限制。具体的,本申请实施例在构建出目标资源对应的资源对象实例后,可以通过构建的资源对象实例加载目标资源对应的皮肤资源包中的各种皮肤资源信息,以基于加载到的各种皮肤资源信息刷新应用程序的显示页面,无需用户重新启动应用程序当前的显示页面,实现应用程序的换肤功能。
综上,本申请实施例通过显示应用程序的皮肤资源列表,并接收对该皮肤资源列表中目标资源的选择操作,以依据选择操作获取目标资源对应的皮肤资源包,随后依据皮肤资源包的文件路径构建目标资源管理实例,以通过目标资源管理实例构建目标资源对应的资源对象实例,使得应用程序可以根据选择操作从下载到的皮肤资源包中加载相应的皮肤资源信息,实现换肤操作,解决了现有技术中需要在APK内置多套皮肤资源导致APK体积增大、换肤灵活性差等问题。此外,本申请示例依据资源对象实例加载的皮肤资源信息刷新应用程序的显示页面,无需用户重新启动应用程序的当前页面,提升用户体验。
在实际处理中,运营人员可通过资源配置平台,对App中可换肤控件进行管理,如在资源配置平台的可视化页面中对需要换肤控件进行颜色、图片、动画等效果配置,无需编写代码,做到不懂编程也可使用资源配置平台进行皮肤配置,并可在配置完毕后填写此皮肤主题名称,随后点击保存,使得资源配置平台自动根据运营人员配置的方案,调用打包平台jenkins进行打包,得到该皮肤主题名称对应的皮肤资源包,随后可通过网络将该皮肤资源包自动上传到皮肤管理平台,同时邮件通知运营人员进行审核,审核通过后由运营人员点击发布,即可发布到资源管理平台,供用户查看下载。
具体而言,在皮肤资源包上传到服务端后,Android App可以通过互联网请求服务端下发皮肤资源包对应的皮肤列表数据,以依据该皮肤列表数据显示皮肤资源列表,使得用户可在Android App中查看服务端已有的皮肤资源包,进而使得用户可以选择其自己需要的皮肤资源包进行下载,如App会将用户选择的皮肤资源包下载到Android手机存储空间内,然后进行使用。进一步而言,在上述实施例的基础上,本申请实施例显示应用程序的皮肤资源列表,具体可以包括:在应用程序起动后,监测皮肤列表页面的用户触发操作;依据所述用户触发操作,向所述应用程序的服务端发送资源获取请求,所述资源获取请求携带有所述用户触发操作的用户信息;获取所述服务端发送的皮肤列表数据,所述皮肤列表数据包含所述服务端依据所述用户信息推荐的皮肤资源数据;依据所述皮肤列表数据,显示所述皮肤资源列表。
参照图2,示出了本申请可选实施例提供的一种应用程序的换肤处理方法的步骤流程图。具体的,本申请可选实施例提供的应用程序的换肤处理方法具体可以包括如下步骤:
步骤201,在应用程序起动后,监测皮肤列表页面的用户触发操作。
其中,用户触发操作可以用于触发应用程序进入皮肤列表页面,如可以是用户手动进入皮肤列表页面的操作,本申请实施例对此不作限制。
步骤202,依据所述用户触发操作,向所述应用程序的服务端发送资源获取请求。
其中,资源获取请求携带有用户触发操作的用户信息;该用户信息可以用于确定用户,如可以是用户名称、用户标识等,本申请实施例对此不作限制。
步骤203,获取所述服务端发送的皮肤列表数据。
其中,皮肤列表数据包含所述服务端依据用户信息推荐的皮肤资源数据。具体的,用户在启动APP后,可手动进入皮肤列表页面。具体而言,本申请实施例在启动APP后,可监测用户手动进入皮肤列表页面的操作,并可将监测到的操作作为皮肤列表页面的用户触发操作,以针对该用户触发操作向应用程序的服务端发送资源获取请求,从而可以通过该资源获取请求触发服务端根据用户偏好进行数据推荐,达到从服务端获取皮肤列表数据的目的。
作为本申请的一个示例,在用户启动App后,可以选择进入皮肤列表页面。本示例可以将用户选择进入皮肤列表页面的操作确定为皮肤列表页面的用户触发操作,在用户进入皮肤列表页面时依据该用户触发操作向服务端发送资源获取请求,以同时去服务端请求皮肤列表数据。该皮肤列表数据可以包含服务端针对资源获取请求返回的诸如皮肤名称,封面图片和皮肤ID,文件消息摘要算法信息MD5等相关资源信息,以节省用户流量。具体的,服务端在接收到资源获取请求后,可基于该资源获取请求携带的用户信息确定用户偏好的皮肤列表数据,如可以基于用户信息确定用户平时查看皮肤列表数据的分类和/或风格,以根据用户平时查看皮肤列表数据的分类和/或风格进行基本内容的推荐,从而能够向应用程序段返回一个更倾向用户喜好的皮肤列表数据,以此来帮助用户快速的找到自己喜欢的皮肤。
步骤204,依据所述皮肤列表数据,显示所述皮肤资源列表。
步骤205,接收对所述皮肤资源列表中目标资源的选择操作。
具体的,本申请实施例在获取到服务端发送的皮肤列表数据后,可以根据该服务端发送的皮肤列表数据生成皮肤资源列表,并可在应用程序的皮肤列表页面中显示该皮肤资源列表,以供用户选择,使得用户可在Android App中查看服务端已有的皮肤资源包列表,并可基于该皮肤资源列表选择自己所需要的皮肤资源包进行下载,即针对该对皮肤资源列表中目标资源提交选择操作,使得应用程序可接收到用户对皮肤资源列表中目标资源的选择操作。
步骤206,基于所述选择操作,获取所述目标资源的皮肤包状态信息。
具体而言,本申请实施例可基于对目标资源的选择操作,获取目标资源的皮肤包状态信息,以通过判断皮肤包状态信息是否为目标下载状态信息,来确定是否需要从服务端动态下载该目标资源的皮肤资源包。具体的,当皮肤包状态信息为非目标下载状态信息时,可以确定还没有下载该目标资源的皮肤资源包,需要从服务端动态下载该目标资源的皮肤资源包,即执行步骤207;而在皮肤包状态信息为目标下载状态信息时,可以确定该目标资源的皮肤资源包已经下载到应用程序本地的下载文件中,进而可以从本地的下载文件中获取该目标资源的皮肤资源包,即跳转到步骤208执行。
步骤207,若所述皮肤包状态信息为非目标下载状态信息,则根据所述目标资源的资源标识信息,从所述服务端下载所述皮肤资源包。
具体的,在用户选择目标资源后,本申请实施例在基于该用户的选择操作确定出目标资源的皮肤皮肤包状态信息为非目标下载状态信息时,可以从皮肤资源列表中获取目标资源的资源标识信息,以根据该目标资源的资源标识信息创建相应的皮肤包下载任务,从而可以通过执行该皮肤包下载任务,从服务端下载到资源标识信息对应的皮肤包,以作为目标资源对应的皮肤资源包。进一步而言,本申请实施例根据所述目标资源的资源标识信息,从所述服务端下载所述皮肤资源包,具体包括:依据所述资源标识信息创建皮肤包下载任务,所述皮肤包下载任务用于从所述服务端下载所述资源标识信息对应的皮肤包;基于所述皮肤包的下载进度信息,对所述皮肤包进行完整性校验,得到校验结果;若所述校验结果为校验通过结果,则将所述皮肤包确定为所述皮肤资源包,并将所述皮肤包状态信息更新为所述目标下载状态信息;若所述校验结果为校验错误结果,则触发所述皮肤包下载任务重新下载所述皮肤包,并更新所述皮肤包的下载进度信息。其中,皮肤包的下载进度信息可以用于表示皮肤包的下载进度。具体的,本申请实施例在依据资源标识信息创建皮肤包下载任务后,可以通过该皮肤包下载任务从服务端下载资源标识信息对应的皮肤包,并可基于皮肤包的下载进度信息确定是否完成该皮肤包的下载,进而可以在完成皮肤包下载时对该皮肤包进行完整性校验,得到该皮肤包完整性的校验结果。具体而言,在皮肤包的完整性校验通过时,可以产生相应的校验通过结果,以作为皮肤包完整性的校验结果,从而使得应用程序可以依据该皮肤包完整性的校验结果,将该皮肤包确定为目标资源的皮肤资源包,并可将该皮肤包状态信息更新为目标下载状态信息,以便后续可以基于该目标下载状态信息从应用程序的下载文件中获取该皮肤资源包;而在皮肤包的完整性校验不通过时,可以产生相应的校验错误结果,以作为皮肤包完整性的校验结果,从而使得应用程序可以依据该皮肤包完整性的校验结果提示校验错误,并可触发皮肤包下载任务重新下载,同时可以根据重新下载皮肤包的进度更新该皮肤包的下载进度信息。
作为本申请的一个示例,用户浏览到需要的皮肤主题后,可以手动选择下载该皮肤主题对应的皮肤资源包,即应用程序可以根据用户需求下载皮肤资源包到用户设备上,以避免占用设备过多的存储空间,做到仅下载用户需要的皮肤资源包的目的。具体而言,在用户点击所需要下载的皮肤主题后,应用程序可以将该皮肤主题作为目标资源,并可针对用户点击皮肤主题的操作启动下载任务,以通过执行该下载任务,根据皮肤列表中对应的皮肤ID从服务端下载相应的皮肤资源包;当皮肤资源包的下载进度达到100%后,可以根据文件MD5进行皮肤资源包完整性的校验,从而可以在皮肤资源包的完整性校验通过后,更新皮肤资源列表中对应的资源数据,如可以更改目标资源的按钮状态为可使用状态,以将下载完成的皮肤资源包的状态设置为目标下载状态,实现了将皮肤资源包的皮肤包状态信息更新为目标下载状态信息,进而能够避免在下载过程中因网络或其他因素影响导致下载到的皮肤资源包文件不完整,皮肤更换后导致应用程序出现异常的情形,即解决了由于采用不完整的皮肤资源包进行应用程序的换肤操作导致应用程序出现异常、影响用户体验的问题。需要说明的是,皮肤资源列表可以支持用户同时进行多个皮肤资源下载,本示例对此不作限制。
步骤208,若所述皮肤包状态信息为目标下载状态信息,则从所述应用程序的下载文件中获取所述皮肤资源包。
步骤209,依据所述皮肤资源包的文件路径,构建目标资源管理实例。
步骤210,通过所述目标资源管理实例,构建所述目标资源对应的资源对象实例。
具体而言,在皮肤资源列表有可以使用状态皮肤主题后,用户可根据自己喜好,选择对应的皮肤主题。在用户点击使用其所喜好的皮肤主题后,应用程序程序会解析对应的皮肤资源包,以通过加载该皮肤资源包中的皮肤资源信息实现动态换肤功能。进一步而言,本申请实施例通过所述目标资源管理实例,构建所述目标资源对应的资源对象实例,具体可以包括:通过所述目标资源管理实例获取皮肤包名信息;依据应用程序的资源对象标识,确定目标资源特征信息;依据所述皮肤包名信息,从所述皮肤资源包中提取所述目标资源特征信息对应的目标资源对象标识;依据所述目标资源对象标识构建所述资源对象实例。
在实际处理中,皮肤资源文件在编译打包后会生成一张资源表resourse.arsc,将具体的皮肤资源文件与资源表中资源ID一一对应,在运行时,可再由AssetManager根据资源表resourse.arsc加载相应皮肤资源文件。但是,皮肤资源包中相同资源打包编译后,相同资源文件在不同资源表中对应的资源ID却不一样。如果直接通过宿主应用中的资源ID去获取下载到的皮肤资源包中的资源文件时,虽然Resources对象已经是指向皮肤资源包的资源对象了,但此时的资源ID还是宿主应用中的资源ID,而用宿主应用程序中的这些资源ID去加载资源,肯定是加载不到下载到的皮肤资源包中的资源。本申请实施例可以通过使用APP中的资源ID进行一层转换,以通过动态映射找出皮肤资源包中对应的目标资源ID,从而可以通过目标资源ID加载该皮肤资源包中的资源文件。
具体而言,为了使应用程序可以加载到从服务端动态下载到的皮肤资源包中的皮肤资源信息,可以基于宿主应用程序中的资源ID获取对应的资源名称和资源类型,并可将获取到的资源名称和资源类型作为目标资源特征信息,以便后续根据该目标资源特征信息从下载到的皮肤资源包中查找到对应的目标资源ID,并可将查找到的目标资源ID作为目标资源特征信息对应的目标资源对象标识,以依据该目标资源对象标识构建目标资源对应的资源对象实例。需要说明的是,相同资源在不同的资源表中的资源类型和资源名称一样,因此本申请实施例可以通过动态映射找出皮肤资源包中对应的资源ID,作为目标资源ID。
例如,在获取一个资源ID需要资源包名、资源名称和资源类型的情况下,可以通过目标资源管理实例,调用包管理器(PackageManager)的获取方法getPackageArchiveInfo,来获取一个指定路径的包名,作为皮肤包名信息,其中,指定路径为用户选中的目标资源对应的皮肤资源包保存的文件路径,并且可以通过APP中的资源ID获取相应的资源名称和资源类型,以作为目标资源特征信息,随后可依据皮肤包名信息,从目标资源对应的皮肤资源包中提取资源名称和资源类型对应的资源ID,并可将同意提取到的资源作为目标资源对象标识,以依据目标资源对象标识构建一个Resources对象,以作为目标资源对应的资源对象实例。
步骤211,依据所述资源对象实例加载的皮肤资源信息,刷新所述应用程序的显示页面。
具体的,本申请实施例在检测到应用程序的页面刷新操作时,可基于该页面刷新操作触发资源对象实例调用方法getIdentifier,以通过该方法getIdentifier获取皮肤资源包里面对应的目标资源ID,进而可以根据该目标资源ID加载皮肤资源包中的皮肤资源信息,以根据加载到的皮肤资源信息刷新应用程序的显示页面。进一步而言,本申请实施例依据所述资源对象实例加载的皮肤资源信息,刷新所述应用程序的显示页面,具体可以包括:基于所述应用程序的页面刷新操作,触发所述资源对象实例加载所述目标资源对象标识对应的所述皮肤资源信息;基于所述皮肤资源信息刷新所述显示页面。其中,页面刷新操作可以包括各种用于触发应用程序刷新显示页面的操作,如可以是用户点击进入应用程序的另一个展示页面的操作等,本申请实施例对此不作限制。
作为本申请的一个示例,在App开发时可以复写了工程Factory2的创创建控件方法onCreateView,从而可以不通过系统层而是通过App自己拦截从xml映射的控件父集View进行相关View创建的操作,包括对View的属性进行设置,如设置背景色,字体大小,颜色等,以实现换肤的效果。如果创创建控件方法onCreateView的返回值为空(null)值,则可以将创建View的操作交给Activity默认实现的Factory的onCreateView处理,并可使用接口ActivityLifecycleCallbacks,以尽可能少地去侵入代码,如可在接口onActivityCreated中监听每个组件activity的创建,同时可缓存已经创建的view,从而可在皮肤包切换完成后进行页面的即时刷新。具体的,组件Activity的工程Factory2中都有着一个缓存View的集合,可使用观察者模式在换肤成功之后通知到每个Activity去刷新View,无需用户重新启动当前页面,得达到无需重启应用程序即可刷新显示页面的目的。需要说明的是,工程Factory2在Android应用开发中,用于管理每个页面View。
综上,本申请实施例在应用程序起动后,通过监测皮肤列表页面的用户触发操作,以依据用户触发操作向服务端发送资源获取请求,从而可以触发服务端依据用户信息推荐的皮肤资源数据,使得服务端可以动态下发皮肤资源数据到Android应用程序端,如在应用程序在安卓手机上运行后,可以下发到手机内,进而应用程序可以依据服务端推荐的皮肤列表数据显示皮肤资源列表,以供用户选择,达到向用户推荐皮肤资源数据的目的,提高用户体验。
此外,本申请实施例在接收到对皮肤资源列表中目标资源的选择操作后,通过获取目标资源的皮肤包状态信息,以在皮肤包状态信息为非目标下载状态信息时根据所述目标资源的资源标识信息,从服务端下载皮肤资源包,使得应用程序可以动态下载服务端的皮肤资源包,随后可依据皮肤资源包的文件路径构建目标资源管理实例,以通过目标资源管理实例构建目标资源对应的资源对象实例,使得应用程序可以通过动态加载下载到本地的皮肤资源包中的皮肤资源信息,以利用下载到的皮肤资源包中的资源替换App原始皮肤,达到动态换肤目的,解决了现有技术中在应用程序初始APK中内置皮肤资源包导致初始APK体积过大的问题,提高动态管理皮肤包的灵活性,即能够更灵活地动态管理皮肤资源包。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。
本申请实施例还提供了一种应用程序的换肤处理装置。如图3所示,应用程序的换肤处理装置300可以包括如下模块:
皮肤资源列表显示模块310,用于显示应用程序的皮肤资源列表;
选择操作接收模块320,用于接收对所述皮肤资源列表中目标资源的选择操作;
皮肤资源包获取模块330,用于依据所述选择操作,获取所述目标资源对应的皮肤资源包;
资源管理实例构建模块340,用于依据所述皮肤资源包的文件路径,构建目标资源管理实例;
资源对象实例构建模块350,用于通过所述目标资源管理实例,构建所述目标资源对应的资源对象实例;
页面显示模块360,用于依据所述资源对象实例加载的皮肤资源信息,刷新所述应用程序的显示页面。
可选的,所述皮肤资源列表显示模块310可以包括如下子模块:
触发操作监测子模块,用于在应用程序起动后,监测皮肤列表页面的用户触发操作;
获取请求发送子模块,用于依据所述用户触发操作,向所述应用程序的服务端发送资源获取请求,所述资源获取请求携带有所述用户触发操作的用户信息;
列表数据获取子模块,用于获取所述服务端发送的皮肤列表数据,所述皮肤列表数据包含所述服务端依据所述用户信息推荐的皮肤资源数据;
资源列表显示子模块,用于依据所述皮肤列表数据,显示所述皮肤资源列表。
可选的,所述皮肤资源包获取模块330可以包括如下子模块:
皮肤包状态获取子模块,用于基于所述选择操作,获取所述目标资源的皮肤包状态信息;
资源包获取子模块,用于在所述皮肤包状态信息为目标下载状态信息时,从所述应用程序的下载文件中获取所述皮肤资源包;
资源包下载子模块,用于在所述皮肤包状态信息为非目标下载状态信息时,根据所述目标资源的资源标识信息,从所述服务端下载所述皮肤资源包。
可选的,所述资源包下载子模块,包括如下单元:
下载任务创建单元,用于依据所述资源标识信息创建皮肤包下载任务,所述皮肤包下载任务用于从所述服务端下载所述资源标识信息对应的皮肤包;
完整性校验单元,用于基于所述皮肤包的下载进度信息,对所述皮肤包进行完整性校验,得到校验结果;
校验通过单元,用于在所述校验结果为校验通过结果时,将所述皮肤包确定为所述皮肤资源包,并将所述皮肤包状态信息更新为所述目标下载状态信息;
校验错误单元,用于在所述校验结果为校验错误结果时,触发所述皮肤包下载任务重新下载所述皮肤包,并更新所述皮肤包的下载进度信息。
可选的,所述资源对象实例构建模块350包括:
皮肤包名获取子模块,用于通过所述目标资源管理实例获取皮肤包名信息;
资源特征确定子模块,用于依据应用程序的资源对象标识,确定目标资源特征信息;
资源对象标识子模块,用于依据所述皮肤包名信息,从所述皮肤资源包中提取所述目标资源特征信息对应的目标资源对象标识;
资源对象实例子模块,用于依据所述目标资源对象标识构建所述资源对象实例。
可选的,页面显示模块360包括:
皮肤资源加载子模块,用于基于所述应用程序的页面刷新操作,触发所述资源对象实例加载所述目标资源对象标识对应的所述皮肤资源信息;
刷新页面显示子模块,用于基于所述皮肤资源信息刷新所述显示页面。
需要说明的是,上述提供的应用程序的换肤处理装置可执行本申请任意实施例所提供的应用程序的换肤处理方法,具备执行方法相应的功能和有益效果。
在具体实现中,上述应用程序的换肤处理装置可以应用在电子设备中,使得电子设备可以根据选择操作从下载到的皮肤资源包中加载相应的皮肤资源信息,实现应用程序的换肤操作,解决了现有技术中需要在APK内置多套皮肤资源导致APK体积增大、换肤灵活性差等问题。进一步的,本申请实施例还提供一种电子设备,包括:处理器,以及用于存储所述处理器的可执行指令的存储器;其中,所述处理器被配置为执行如上述任意一个方法实施例所述的应用程序的换肤处理方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一个方法实施例所述的应用程序的换肤处理方法的步骤。
需要说明的是,对于装置、设备、存储介质实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种应用程序的换肤处理方法,其特征在于,包括:
显示应用程序的皮肤资源列表;
接收对所述皮肤资源列表中目标资源的选择操作;
依据所述选择操作,获取所述目标资源对应的皮肤资源包;
依据所述皮肤资源包的文件路径,构建目标资源管理实例;
通过所述目标资源管理实例,构建所述目标资源对应的资源对象实例;
依据所述资源对象实例加载的皮肤资源信息,刷新所述应用程序的显示页面。
2.根据权利要求1所述的换肤处理方法,其特征在于,所述显示应用程序的皮肤资源列表,包括:
在应用程序起动后,监测皮肤列表页面的用户触发操作;
依据所述用户触发操作,向所述应用程序的服务端发送资源获取请求,所述资源获取请求携带有所述用户触发操作的用户信息;
获取所述服务端发送的皮肤列表数据,所述皮肤列表数据包含所述服务端依据所述用户信息推荐的皮肤资源数据;
依据所述皮肤列表数据,显示所述皮肤资源列表。
3.根据权利要求1所述的换肤处理方法,其特征在于,所述依据所述选择操作,获取所述目标资源对应的皮肤资源包,包括:
基于所述选择操作,获取所述目标资源的皮肤包状态信息;
若所述皮肤包状态信息为目标下载状态信息,则从所述应用程序的下载文件中获取所述皮肤资源包;
若所述皮肤包状态信息为非目标下载状态信息,则根据所述目标资源的资源标识信息,从所述服务端下载所述皮肤资源包。
4.根据权利要求3所述的换肤处理方法,其特征在于,所述根据所述目标资源的资源标识信息,从所述服务端下载所述皮肤资源包,包括:
依据所述资源标识信息创建皮肤包下载任务,所述皮肤包下载任务用于从所述服务端下载所述资源标识信息对应的皮肤包;
基于所述皮肤包的下载进度信息,对所述皮肤包进行完整性校验,得到校验结果;
若所述校验结果为校验通过结果,则将所述皮肤包确定为所述皮肤资源包,并将所述皮肤包状态信息更新为所述目标下载状态信息;
若所述校验结果为校验错误结果,则触发所述皮肤包下载任务重新下载所述皮肤包,并更新所述皮肤包的下载进度信息。
5.根据权利要求1至4任一所述的换肤处理方法,其特征在于,所述通过所述目标资源管理实例,构建所述目标资源对应的资源对象实例,包括:
通过所述目标资源管理实例获取皮肤包名信息;
依据所述应用程序的资源对象标识,确定目标资源特征信息;
依据所述皮肤包名信息,从所述皮肤资源包中提取所述目标资源特征信息对应的目标资源对象标识;
依据所述目标资源对象标识构建所述资源对象实例。
6.根据权利要求5所述的换肤处理方法,其特征在于,所述依据所述资源对象实例加载的皮肤资源信息,刷新所述应用程序的显示页面,包括:
基于所述应用程序的页面刷新操作,触发所述资源对象实例加载所述目标资源对象标识对应的所述皮肤资源信息;
基于所述皮肤资源信息刷新所述显示页面。
7.一种应用程序的换肤处理装置,其特征在于,包括:
皮肤资源列表显示模块,用于显示应用程序的皮肤资源列表;
选择操作接收模块,用于接收对所述皮肤资源列表中目标资源的选择操作;
皮肤资源包获取模块,用于依据所述选择操作,获取所述目标资源对应的皮肤资源包;
资源管理实例构建模块,用于依据所述皮肤资源包的文件路径,构建目标资源管理实例;
资源对象实例构建模块,用于通过所述目标资源管理实例,构建所述目标资源对应的资源对象实例;
页面显示模块,用于依据所述资源对象实例加载的皮肤资源信息,刷新所述应用程序的显示页面。
8.根据权利要求7所述的换肤处理装置,其特征在于,所述皮肤资源列表显示模块,包括:
触发操作监测子模块,用于在应用程序起动后,监测皮肤列表页面的用户触发操作;
获取请求发送子模块,用于依据所述用户触发操作,向所述应用程序的服务端发送资源获取请求,所述资源获取请求携带有所述用户触发操作的用户信息;
列表数据获取子模块,用于获取所述服务端发送的皮肤列表数据,所述皮肤列表数据包含所述服务端依据所述用户信息推荐的皮肤资源数据;
资源列表显示子模块,用于依据所述皮肤列表数据,显示所述皮肤资源列表。
9.一种电子设备,其特征在于,包括:处理器,以及用于存储所述处理器的可执行指令的存储器;其中,所述处理器被配置为执行如权利要求1至6任一所述的应用程序的换肤处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一所述的应用程序的换肤处理方法。
CN202111624428.XA 2021-12-27 2021-12-27 应用程序的换肤处理方法、装置、设备及介质 Pending CN114296822A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111624428.XA CN114296822A (zh) 2021-12-27 2021-12-27 应用程序的换肤处理方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111624428.XA CN114296822A (zh) 2021-12-27 2021-12-27 应用程序的换肤处理方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN114296822A true CN114296822A (zh) 2022-04-08

Family

ID=80972458

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111624428.XA Pending CN114296822A (zh) 2021-12-27 2021-12-27 应用程序的换肤处理方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN114296822A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129368A (zh) * 2010-01-20 2011-07-20 腾讯科技(深圳)有限公司 界面皮肤更换系统及方法
CN104348703A (zh) * 2013-07-31 2015-02-11 腾讯科技(深圳)有限公司 一种即时通讯工具界面皮肤更换方法及装置
CN106227512A (zh) * 2016-07-07 2016-12-14 网易(杭州)网络有限公司 应用软件显示界面的皮肤更换方法及装置
CN108334385A (zh) * 2017-01-18 2018-07-27 腾讯科技(深圳)有限公司 一种应用的用户界面皮肤管理方法及装置
CN110609720A (zh) * 2018-06-15 2019-12-24 中兴通讯股份有限公司 一种更换应用软件皮肤的方法、装置、系统及存储介质
CN111001162A (zh) * 2019-12-09 2020-04-14 网易(杭州)网络有限公司 游戏的换肤方法及装置、存储介质、处理器
CN111399957A (zh) * 2020-03-17 2020-07-10 北京奇艺世纪科技有限公司 App界面显示方法、装置、终端设备及可读存储介质
CN112231031A (zh) * 2020-10-16 2021-01-15 蜂助手股份有限公司 一种应用程序的动态换肤方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129368A (zh) * 2010-01-20 2011-07-20 腾讯科技(深圳)有限公司 界面皮肤更换系统及方法
CN104348703A (zh) * 2013-07-31 2015-02-11 腾讯科技(深圳)有限公司 一种即时通讯工具界面皮肤更换方法及装置
CN106227512A (zh) * 2016-07-07 2016-12-14 网易(杭州)网络有限公司 应用软件显示界面的皮肤更换方法及装置
CN108334385A (zh) * 2017-01-18 2018-07-27 腾讯科技(深圳)有限公司 一种应用的用户界面皮肤管理方法及装置
CN110609720A (zh) * 2018-06-15 2019-12-24 中兴通讯股份有限公司 一种更换应用软件皮肤的方法、装置、系统及存储介质
CN111001162A (zh) * 2019-12-09 2020-04-14 网易(杭州)网络有限公司 游戏的换肤方法及装置、存储介质、处理器
CN111399957A (zh) * 2020-03-17 2020-07-10 北京奇艺世纪科技有限公司 App界面显示方法、装置、终端设备及可读存储介质
CN112231031A (zh) * 2020-10-16 2021-01-15 蜂助手股份有限公司 一种应用程序的动态换肤方法及装置

Similar Documents

Publication Publication Date Title
US8943164B2 (en) Apparatus and methods for retrieving/ downloading content on a communication device
CN105791324B (zh) 帐号登录方法和装置
US20150188859A1 (en) Presenting information pertaining to a plurality of tabs in an instant messaging application
CN108228293B (zh) 一种界面皮肤切换方法及装置
CN108399119B (zh) 浏览服务内核引擎数据处理、自动化测试的方法和装置
CN105955833B (zh) 引擎调用方法和装置
US11882154B2 (en) Template representation of security resources
CN104469467A (zh) 一种浏览器客户端中进行视频播放的方法、装置和系统
CN110231965B (zh) 一种云端设备、应用程序处理方法及电子设备
CN112035114A (zh) 页面回退方法、装置、设备及介质
CN112836148A (zh) 报表显示方法和装置、存储介质及电子设备
CN112035163A (zh) 软件开发包配置方法、设备和存储介质
CN114040240B (zh) 按钮配置方法、装置、服务器及存储介质
CN115412774A (zh) 互动处理方法、装置、电子设备、存储介质及程序产品
CN106815037B (zh) 应用功能的执行方法及装置
CN108182030B (zh) 一种播放器控件隐藏方法及装置
CN108243229B (zh) 请求处理方法及装置
CN102968244A (zh) 资源预览图的获取方法、装置以及设备
CN114296822A (zh) 应用程序的换肤处理方法、装置、设备及介质
CN107391132B (zh) 目标App执行预设动作的方法及装置、设备
CN112394952B (zh) 基于Hybrid App动态生成Launcher的方法和系统、存储介质
CN113254753B (zh) 一种页面回退方法、装置、电子设备及存储介质
CN115361589A (zh) 页面展示方法、装置、电子设备及存储介质
RU2595763C2 (ru) Способ и устройство менеджмента загрузки на базе браузера android
CN111782191A (zh) 一种项目工程的创建方法和装置

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