miui主题风格_一种android系统换肤功能的设计,董红光:MIUI主题风格.pdf

本文详细介绍了MIUI系统主题的实现思路,包括Android系统的主题机制、资源管理、主题包的多种实现方式以及MIUI特有的主题实现策略。MIUI通过重定向资源文件路径,实现了对系统和应用的自动换肤,并探讨了资源刷新、局部项定制(如图标、字体)以及主题包的局限性和资源优先级等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MIUI主题风格主题风格主题风格主题风格 一种Android系统换肤功能的设计思路 董红光 2/29/2012 “主题”是什么 ? Symbian的“主题” Android的“主题” •XML声明theme/style •程序显式指定使用主题样式/属性 •更改字体、颜色、长宽、间距等 •可替换的资源类型有限 Android的“主题” “主题”是什么 •所有影响用户界面效果的属性可替换 •字体、颜色、长宽、间距 •图片! •或者说,系统和程序的所有“资源”可替换 •更换方式 •用户指定 •即时生效 Android资源管理机制 •资源类型 •drawable/layout/style/string/color … •R.java •Context.getResources() •AssetManager/Resources •… 主题的几种实现思路(1) •直接读取外部资源文件 •运行时通过显式代码替换界面的属性 •主题包格式灵活,手动解析资源 •手动管理,可控换肤 •无法为系统和其他app换肤 •适合app级别的换肤 主题的几种实现思路(2) •PackageManager •getResouresForApplication(String) •主题包即APK包,自动解析资源 •手动管理,可控换肤 •无法为系统和其他app换肤 •适合app级别的换肤 主题的几种实现思路(3) •PackageManager+重定向资源ID •0x01… - 0x07… •主题包即APK包,自动解析资源 •自动管理,自动换肤 •可以为系统换肤,为app换肤麻烦 •资源ID变化和资源缺失时解决麻烦 主题的几种实现思路(4) •重定向资源包路径 •AssetManager.addAssetPath(String) •主题包即APK包,自动解析资源 •自动管理,自动换肤 •可以为系统和其他app换肤 •资源缺失时解决麻烦 主题的几种实现思路(5) •重定向资源文件路径 •对每个资源文件路径进行重定向 •主题包格式灵活,手动/自动解析资源 •自动管理,自动换肤 •可以为系统和其他app换肤 •资源缺失时解决简单 MIUI主题的实现方式 •采用思路(5):重定向资源文件路径 •更改Resources类,截获对资源的请求 •每个app一个资源包(局部项) •主题包没有对应资源时,返回原生资源 Resources getText getValue obtainAttributes openRawResource … app Theme exists? Original resources Theme resources hook 主题包格式 •zip包格式,是各个局部项的集合 •图标、字体、壁纸、音效、开机动画 •其他资源以app为单元组织,zip格式 •drawable的结构与APK保持一致 •其他值在theme_values.xml统一定义 theme_values.xml举例 #ffffffff #80ffffff #ffffffff Me 18sp 50dip 书写方式与Android的colors.xml dimens.xml strings.xml等一致 主题包局限性 •不支持reference类型 •不支持多值式属性,如arrays,styles •不支持layout 主题包的解析 •图标、字体、壁纸、音效、开机动画 •其他app包 •一次性解析theme_values的所有值 •使用时在缓存中读取该值 •drawable使用时加载,放入系统缓存 •每个进程维护使用app包的文件池 资源优先级 •局部更改全局样式 •主题包的overlay机制 •主package概念 •原生资源,MIUI资源,自定义资源 •主题包的分层机制 •不同层级可以指定接受资源类型 资源刷新可能的问题 •共同存在的问题 •缓存资源的影响 •预加载资源的影响 •解决方法:重启进程(手机) 资源刷新机制 •Configuration •横竖屏切换、键盘显隐等等 •重启Activity •为主题定义新的Configuration类型 •系统维护该Configuration的处理逻辑 •清空缓存 MIUI主题风格主题风格主题风格主题风格 一种Android系统换肤功能的设计思路 董红光 2/29/2012 补充 - 局部项(1) •图标 •需要统一风格 •资源分布在不同APK中 •定义icons资源包,统一放置主题图标 •通过app的package和activity名称区分 •没有对应图标的,通过规则自动生成 补充 - 局部项(2) •字体/开机动画/开机音乐等 •不通过Resources •修改native c++代码达到目的 •桌面壁纸/来电铃声/通知铃声/闹钟铃声 •调用Android原生提供的API 补充 - 局部项(3) •锁屏 •原生锁屏/百变锁屏 •百变锁屏:独立资源管理逻辑

展开阅读全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值