android主题机制(二)

基于前文对安卓主题的全面理解,本文将通过活用主题的机制,通过重定向资源文件,达到换肤的效果。这样可以在不更改逻辑,不重新打包应用,只通过R.java中资源文件的id重定向,即可达到美化系统的效果。

    先简单介绍下重定向的原理:

    1、系统启动时,开机关键的核心服务,开启主题相关服务AssetRedirectionManagerService

       

    该服务是主题的核心,用于重定向系统的资源引用,从而达到替换的效果

    

    以上列出了该服务的所有方法,主线通过getPackageRedirectionMap-》generatePackageRedirectionMap-》generateExplicitRedirections-》process,将id对应res资源的定向保存在map映射中,我们通过对该map的修改,即可达到替换的效果。

下面具体讲讲主题包开发的流程:

    1、任何一个主题包的目录结构都包括Android.mk,AndroidManifest.xml和res文件夹,res大致包含以下内容

    

anim保存动画文件

color保存颜色值

drawable多用于存放selector文件

drawable-hdpi适配QHD分辨率并向上兼容

drawable-land-hdpi适配QHD横屏分辨率

nodpi适配时不会拉伸图片

drawable-320dp-hdpi适配480p(320*1.5)的手机

drawable-360dp-hdpi适配540p手机

drawable-360dp-xhdpi适配720p(360*2)的手机

drawable-xhdpi适配HD分辨率并向上兼容

drawable-xxhdpi适配FHD分辨率并向上兼容

drawable-zh-rCN-hdpi适配简体中文的资源,多用于图片上有汉字

drawable-zh-rTW-hdpi适配繁体中文的资源

mipmap-hdpi多用于QHD分辨率的应用图标

mipmap-xhdpi多用于HD分辨率的应用图标

values存放strings、dimen、标签形式的color、drawable文件,分辨率适配类似drawable,不赘述

xml存放配置文件和映射关系,该目录具体如下:



android.xml为framework中需要替换的资源,中间两个分别为待办事项和淘宝需要替换的资源,命名均为包名,redirections为重定向字典文件,内容如下:

如淘宝,如要替换淘宝的资源,会从该列表中分析淘宝的包名,对应的关联文件com_taobao_taobao.xml去寻找要替换哪些图片。


在com_taobao_taobao.xml中,我们又看到了需要替换的资源只有icon(为淘宝资源包中图片的名称),要替换为drawable/com_taobao_taobao_icon(为当前主题包中的资源引用)。


而这个图片我们放置在主题包的drawable-hdpi下,这样就完成了整体的替换关系。

各位有任何疑问,欢迎回复!



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值