CN110187944A - 一种基于安卓系统快速换肤的方法 - Google Patents
一种基于安卓系统快速换肤的方法 Download PDFInfo
- Publication number
- CN110187944A CN110187944A CN201910338376.6A CN201910338376A CN110187944A CN 110187944 A CN110187944 A CN 110187944A CN 201910338376 A CN201910338376 A CN 201910338376A CN 110187944 A CN110187944 A CN 110187944A
- Authority
- CN
- China
- Prior art keywords
- skin
- packet
- android system
- configuration
- changes
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于安卓系统快速换肤的方法,包括如下步骤:步骤1,初始化皮肤应用模块将视图属性和配置皮肤包路径添加至换肤配置;步骤2,根据换肤配置扫描皮肤包集合中皮肤包路径将皮肤包信息添加至换肤配置;步骤3,根据添加的皮肤包信息通过皮肤包配置加载线程加装皮肤包及其构造;步骤4,判断是否已注册换肤监听;步骤5,判断皮肤管理器中的所述皮肤包集合是否存在换肤组件;步骤6,判断当前皮肤包信息与所述换肤配置中的信息是否一致;发明改进优化了安卓系统快速换肤的方法,无需重启应用即可支持拓展更新更换字样、图片、色样等自定义属性参数,从而实现无缝快速更换车载终端系统主题的换肤效果,增强了车载终端用户体验。
Description
技术领域
本发明涉及汽车中控多媒体系统领域,具体涉及一种基于安卓系统快速换肤的方法。
背景技术
随着安卓系统的广泛应用,用户对安卓系统UI设计和使用体验有着越来越高的要求,仅依靠原生安卓自带的主题换肤功能已无法满足用户对换肤操作速度和使用体验的需求。应用于不同领域的安卓系统一般都具有自己的主题皮肤,尤其是车载终端领域的系统皮肤也越来越追求个性化,用户可根据自己的喜好更换系统的主题皮肤,由于车载终端系统涉及路线导航、多媒体播放、语音通话等功能界面较多,一套界面涉及字体、图样、色样、应用参数等诸多配置参数,原生安卓系统在更换这些主题皮肤时需对这些配置参数进行加载更新,因原生安卓系统没有无需重启换肤的换肤框架,无法达到“无缝”换肤的效果,在更新完这些配置参数后还得进行重启应用再做资源初始化加载才能完成换肤操作,换肤过程繁琐、速度较慢,也不支持拓展自定义界面属性的更换;对于车载终端系统的主题换肤,用户体验是要求保留各种应用的换肤界面前页面,在双屏异显情况下也要求副屏应用做到无重启应用过程的无缝视觉级别的换肤,这些要求都是原生安卓系统所无法实现的;开发人员对原生安卓系统需要改动原本应用的代码较多才能实现主题换肤,无法直接根据图片资源等制作出独立的皮肤包,开发便利性差,技术难度较高,不便于交代给低级别专人管理操作,阻碍了应用的开发效率。为满足用户依不同使用需求对安卓系统主题皮肤能任意更换的要求,追求系统能无缝快速换肤体验,如能研发一种无缝快速更换主题界面皮肤的方法,那将大大满足用户个性化定主题界面皮肤的使用体验、提高安卓系统换肤性能和开发能力。
传统的安卓应用主题界面的换肤方式是在应用内增添非常多的样式style定义配置,或者利用谷歌安卓系统的AssetManager接口反射根据绝对路径apk包资源进行添加构造成本地可用的Resources资源文件,再通过获取到的Resources资源文件获取对应资源重启初始化更新界面换肤的换肤方式,这些方法的缺陷都比较累赘需要不适用快捷省事的原则,需要重启应用才能完成换肤操作。
发明内容
本发明的目的在于针对上述现有技术的不足,提供了一种基于安卓系统快速换肤的方法。
本发明的技术方案是这样实现的:
一种基于安卓系统快速换肤的方法,包括如下步骤:
步骤1,初始化皮肤应用模块,将待刷新的视图属性和配置皮肤包所在路径添加至换肤配置;
步骤2,根据所述换肤配置扫描皮肤包集合中皮肤包所在路径,并将皮肤包信息添加至所述换肤配置2;
步骤3,根据添加的皮肤包信息通过皮肤包配置加载线程加装皮肤包及其构造;
步骤4,判断是否已注册换肤监听,如果没有则注册并重新选定皮肤包加载,若有则继续下一步骤;
步骤5,判断皮肤管理器中的所述皮肤包集合是否存在换肤组件,如果存在则统一遍历所述皮肤包集合中的所述换肤组件,并触发对应皮肤属性调用换肤接口刷新换肤,如果不存在则返回执行步骤2;
步骤6,所述换肤监听监听到换肤后,判断当前皮肤包信息与所述换肤配置中的信息是否一致,若不一致则重新调用皮肤包并执行步骤5。
进一步,所述步骤2中的所述皮肤包信息分前缀信息和后缀信息,所述前缀信息为应用名称,所述后缀信息为皮肤代号名称。
进一步,所述步骤3,根据添加的皮肤包信息通过皮肤包配置加载线程异步或同步加装皮肤包及其构造。
进一步,所述换肤组件包括悬浮窗视图换肤组件、碎片换肤组件及活动换肤组件,所述换肤组件还支持动态添加新的布局扫描解析和动态添加视图属性监听回调。
进一步,步骤5中,所述换肤组件进入生命周期,解析、创建、映射视图属性组成属性工厂模块中的支持属性集合。
进一步,所述换肤组件存储至所述皮肤管理器。
进一步包括以下步骤:所述换肤组件的生命周期销毁。
进一步包括以下步骤:清空所述支持属性集合,并从所述皮肤管理器清除当前所述换肤组件。
所述视图属性通过AIDL的跨进程回调来执行更新回调。
与现有技术相比,本发明改进优化了安卓系统快速换肤的方法,无需重启应用即可支持拓展更新更换字样、图片、色样等自定义属性参数,从而实现无缝快速更换车载终端系统主题的换肤效果,增强了车载终端用户体验。
附图说明
下面结合附图中的实施例对本发明作进一步的详细说明,但并不构成对本发明的任何限制。
图1是本发明提出的原理结构示意图;
图2是本发明提出的安卓系统快速换肤方法流程图;
图3是本发明提出的安卓系统快速换肤方法换肤组件进入生命周期执行流程图;
图中:1、皮肤应用模块;2、换肤配置;3、皮肤包集合;4、皮肤包加载线程;5、换肤监听;6、皮肤管理器;7、换肤组件;8、皮肤属性;9、换肤接口;10、属性工厂模块;11、支持属性集合;12、换肤控件工厂接口;13、属性名称。
具体实施方式
下面结合附图对本发明作进一步说明,但不作为对本发明的限定。
如图1至3所示,本发明一种基于安卓系统快速换肤的方法,静态结构说明:
皮肤应用模块1SkinApplication:运用软件开发工具包SDK的jar包的应用的Application需要集成该类,主要是达到内部初始化,抛出抽象配置接口。
皮肤管理器6SkinManager:提供单例管理器,实现对换肤管理的控制和提供资源获取通用接口。
皮肤包加载线程4SkinLoader:皮肤包加载线程,运用反射构造资源Resources,若加载失败则返回使用应用本身原始的资源Resources。
换肤监听5ThemeChangeListener:监听换肤指令回调。
属性工厂模块10AttrFactory:该类会匹配视图View的相同属性的,构造返回并映射好属性名称的SkinAttr对象实例。
支持属性集合11SupportAttrMaps:把支持的过滤属性名称13存放在静态的集合,和对应的映射SkinAtrr对象,实现接口为刷新接口。
换肤组件7SkinActivity:应用通过继承该类,可以实现自动换肤功能,支持动态添加新的layout扫描解析,动态添加view属性监听回调。
皮肤包集合3SkinPackagesMap:存放换肤组件的集合,皮肤包的新增支持应用动态监听扫描出有新增皮肤包,及时把皮肤包存在应用选肤配置内集合。
包括如下步骤:
步骤1,初始化皮肤应用模块1,将待刷新的视图属性和配置皮肤包所在路径添加至换肤配置2,所述视图属性通过AIDL跨进程通知启动回调管理器去更新调用视图View属性,更新参数则是去获取皮肤资源来更新UI界面,可以根据自定义视图View属性来设置回调刷新View参数属性,也可以当作配置传参来运用到整个应用中;
步骤2,根据所述换肤配置2扫描皮肤包集合3中皮肤包所在路径,并将皮肤包信息添加至所述换肤配置2,所述皮肤包信息分前缀信息和后缀信息,所述前缀信息为应用名称,所述后缀信息为皮肤代号名称,皮肤包所在路径的选取指定,依靠文件扫描路径下所有相关带目标标记后缀的文件,来配置当前应用拥有那几个皮肤包资源,而且只加载其中一个皮肤资源包,加载过程是在另起的优化线程中运行;
步骤3,根据添加的皮肤包信息通过皮肤包配置加载线程4加装皮肤包及其构造;
步骤4,判断是否已注册换肤监听5,如果没有则注册并重新选定皮肤包加载,若有则继续下一步骤;
步骤5,判断皮肤管理器6中的所述皮肤包集合3是否存在换肤组件7,如果存在则统一遍历所述皮肤包集合3中的所述换肤组件7,并触发对应皮肤属性8调用换肤接口9刷新换肤,所述换肤组件7进入生命周期,所述换肤组件7上的换肤控件工厂接口12解析、创建、映射视图属性组成属性工厂模块10中的支持属性集合11,如果不存在则返回执行步骤2;
步骤6,所述换肤监听5监听到换肤后,判断当前皮肤包信息与所述换肤配置2中的信息是否一致,若不一致则重新调用皮肤包并执行步骤5。
所述换肤组件7包括悬浮窗视图换肤组件SkinWindow、碎片换肤组件SkinFragment 及活动换肤组件SkinActivity,所述换肤组件7还支持动态添加新的布局扫描解析和动态添加视图属性监听回调,三个组件只有碎片换肤组件SkinFragment依赖活动换肤组件 SkinActivity,生命周期是一致,另外一个悬浮窗视图换肤组件SkinWindow是完全独立的,生命周期是看新增的窗口界面有没有显示,不显示则销毁退出,有界面显示则生命周期存在。悬浮窗视图换肤组件Skinwindow的使用步骤,浮窗视图换肤组件Skinwindow传入上下文Context创建对象,然后通过get到浮窗视图换肤组件Skinwindow里面的LayoutInflater去解析需要进行显示的layout。转化成视图View对象,再通过浮窗视图换肤组件Skinwindow这个对象去showView显示,完成当次界面视图View的生命周期显示,在这个显示期间,换肤功能对这个界面视图View起到作用,当界面不显示了,调用了浮窗视图换肤组件Skinwindow对象的hideView或者removeView将界面视图View不显示或移除。则换肤功能对这个界面View失效并且销毁该View所留在稀疏数组容器里面的所有相关资源属性。清掉内存空间。浮窗视图换肤组件Skinwindow是利用重写的LayoutInflater 进行拦截扫描解析layout的xml文件,并且使用对应稀疏数组容器装载视图View对象,LayoutInflater初始化layout资源时,考虑判断当前资源的选用,如果是用的是本身应用资源则不会调用更新皮肤的资源,省掉多余工作。
所述换肤组件7存储至所述皮肤管理器6。
进一步包括以下步骤:所述换肤组件7的生命周期销毁,突出的优化技巧在于插件式使用和内存监控,用完即时销毁,不会造成占用内存过多。
进一步包括以下步骤:清空所述支持属性集合11,并从所述皮肤管理器6清除当前所
述换肤组件7。
以上所述的实施例,只是本发明较优选的具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (9)
1.一种基于安卓系统快速换肤的方法,其特征在于,包括如下步骤:
步骤1,初始化皮肤应用模块(1),将待刷新的视图属性和配置皮肤包所在路径添加至换肤配置(2);
步骤2,根据所述换肤配置(2)扫描皮肤包集合(3)中皮肤包所在路径,并将皮肤包信息添加至所述换肤配置(2);
步骤3,根据添加的皮肤包信息通过皮肤包配置加载线程(4)加装皮肤包及其构造;
步骤4,判断是否已注册换肤监听(5),如果没有则注册并重新选定皮肤包加载,若有则继续下一步骤;
步骤5,判断皮肤管理器(6)中的所述皮肤包集合(3)是否存在换肤组件(7),如果存在则统一遍历所述皮肤包集合(3)中的所述换肤组件(7),并触发对应皮肤属性(8)调用换肤接口(9)刷新换肤,如果不存在则返回执行步骤2;
步骤6,所述换肤监听(5)监听到换肤后,判断当前皮肤包信息与所述换肤配置(2)中的信息是否一致,若不一致则重新调用皮肤包并执行步骤5。
2.根据权利要求1所述的一种基于安卓系统快速换肤的方法,其特征在于,所述步骤2中的所述皮肤包信息分前缀信息和后缀信息,所述前缀信息为应用名称,所述后缀信息为皮肤代号名称。
3.根据权利要求1所述的一种基于安卓系统快速换肤的方法,其特征在于,所述步骤3,根据添加的皮肤包信息通过皮肤包配置加载线程(4)异步或同步加装皮肤包及其构造。
4.根据权利要求1所述的一种基于安卓系统快速换肤的方法,其特征在于,所述换肤组件(7)包括悬浮窗视图换肤组件、碎片换肤组件及活动换肤组件,所述换肤组件(7)还支持动态添加新的布局扫描解析和动态添加视图属性监听回调。
5.根据权利要求1所述的一种基于安卓系统快速换肤的方法,其特征在于,步骤5中,所述换肤组件(7)进入生命周期,解析、创建、映射视图属性组成属性工厂模块(10)中的支持属性集合(11)。
6.根据权利要求5所述的一种基于安卓系统快速换肤的方法,其特征在于,所述换肤组件7存储至所述皮肤管理器(6)。
7.根据权利要求5所述的一种基于安卓系统快速换肤的方法,其特征在于,进一步包括以下步骤:所述换肤组件(7)的生命周期销毁。
8.根据权利要求7所述的一种基于安卓系统快速换肤的方法,其特征在于,进一步包括以下步骤:清空所述支持属性集合(11),并从所述皮肤管理器(6)清除当前所述换肤组件(7)。
9.根据权利要求1至8任意一项所述的一种基于安卓系统快速换肤的方法,其特征在于,所述视图属性通过AIDL的跨进程回调来执行更新回调。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910338376.6A CN110187944A (zh) | 2019-04-25 | 2019-04-25 | 一种基于安卓系统快速换肤的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910338376.6A CN110187944A (zh) | 2019-04-25 | 2019-04-25 | 一种基于安卓系统快速换肤的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110187944A true CN110187944A (zh) | 2019-08-30 |
Family
ID=67714989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910338376.6A Pending CN110187944A (zh) | 2019-04-25 | 2019-04-25 | 一种基于安卓系统快速换肤的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110187944A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110908655A (zh) * | 2019-10-16 | 2020-03-24 | 浙江大搜车软件技术有限公司 | 换肤方法、装置、计算机设备和可读存储介质 |
CN111435313A (zh) * | 2019-12-09 | 2020-07-21 | 杭州海康威视数字技术股份有限公司 | 一种软件换肤的方法及装置 |
CN112685113A (zh) * | 2020-12-28 | 2021-04-20 | 金现代信息产业股份有限公司 | iOS的换肤方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101788906A (zh) * | 2010-01-21 | 2010-07-28 | 中兴通讯股份有限公司 | 资源管理方法和系统 |
CN102810060A (zh) * | 2011-06-01 | 2012-12-05 | 腾讯科技(深圳)有限公司 | 一种安致图片资源配置方法及装置 |
CN103019781A (zh) * | 2012-12-04 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种基于Android系统的快速换肤方法 |
CN108008997A (zh) * | 2017-12-22 | 2018-05-08 | 北京酷我科技有限公司 | 一种app皮肤统一更换的方法 |
-
2019
- 2019-04-25 CN CN201910338376.6A patent/CN110187944A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101788906A (zh) * | 2010-01-21 | 2010-07-28 | 中兴通讯股份有限公司 | 资源管理方法和系统 |
CN102810060A (zh) * | 2011-06-01 | 2012-12-05 | 腾讯科技(深圳)有限公司 | 一种安致图片资源配置方法及装置 |
CN103019781A (zh) * | 2012-12-04 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种基于Android系统的快速换肤方法 |
CN108008997A (zh) * | 2017-12-22 | 2018-05-08 | 北京酷我科技有限公司 | 一种app皮肤统一更换的方法 |
Non-Patent Citations (1)
Title |
---|
YAGAMI3ZZ: "Android动态换肤原理解析及实践", 《HTTPS://WWW.JIANSHU.COM/P/C2B1AE56381E》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110908655A (zh) * | 2019-10-16 | 2020-03-24 | 浙江大搜车软件技术有限公司 | 换肤方法、装置、计算机设备和可读存储介质 |
CN110908655B (zh) * | 2019-10-16 | 2023-12-05 | 浙江大搜车软件技术有限公司 | 换肤方法、装置、计算机设备和可读存储介质 |
CN111435313A (zh) * | 2019-12-09 | 2020-07-21 | 杭州海康威视数字技术股份有限公司 | 一种软件换肤的方法及装置 |
CN112685113A (zh) * | 2020-12-28 | 2021-04-20 | 金现代信息产业股份有限公司 | iOS的换肤方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110187944A (zh) | 一种基于安卓系统快速换肤的方法 | |
US7730333B2 (en) | Intermittent computing | |
CN110569130B (zh) | 一种跨进程通信方法、装置及设备 | |
CN102096631A (zh) | 接口测试方法及装置 | |
US20210211361A1 (en) | Management of artificial intelligence development platform | |
CN102455851A (zh) | 用于在不同用户设备中显示用户界面的方法和装置 | |
CN111316230A (zh) | 一种补丁包生成方法及设备 | |
US11301780B2 (en) | Method and electronic device for machine learning based prediction of subsequent user interface layouts | |
CN104462605B (zh) | 一种数据库持久层框架配置、修改方法及系统 | |
CN101345933A (zh) | 手机显示字体及字体大小的动态更改与装卸方法 | |
CN106201211A (zh) | 一种屏幕显示方法和装置 | |
CN101287220B (zh) | 移动终端的主题管理系统和主题管理方法 | |
WO2012024951A1 (zh) | 一种移动终端的窗口管理方法和装置 | |
CN115408636A (zh) | 一种基于angular框架的系统主题色的自定义方法及系统 | |
CN105354016A (zh) | 一种管理应用程序主题的系统和方法 | |
CN112559109A (zh) | 基于组件库的显示界面的生成方法及系统、设备及介质 | |
CN101419551A (zh) | 在交互操作软件中进行面板更新的方法及装置 | |
CN111638927A (zh) | 一种皮肤切换方法及装置 | |
CN110908684A (zh) | 一种更新配置页面内存丝印信息的方法和装置 | |
CN111857782A (zh) | 界面更新方法、装置、计算机设备和存储介质 | |
EP2178279B1 (en) | Generation method and mobile terminal for optimizing mobile terminal operation sequence | |
CN110336693A (zh) | 网络块设备的管理方法、装置、设备和存储介质 | |
CN104766356A (zh) | 一种iOS动画制作方法及装置 | |
CN109032728A (zh) | Ui界面显示方法、智能终端及计算机可读存储介质 | |
WO2024046088A1 (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190830 |
|
RJ01 | Rejection of invention patent application after publication |