当前位置:首页 > TAG信息列表 > 自己怎么制作手机主题

自己怎么制作手机主题

怎样制作手机主题(安卓手机如何定制主题)

目的:
为了加强用户体验,增强品牌效应,使我们的产品有自己独特的风格,主题的定制将会是必然趋势……
然而android原生系统是不支持主题定制的,所以如何来定制主题,如何做得更好,需要大家集思广益……
策略:
将介绍两种定制主题的机制:
1.根据androidconfigurationqualifier机制,加入我们自己的jrdtheme定制。
2.用主题包的形式,根据用户选择不同的主题,而加载不同主题包中的资源。
基本原理:
首先介绍方式一:
androidconfigurationqualifier
android系统为一个项目提供了多套可供选择的资源,通过命名特殊的资源文件夹来区别它们。系统在运行的时候,根据设备的当前配置为每个应用加载合适的资源。
这些不同的资源都是放在每个应用的res/目录下面的,特殊的命名方式是<resources_name>-<config_qualifier>:
<resources_name>:资源文件夹的名字,与默认资源文件夹保持一致
<config_qualifier>:根据设备不同配置,需要使用的资源文件夹名字
android系统根据优先级的先后顺序已经支持多种configurationqualifier,如图1:

怎样制作手机主题(安卓手机如何定制主题)

如何添加jrdthemeresources
jrdtheme的核心策略是当我们设定了不同的主题后,会自动的替换我们想要替换的资源(framework&app)。具体步骤如下:
1.工程师从ue哪里获得我们想要改变的主题资源,
2.把这些资源放到对应模块的res/目录下,以contacts模块为例,假如我们想要定制drawable、color、layout。
原来在contacts模块中默认的资源目录如下:
res/
layout/
main.xml
info.xml
drawable/
icon.png
values/
colors.xml
定制后的资源目录如下:
res/
layout/
main.xml
info.xml
layout-jrdthemexxx/
main.xml
info.xml
drawable/
icon.png
drawable-jrdthemexxx/
icon.png
values/
colors.xml
values-jrdthemexxx/
colors.xml
notes:jrdthemexxx是其中一个主题的qualifier,如果有多个主题,那么将会有多个jrdthemexxx存在。
3.与原来一样编译这些模块,push到手机中即可。
这只是一个guide,具体实现还要细化……目前在diablo、beetle上面已经用这种方式实现了……我在smartiii上尝试过,机制没问题,但是改动的范围太大了,比较麻烦。

方式二:

核心思想:系统中有多套主题资源包,并且应用可以用相同的资源id来访问不同资源包中对应的资源。android原生系统的资源访问流程对应用来说,资源访问主要有下面三种方
式:
第一、比较普遍的方式是使用xml定义,并且通过aapt工具生成一个r文件,列出资源的索引来让android系统自己去遍历整个资源树的方式来访问。
第二、通过resources接口来访问,使用resources类的getdrawable、getstring等接口来获取资源。
第三、通过assetmanager类的接口去访问,使用这个类的open方法来返回一个inputstream对象得到资源。
其实这三个访问方式只是android资源访问中整个流程中在不同层次对外提供的三个接口,到底层的实现都是殊途同归的。
因此我们实际上需要修改的部分主干是在访问资源具体路径前,按照当前系统主题设置访问不同资源apk下的文件
即是把原生android中资源id和资源文件路径之间一对一的关系改为一对多的关系。
例子如下:如果原有资源id和资源文件路径关系为:
r.drawable.image01=0x7f020001
通过系统的资源查找之后找到文件路径为
/system/app/frameworks-res.apk下的res/drawable_hdpi/icon.png
在assetmanagernative中去读取资源并上传。
那么我们需要做的是在传入路径去读取资源时把文件路径替换为
/data/app/systemtheme01.apk下的res/drawable_hdpi/icon.png

​​


游戏本之家 变美精选

  • 关注微信关注微信

猜你喜欢

微信公众号