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) •锁屏 •原生锁屏/百变锁屏 •百变锁屏:独立资源管理逻辑

展开阅读全文

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

  1. android换肤的实现方案,Android应用开发之Android一键换肤功能实现

    本文将带你了解Android应用开发之Android一键换肤功能实现,希望本文对大家学Android有所帮助. < 市面上对数的App都提供换肤功能,这里暂且不讲白天和夜间模式 下图是网易云音乐 ...

  2. android应用换肤功能,如何给Android应用更换皮肤

    Android应用更换皮肤功能的实现思路 我们可以将皮肤包做成一个apk文件,在应用apk中读取皮肤包中的数据. 应用apk读取皮肤包apk的数据的条件 1. 有相同签名 2. AndroidMani ...

  3. android 手机分区失败怎么办,一种Android系统Data分区自修复方法及系统专利_专利查询 - 天眼查...

    1.一种Android系统Data分区自修复方法,其特征在于,包括: 步骤1: Android智能终端开机进入Android系统后,判断Data分区是否损坏,对Data分 区进行挂载,然后读取Data ...

  4. qt android 重启,一种Android系统支持QT APP的实现方法专利_专利查询 - 天眼查

    1.一种Android系统支持QT APP的实现方法,其特征在于:所述实现方法首先使 Ministro服务能作为Android系统的系统应用程序运行,其次将QT程序依赖的QT库以及其 他文件部署到An ...

  5. android 音频播放过程,一种Android系统中的音频播放方法与流程

    本申请涉及android系统技术,特别涉及一种android系统中的音频播放方法. 背景技术: 在android系统中,现有的使用audiotrack进行音频播放时,audiotrack应用与andr ...

  6. android字符串块,一种Android系统字符串提取及合并方法与流程

    本发明涉及字符串提取及合并方法,尤其涉及一种Android系统字符串提取及合并方法. 背景技术: 随着智能通讯终端的日益普及,采用Android系统的智能通讯终端设备越来越走向世界各地,而对于多国语言 ...

  7. 为Android系统定制重启功能

    按计划每周更新一篇技术博文,第二篇:<为Android系统定制重启功能> 一.Android系统重启的实现方式 1.广播方式 之前的博文介绍过这种方式<使用广播实现的Android关 ...

  8. 基于android系统的单词学习软件设计与开发【附项目源码+论文说明】分享

    基于android系统的单词学习软件设计与开发演示 摘要 随着手机使用的普及,人们获取与保存信息的方式已经发生了激动人心的转变.智能手机正在逐步融入我们的生活,并影响和改变着我们的生活.由于现在各种智 ...

  9. 屏蔽Android系统的WIFI功能 关闭Android系统的实体按键

    屏蔽Android系统的WIFI功能: 1.要root手机  2.安装re管理器 3.进入手机内存/system/bin/wpa_supplicant(文件无后缀). 4.re管理器改成读写模式后, ...

最新文章

  1. 海外博士一般朝九晚五,国内博士动辄十几个小时科研时间。为什么普遍认为海外博士水平比较高?...
  2. Swift2.1 语法指南——自动引用计数
  3. openfalcon 组件监控_open-falcon监控业务URL探测
  4. Object-C 入门
  5. html5_0_文章_分级_分段
  6. html5储存类型特点,避免踩雷!你不得不知的 HTML5 “新”特性
  7. 手把手教你写网站:Python WEB开发技术实战
  8. [渝粤教育] 郑州工程技术学院 试验设计与数据处理 参考 资料
  9. selenium是如何启动浏览器的
  10. 2019年个人成长计划
  11. C语言程序设计会员计费系统,C语言课程设计酒店房间登记与计费管理系统总结报告...
  12. bmp180气压传感器工作原理_40张动图看懂各种传感器工作原理
  13. CSS3小猪佩奇社会猪
  14. python08课后练习歌手成绩
  15. xv视频提取器的一些用法
  16. mdpda软件客户端_摇摇彩票mdpda
  17. Matlab 编程基础
  18. Ganymed实现基本的自动化部署API
  19. 【百度认证】AI趣味课堂笔记
  20. Integer、new Integer() 和 int 比较的面试题,考验你技术功底的时候到了!

热门文章

  1. 【web素材】10—100款+CSS实现的电商定价表样式案例的代码素材
  2. 为何杂散测试需要使用滤波器【转】
  3. 如何用ps做出街头涂鸦效果
  4. 计算日期间隔天数的经典算法解析
  5. 偷特斯拉Autopilot代码?小鹏汽车前员工:「无意」带出,纯属「疏忽」
  6. 利用MapTiler工具进行地图瓦片切图,适合用于在h5中显示手绘地图场景
  7. 数据库快速插入大量数据
  8. 七大维度解读「中台」的前世今生
  9. 6.5 对多个工作簿中的工作表分别进行分类汇总
  10. python数据清洗工具包_python 数据库 工具包