CN108008997A - 一种app皮肤统一更换的方法 - Google Patents
一种app皮肤统一更换的方法 Download PDFInfo
- Publication number
- CN108008997A CN108008997A CN201711409463.3A CN201711409463A CN108008997A CN 108008997 A CN108008997 A CN 108008997A CN 201711409463 A CN201711409463 A CN 201711409463A CN 108008997 A CN108008997 A CN 108008997A
- Authority
- CN
- China
- Prior art keywords
- skin
- view
- attribute
- app
- skins
- 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
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种APP皮肤统一更换的方法,步骤如下:(1)自定义命名空间;(2)在需要参与换肤的view中添加自定义命名空间并启用;(3)在AttrFactory中定义在换肤过程中需要更改的换肤属性;(4)实现系统的LayoutInflaterFactory接口;重写onCreateView方法;(5)对需要参与换肤的view,将其属性进行解析,支持换肤的属性放入SkinItem中,作为tag设置给view;(6)判断皮肤是否为默认皮肤;(7)定义一个List类型的列表,需要换肤的view添加到集合中。本发明,无需Activity的重启直接实现皮肤更换,方便快捷,无缝切换主题,APP换肤功能速度快,效果直观,对文字颜色、界面背景、图标样式、色块颜色等能一键切换,便于用户使用。
Description
技术领域
本发明涉及APP换肤功能技术领域,具体说是一种APP皮肤统一更换的方法。皮肤统一更换即指APP换肤功能。
背景技术
现有的Android系统中,在开发APP时,为了满足用户的个性化需求,一般会提供APP换肤功能给用户使用。各种不同操作系统的智能手机均是如此。
APP加载不同的皮肤,细化来说就是:要求APP中的不同控件能够在不同的主题下显示不同的样式。例如:
文字颜色随主题的不同而更换,
界面背景随主题的不同而更换,
图标样式随主题的不同而更换,
色块颜色随主题的不同而更换,
等等。
较为常见的主题有日间主题、夜间主题,主要是供用户按环境光线的强弱而手动或自动的选择。这在阅读类APP中最为常见。还有就是针对特定内容定制的主题,大多采用在线主题的方式,需要下载相应的皮肤包。可以更好的满足不同的人群对于界面风格的喜好,满足大家对于个性化主题的需求。
现有的APP,大都是通过setTheme设置APP主题,定义不同主题下对应的Theme,但是每次切换都需要重启该Activity,对于用户体验并不友好。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种APP皮肤统一更换的方法,无需Activity的重启直接实现皮肤更换,方便快捷,无缝切换主题,APP换肤功能速度快,效果直观,对文字颜色、界面背景、图标样式、色块颜色等能一键切换,便于用户使用。
为达到以上目的,本发明采取的技术方案是:
一种APP皮肤统一更换的方法,其特征在于,包括如下步骤:
步骤1,通过xmlns自定义命名空间;
步骤2,在需要参与换肤的view中添加自定义命名空间并设置启用标志;
步骤3,在AttrFactory中定义在换肤过程中需要更改的换肤属性;
步骤4,实现系统的LayoutInflaterFactory接口,定义为SkinInflateFactory;
重写onCreateView方法,获取view的skin:enable属性值,当设置为true时,认为这个view需要换肤,不需要换肤的view,返回null,使用系统默认的方法创建view,对需要换肤的view,继续执行;
步骤5,对需要参与换肤的view,将其属性进行解析,搜集步骤3中定义的支持换肤的属性放入SkinItem中,并将这个SkinItem作为tag设置给view,以保存这个view对应的需要换肤的属性;
当进行换肤操作时,对view的这些属性进行重新设置;
所述属性的值必须是引用类型;
步骤6,判断皮肤是否为默认皮肤,如果是外部皮肤,则需要重新设置view的换肤的属性值;
步骤7,定义一个List类型的列表,命名为mSkinViews,将需要换肤的view添加到集合中。
在上述技术方案的基础上,步骤3中,所述换肤属性至少包括:
文字颜色textColor,
界面背景background,
图标样式src。
在上述技术方案的基础上,通过定义不同属性的SkinAttr,区分换肤时需要更改的各换肤属性,
当主题更换后,对需要更改的属性,相应的实现一个对应的SkinAttr,
所述SkinAttr包括APPly方法,用于对此属性进行设置。
在上述技术方案的基础上,步骤4中,SkinInflateFactory为自定义的Factory,其中定义一个SkinBaseActivity,所有需要换肤的Activity都需要继承SkinBaseActivity。
在上述技术方案的基础上,步骤6中,如果APP默认显示的是本地皮肤,则皮肤资源从apk的res中获取。
在上述技术方案的基础上,步骤6中,外部皮肤从存储在外部的皮肤资源中经加载后获取。
在上述技术方案的基础上,步骤6中,所述存储在外部的皮肤资源,加载和获取步骤为:
读取对应路径下的文件,即一个apk资源包;
创建AssetManager的实例,通过反射调用assetAddPath()将皮肤资源加载到AssetManager中;
根据AssetManager创建Resources,最终得到外部资源包的Resource 作为当前使用的Resources。
在上述技术方案的基础上,通过观察者模式,当进行换肤操作时,通知所有的观察者来执行换肤。
本发明所述的APP皮肤统一更换的方法,无需Activity的重启直接实现皮肤更换,方便快捷,无缝切换主题,APP换肤功能速度快,效果直观,对文字颜色、界面背景、图标样式、色块颜色等能一键切换,便于用户使用。
附图说明
本发明有如下附图:
图1本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的APP皮肤统一更换的方法,包括如下步骤:
步骤1,通过xmlns自定义命名空间;
例如:
xmlns:skin="http://schemas.Android.com/Android/skin",
通过xmlns自定义命名空间skin,等号后面的是一个URI(统一资源标识符),其值是固定不变的,相当于一个常量,并非可访问的URL;
步骤2,在需要参与换肤的view中添加自定义命名空间并设置启用标志;
例如:
在需要参与换肤的view中添加skin:enable="true",
步骤3,在AttrFactory中定义在换肤过程中需要更改的换肤属性;
AttrFactory为属性解析工厂,描述了如何以什么规则去解析目标属性,即什么属性才认为是需要进行换肤的属性;
步骤4,实现系统的LayoutInflaterFactory接口,定义为SkinInflateFactory;
重写onCreateView方法,获取view的skin:enable属性值,当设置为true时,认为这个view需要换肤,不需要换肤的view,返回null,使用系统默认的方法创建view,对需要换肤的view,继续执行;
LayoutInflaterFactory接口为用于设置界面的布局加载器;
步骤5,对需要参与换肤的view,将其属性进行解析,搜集步骤3中定义的支持换肤的属性放入SkinItem中,并将这个SkinItem作为tag设置给view,以保存这个view对应的需要换肤的属性;
当进行换肤操作时,对view的这些属性进行重新设置;
所述属性的值必须是引用类型,不能直接写值;
步骤6,判断皮肤是否为默认皮肤,如果是外部皮肤,则需要重新设置view的换肤的属性值;
步骤7,定义一个List类型的列表,命名为mSkinViews,将需要换肤的view添加到集合中。
在上述技术方案的基础上,步骤3中,所述换肤属性至少包括:
文字颜色textColor,
界面背景background,
图标样式src。
具体换肤属性的内容可根据需求增减、调整。
在上述技术方案的基础上,通过定义不同属性的SkinAttr,区分换肤时需要更改的各换肤属性,
当主题更换后,对需要更改的属性,相应的实现一个对应的SkinAttr,
所述SkinAttr包括APPly方法,用于对此属性进行设置。
在上述技术方案的基础上,步骤4中,SkinInflateFactory为自定义的Factory,其中定义一个SkinBaseActivity,所有需要换肤的Activity都需要继承SkinBaseActivity。
在上述技术方案的基础上,步骤6中,如果APP默认显示的是本地皮肤,则皮肤资源从apk的res中获取。
在上述技术方案的基础上,步骤6中,外部皮肤从存储在外部的皮肤资源中经加载后获取。
在上述技术方案的基础上,步骤6中,所述存储在外部的皮肤资源,加载和获取步骤为:
读取对应路径下的文件,即一个apk资源包;
创建AssetManager的实例,通过反射调用assetAddPath()将皮肤资源加载到AssetManager中;
根据AssetManager创建Resources,最终得到外部资源包的Resource 作为当前使用的Resources。
在上述技术方案的基础上,通过观察者模式,当进行换肤操作时,通知所有的观察者来执行换肤。换肤操作中,就可以设置需要换肤view的相关属性为当前Resource中的相应的资源。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (8)
1.一种APP皮肤统一更换的方法,其特征在于,包括如下步骤:
步骤1,通过xmlns自定义命名空间;
步骤2,在需要参与换肤的view中添加自定义命名空间并设置启用标志;
步骤3,在AttrFactory中定义在换肤过程中需要更改的换肤属性;
步骤4,实现系统的LayoutInflaterFactory接口,定义为SkinInflateFactory;
重写onCreateView方法,获取view的skin:enable属性值,当设置为true时,认为这个view需要换肤,不需要换肤的view,返回null,使用系统默认的方法创建view,对需要换肤的view,继续执行;
步骤5,对需要参与换肤的view,将其属性进行解析,搜集步骤3中定义的支持换肤的属性放入SkinItem中,并将这个SkinItem作为tag设置给view,以保存这个view对应的需要换肤的属性;
当进行换肤操作时,对view的这些属性进行重新设置;
所述属性的值必须是引用类型;
步骤6,判断皮肤是否为默认皮肤,如果是外部皮肤,则需要重新设置view的换肤的属性值;
步骤7,定义一个List类型的列表,命名为mSkinViews,将需要换肤的view添加到集合中。
2.如权利要求1所述的APP皮肤统一更换的方法,其特征在于:步骤3中,所述换肤属性至少包括:
文字颜色textColor,
界面背景background,
图标样式src。
3.如权利要求2所述的APP皮肤统一更换的方法,其特征在于:通过定义不同属性的SkinAttr,区分换肤时需要更改的各换肤属性,
当主题更换后,对需要更改的属性,相应的实现一个对应的SkinAttr,
所述SkinAttr包括APPly方法,用于对此属性进行设置。
4.如权利要求1所述的APP皮肤统一更换的方法,其特征在于:步骤4中,SkinInflateFactory为自定义的Factory,其中定义一个SkinBaseActivity,所有需要换肤的Activity都需要继承SkinBaseActivity。
5.如权利要求1所述的APP皮肤统一更换的方法,其特征在于:步骤6中,如果APP默认显示的是本地皮肤,则皮肤资源从apk的res中获取。
6.如权利要求5所述的APP皮肤统一更换的方法,其特征在于:步骤6中,外部皮肤从存储在外部的皮肤资源中经加载后获取。
7.如权利要求6所述的APP皮肤统一更换的方法,其特征在于:步骤6中,所述存储在外部的皮肤资源,加载和获取步骤为:
读取对应路径下的文件,即一个apk资源包;
创建AssetManager的实例,通过反射调用assetAddPath()将皮肤资源加载到AssetManager中;
根据AssetManager创建Resources,最终得到外部资源包的Resource 作为当前使用的Resources。
8.如权利要求1所述的APP皮肤统一更换的方法,其特征在于:通过观察者模式,当进行换肤操作时,通知所有的观察者来执行换肤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711409463.3A CN108008997A (zh) | 2017-12-22 | 2017-12-22 | 一种app皮肤统一更换的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711409463.3A CN108008997A (zh) | 2017-12-22 | 2017-12-22 | 一种app皮肤统一更换的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108008997A true CN108008997A (zh) | 2018-05-08 |
Family
ID=62060746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711409463.3A Pending CN108008997A (zh) | 2017-12-22 | 2017-12-22 | 一种app皮肤统一更换的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108008997A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101309A (zh) * | 2018-08-06 | 2018-12-28 | 北京百度网讯科技有限公司 | 用于更新用户界面方法和装置 |
CN109284165A (zh) * | 2018-10-30 | 2019-01-29 | 武汉斗鱼网络科技有限公司 | 客户端换肤方法、装置、设备及计算机可读存储介质 |
CN109684026A (zh) * | 2019-01-14 | 2019-04-26 | 武汉斗鱼鱼乐网络科技有限公司 | App皮肤更换方法、装置、电子设备及存储介质 |
CN109783176A (zh) * | 2019-01-17 | 2019-05-21 | 广州酷狗计算机科技有限公司 | 切换页面的方法和装置 |
CN110187944A (zh) * | 2019-04-25 | 2019-08-30 | 深圳市布谷鸟科技有限公司 | 一种基于安卓系统快速换肤的方法 |
CN111638927A (zh) * | 2020-05-06 | 2020-09-08 | 北京达佳互联信息技术有限公司 | 一种皮肤切换方法及装置 |
CN111813471A (zh) * | 2020-06-16 | 2020-10-23 | 北京明略软件系统有限公司 | 一种换肤的方法、终端和存储介质 |
CN112231031A (zh) * | 2020-10-16 | 2021-01-15 | 蜂助手股份有限公司 | 一种应用程序的动态换肤方法及装置 |
CN112685113A (zh) * | 2020-12-28 | 2021-04-20 | 金现代信息产业股份有限公司 | iOS的换肤方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129368A (zh) * | 2010-01-20 | 2011-07-20 | 腾讯科技(深圳)有限公司 | 界面皮肤更换系统及方法 |
CN103176810A (zh) * | 2011-12-26 | 2013-06-26 | 北京神州泰岳软件股份有限公司 | 一种安卓操作系统的终端换肤的方法和系统 |
US20160266939A1 (en) * | 2013-03-15 | 2016-09-15 | Advanced Elemental Technologies, Inc. | Purposeful computing |
CN102810060B (zh) * | 2011-06-01 | 2016-11-09 | 腾讯科技(深圳)有限公司 | 一种安致图片资源配置方法及装置 |
CN107092507A (zh) * | 2017-04-18 | 2017-08-25 | 杭州云永网络科技有限公司 | 应用程序的换肤方法、装置及系统 |
-
2017
- 2017-12-22 CN CN201711409463.3A patent/CN108008997A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129368A (zh) * | 2010-01-20 | 2011-07-20 | 腾讯科技(深圳)有限公司 | 界面皮肤更换系统及方法 |
CN102810060B (zh) * | 2011-06-01 | 2016-11-09 | 腾讯科技(深圳)有限公司 | 一种安致图片资源配置方法及装置 |
CN103176810A (zh) * | 2011-12-26 | 2013-06-26 | 北京神州泰岳软件股份有限公司 | 一种安卓操作系统的终端换肤的方法和系统 |
US20160266939A1 (en) * | 2013-03-15 | 2016-09-15 | Advanced Elemental Technologies, Inc. | Purposeful computing |
CN107092507A (zh) * | 2017-04-18 | 2017-08-25 | 杭州云永网络科技有限公司 | 应用程序的换肤方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
YAGAMI3ZZ: "Android动态换肤原理解析及实践", 《HTTPS://WWW.JIANSHU.COM/P/C2B1AE56381E》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101309A (zh) * | 2018-08-06 | 2018-12-28 | 北京百度网讯科技有限公司 | 用于更新用户界面方法和装置 |
CN109101309B (zh) * | 2018-08-06 | 2021-10-01 | 北京百度网讯科技有限公司 | 用于更新用户界面方法和装置 |
CN109284165A (zh) * | 2018-10-30 | 2019-01-29 | 武汉斗鱼网络科技有限公司 | 客户端换肤方法、装置、设备及计算机可读存储介质 |
CN109284165B (zh) * | 2018-10-30 | 2021-11-09 | 武汉斗鱼网络科技有限公司 | 客户端换肤方法、装置、设备及计算机可读存储介质 |
CN109684026A (zh) * | 2019-01-14 | 2019-04-26 | 武汉斗鱼鱼乐网络科技有限公司 | App皮肤更换方法、装置、电子设备及存储介质 |
CN109783176A (zh) * | 2019-01-17 | 2019-05-21 | 广州酷狗计算机科技有限公司 | 切换页面的方法和装置 |
CN109783176B (zh) * | 2019-01-17 | 2022-02-22 | 广州酷狗计算机科技有限公司 | 切换页面的方法和装置 |
CN110187944A (zh) * | 2019-04-25 | 2019-08-30 | 深圳市布谷鸟科技有限公司 | 一种基于安卓系统快速换肤的方法 |
CN111638927A (zh) * | 2020-05-06 | 2020-09-08 | 北京达佳互联信息技术有限公司 | 一种皮肤切换方法及装置 |
CN111813471A (zh) * | 2020-06-16 | 2020-10-23 | 北京明略软件系统有限公司 | 一种换肤的方法、终端和存储介质 |
CN112231031A (zh) * | 2020-10-16 | 2021-01-15 | 蜂助手股份有限公司 | 一种应用程序的动态换肤方法及装置 |
CN112685113A (zh) * | 2020-12-28 | 2021-04-20 | 金现代信息产业股份有限公司 | iOS的换肤方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108008997A (zh) | 一种app皮肤统一更换的方法 | |
CN106126215B (zh) | 业务规则脚本生成方法及装置 | |
KR102471174B1 (ko) | 테마 적용 방법 및 이를 수행하는 전자 장치 | |
US7954087B2 (en) | Template integration | |
JP5373900B2 (ja) | カスタマイズを伴うコンピュータアプリケーションパッケージ | |
CN102810060B (zh) | 一种安致图片资源配置方法及装置 | |
US20150020006A1 (en) | Method and system for creating dynamic browser-based user interface by example | |
CN101216765B (zh) | 一种移动终端主题样式的动态变更方法 | |
CN102043618B (zh) | 一种窗口对象显示样式的控制方法及装置 | |
US20070162892A1 (en) | Template-based configuration architecture | |
EP2668601B1 (en) | Self-provisioning of configuration for a client | |
US20120042076A1 (en) | Method and apparatus for managing application resources via policy rules | |
WO2016064752A1 (en) | System and method for customizing a theme for modifying a look and feel of a graphical user interface | |
CN107844352B (zh) | 一种应用界面配置方法和装置 | |
TW201723895A (zh) | 模組的佈局模板的擴展方法和裝置 | |
CN108804188A (zh) | 界面换肤方法及装置 | |
US20130325534A1 (en) | Terminal management system, management server, and method therefor | |
US20060026527A1 (en) | Method for customizing the visual attributes of a user interface | |
CN103324388A (zh) | 一种对快捷图标进行修改的方法和装置 | |
CN101673372A (zh) | 一种更新物料清单的方法和装置 | |
CN110688115A (zh) | 生成界面的方法和装置 | |
US20140282062A1 (en) | Techniques for efficient and granular composition of a user profile | |
CN104915188A (zh) | 一种变更主题的方法、系统及移动终端 | |
CN102193806A (zh) | 更新动画的方法和装置 | |
CN102122245A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180508 |