1、更新至 MIUI 1.6.3 以上版本经过这几个月以来 MIUI 的不断更新,我们深切体会到大家在 UI 方面的喜好,差异很大。另一方面,限于开发组紧张的人力资源,MIUI 不能在短时间内把 UI 的方方面面做到完美。因此,按照 MIUI 最初成立时的理念,让大家参与打造更好玩的 ROM,我们决定推出真正的主题自定义功能。我们的最终目标是让小白和达人都能玩出各自的精彩!接下来,我将会由浅入深的向大家介绍自定义主题的玩法,看大家能玩到第几级。Level 1:什么是 MIUI 自定义主题首先,我们手机的 UI 是由很多部分组成的,如锁屏、通知栏、桌面壁纸、图标等等。如果我们把手机比喻成一个房子,上
2、述的部分可想象成房子的门、窗、地板、吊灯、座椅等。那我们可以认为原生的 android 系统就是一个毛坯房,MIUI 是在这之上的一个简装,自定义主题就是你自己给房子做的装修。MIUI 提供主题自定义功能,其实就相当于帮你请了一个工程队,你可以用从众多装修方案(主题包)中选择自己喜欢的效果,最后交给工程队实施。而装修方案可大可小,大至全屋翻新,小到只换一盏灯。目前 MIUI 会自带两个主题包,达人们也可以设计自己的主题包,大家就可以借用达人们共享出来的设计。Level 3:管理主题包目前,为了节省 ROM 内置的存储空间,主题包放在存储卡里。所以当手机没有存储卡或在 U 盘模式下,是不能搭配新
3、主题的。查看主题包在列表中,我们可以直接看到主题包的名称、作者、日期以及缩略图。点击某个主题包,在弹出的界面中左右滑动,就能看到该主题包的更多效果预览。有了这些信息,我们就可以初步判断添加该主题包后的效果。添加新主题包有两种方法可以把新主题包加到可选列表。方法 1:先从网上下载,或从电脑复制主题包到手机任意位置,然后进入主题界面,点击菜单见(menu),选择“从 SD 卡导入主题包” ,在弹出的文件浏览界面里找到主题包并选择。方法 2:直接把主题包放到/sdcard/MIUI/theme 目录下,其实通过方法 1 添加的主题包最后也会被移到该目录。删除主题包与添加主题包类似,同样也有简单和高级
4、的方法来删除主题包。方法 1:进入主题界面,点击想要删除的主题包,进入详细页面,点删除按钮即可。方法 2:用文件浏览器,到/sdcard/MIUI/theme 目录下,直接删除主题包文件。注意:系统自带的主题包不支持删除! Level 4:制作一个简单的主题包 (内容已更新至 MIUI 1.10.21 以上版本)首先主题包其实是一个用 zip 打包的文件,命名时用 mtz 作为后缀,里面包含了该主题的描述、预览图及各种图片资源,并按一定的目录结构进行组织,请参照附件。新主题包打包格式随着 MIUI 主题可替换的资源越来越多,主题包包含成百上千的资源文件也越来越常见;为了加快应用主题的速度,优化
5、用户体验,主题管理程序从 1.7.8 版本开始支持新格式的主题包,同时兼容旧格式主题包。主题包的新格式约定如下:主题包根目录下,仅允许 文件 或 以wallpaper、fonts 、boots、ringtones、audioeffect 和 preview 命名的子目录 存在举例:旧格式主题包中,图标都放在 icons 目录下,现在不允许主题包中存在 icons 目录,因此,只需将进入 icons 目录,将所有资源打包成一个压缩文件并命名为 icons 即可。为方便用户打包, 附件提供了名为 MIUIThemeCompress.jar 的自动打包程序,该程序运行需要 java 运行时环境;wi
6、ndows 下,双击直接运行或右键选择 = “打开方式” = “Java(TM) platform SE Binary“ 打开; linux 下,通过命令行 “java -jar MIUIThemeCompress.jar“ 运行。 同时热烈欢迎广大米友,制作易用性更好的打包工具,为主题制作提供方便。提示:目前论坛附件下载命名有些问题,请大家下载附件后,将其后缀名改为“.jar“关于 java 运行环境安装,请进这里。关于新格式讨论,请进这里。描述文件描述文件命名为 description.xml,内容参照如下格式填写。如果标题为空,主题界面中会用主题包的文件名代替。如果版本为空,主题界面会用
7、主题包的文件修改时间代替。绿色部分为可以替换内容。圆润图标MIUIMIUI1.01关于 uiVersion 使用方法详见:这里 效果预览图预览图都放在主题包的 preview 目录下,在预览时最大支持 10 张预览图。为了便于真实体现主题包效果,所有被官方收录的主题包,都有我们统一制作预览图;同时,为了充分表达主题包的蕴含,需要制作者提供一张预览图作为该主题的封面;该封面会在主题管理器程序缩略图列表中展示。主题包各模块预览图命名规则如下:自定义封面预览图为 preview_cover_0.jpg, 仅支持一张;系统风格的预览图为 preview_0.jpg, preview_1.jpg,.以此
8、类推开始;桌 面的预览图为 preview_launcher_0.jpg, preview_launcher_1.jpg, .以此类推开始;短信风格的预览图为 preview_mms_0.jpg,preview_mms_1.jpg,. 以此类推开始;图标风格的预览图为 preview_icons_0.jpg,preview_icons_1.jpg,. 以此类推开始;开机动画的预览图为 preview_animation_0.jpg,preview_icons_1.jpg,.以此类推开始;字体风格的预览图为 preview_fonts_0.jpg,preview_fonts_1.jpg,. 以此
9、类推开始;锁屏样式的预览图为 preview_lockscreen_0.jpg, preview_lockscreen_1.jpg, .以此类推开始;通知栏的预览图为 preview_statusbar_0.jpg, preview_statusbar_1.jpg, .以此类推开始;替换壁纸(包括桌面壁纸和锁屏壁纸)桌面壁纸和锁屏壁纸放在主题包的 wallpaper 目录下:default_wallpaper.jpg : 桌面壁纸default_lock_wallpaper.jpg : 锁屏壁纸default_lock_wallpaper_800.jpg : 高度为 800 像素的锁屏壁纸注意
10、: default_lock_wallpaper_800.jpg 仅在主题包包含 default_lock_wallpaper.jpg 且 手机屏幕高度为 800 像素时自动使用。替换程序图标(包括非系统程序的图标)所有用于替换原生图标的资源都放在主题包的 icons 压缩包中,大家可以用系统自带的圆润图标主题包为模版,保持文件名不变的前提下,替换相应图片内容即可。桌面文件夹的那几个图片资源也可以放在这个压缩包中。如何命名图标文件新装了程序后,回到桌面查看该程序图标的样子。然后用带图片预览功能的文件浏览器到/data/system/customized_icons_1 目录下找到该图标,它的文
11、件名就是我们要找的答案。替换系统字体将准备好的字体文件放在主题包的 fonts 目录下,并按如下规则命名。使用主题换字体不会影响 OTA 升级。如果想用一个字体文件同时替换中英文,那就命名为 Arial.ttf。默认字体:DroidSans.ttf英文数字:Arial.ttf中文字体:DroidSansFallback.ttf替换开机效果将准备好的开机动画或开机音乐放在主题包的 boots 目录下,并按如下规则命名。开机动画:bootanimation.zip开机音乐:bootaudio.mp3替换铃声将准备好的铃声放在主题包的 ringtones 目录下,并按如下规则命名。来电铃声:ring
12、tone.mp3通知铃声:notification.mp3闹钟铃声 : alarm.mp3替换系统音效将准备好的系统音效音乐文件放在主题包的 audioeffect 目录下,并按如下规则命名。系统音效名称 音效意义Lock.ogg 锁屏音Unlock.ogg 解锁音EffectTick.ogg 点击音KeypressDelete.ogg 键盘回退音KeypressReturn.ogg 键盘回车音KeypressStandard.ogg 键盘按键音KeypressSpacebar.ogg 键盘空格音CameraClick.ogg 拍照音VideoRecord.ogg 摄像开始音CameraCou
13、ntDown.ogg 定时拍照倒计时音CameraBeepSuccess.ogg 对焦成功音CameraBeepFail.ogg 对焦失败音CameraBeepInProgress.ogg 防抖拍照音1CameraBeepInProgress1.ogg 防抖拍照音2CameraBeepInProgress2.ogg 防抖拍照音3MusicShake.ogg 甩动切歌音MessageComplete.ogg 短信送达音SoundRecorderPlay.ogg 录音开始音SoundRecorderPause.ogg 录音暂停音SoundRecorderRewind.ogg 倒带音LowBatte
14、ry.ogg 低电量通知音替换电量图标目前状态栏电量图标由主题包中的三个文件决定,三个文件的制作原理一样,相互没有依赖关系,可以独立替换图形图标:com.android.systemui/res/raw/stat_sys_battery.png数字图标:com.android.systemui/res/raw/stat_sys_battery_number.png充电图标:com.android.systemui/res/raw/stat_sys_battery_charge.png这三个文件的内容是由 n * m 个小图标组成的大长方形,每个小图标大小为38x38。这些小图标从上到下、从左到
15、右依次代表从1%到100% 的电量或充电动画的每一帧。举个例子,如果文件内容是2 * 5个小图标,布局如下,ABCDEFGHIJ如果用做图形或数字图标,那每个图标表示的电量为:A: 1%10%B: 11%20%C: 21%30%D: 31%40%E: 41%50%F: 51%60%G: 61%70%H: 71%80%I: 81%90%J: 91%100%如果用做充电动画图标,那充电时从当前电量对应的图标开始依次显示到 J,不断循环。譬如当前电量为55时,动画就会显示 FGHIJFGHIJ.最后放上一个彩色的数字电量图标资源供大家参考=更新说明:1. MIUIThemeCompress.jar
16、程序 7.17 加入记录 “上次打开目录位置” 功能round_icons.mtz MIUIThemeCompress.jar772.25 KB, 下载次数: 1814 10.99 KB, 下载次数: 6329圆润图标 主题自动打包 Level 5:制作高级主题包MIUI 的主题包,从原理上来说,相当于一个若干程序的资源包的合集。以系统自带的卡通小怪为例,com.android.launcher 里放的是要替换桌面 UI 的资源,com.android.mms 里放的则是要替换短信 UI 的资源。而每个程序的资源包里的目录结构和 android 的 apk 设计一致。目前 MIUI 的主题包支
17、持替换图片(包括9-patch)以及系统或 App 相关的样式资源。替换某个 App 资源当我们想要给某个 app 制作主题包,具体步骤如下(以电话为例):在手机的/system/app 或/data/app 里找到该 app 的 apk 文件(而系统 UI 的 apk 则为/system/framework/framework-res.apk) 。电话的 apk 为 Phone.apk。 把刚找到的 apk 文件当成 zip 文件解压,把除了.png 以外的文件删掉,并保持目录结构不变。 找到想要替换的图片,把不想替换的统统删掉。假设我们要替换拨号界面左下角跳转到联系人图,那对应的图片是 r
18、es/drawable-hdpi/ic_in_call_touch_contact.png 修改图片内容,保持文件名和目录结构不变。 把 res 目录打包压缩并命名为该 app 的进程名,电话的进程名为com.android.phone。获取一个程序的进程名的方法很多,在此介绍一个最小白的方法:装个 task manager(网盘上有) ,运行那个 app,再运行 task manager,找到那个 app,长按-detail,然后屏幕下部会弹出的该 app 的进程名。 (欢迎大家提供更小白的方法) 准备好描述文件、预览图等(详见教程的 Level 4) 把修改好的文件和目录打包成 zip 文
19、件,并修改后缀为 mtz(注意保证 res 目录在zip 包里面第一层)替换系统或 App 样式资源MIUI 主题还支持替换系统或 App 的样式信息,具体地包括颜色、文字、大小尺寸等;下面以官方的黑色主题为例简要介绍如何替换颜色(默认主题下窗口使用的是白底黑色):1. 下载并解压官方黑色主题2. 在 framework-res 根目录下,有一个叫 “theme_values.xml“的文件,其定义了要替换的系统样式值:#ff000000#ff000000以上将窗口的背景色默认有白色改成了黑色。3. 在 com.android.mms 根目录下,也有一个叫“theme_values.xml“文
20、件,其定义短信程序要替换的该 App 或系统的样式值:#ffffffff定义了短信程序中“重发按钮” 字体颜色使用白色#ffffffff定以了在短信程序中使用的系统样式 mi_bright_foreground_dark_inverse 替换为白色;注意,在 App 中替换系统样式的值时,只对该 App 的其作用,且必须注明 package=“android“。关于系统或 App 样式字段的获取,请查找其 res 目录中的 xml 文件。建议大家第一次制作时,详细参考官方黑色主题。 MIUI 桌面选项1. 通过主题定义滚动条样式。在原来的滚动条设计虽然提供了快速定位桌面的功能,但同时也增加了误
21、操作的机会。对主题的美观也造成了障碍。这导致了很多主题为了去除滚动条只好把滚动条换成全透明的图。好了,现在我们可以通过主题定制滚动条了(桌面指示器) ,方法如下在主题包中的 com.android.launcher 目录下创建修改 theme_values.xml添加一行slider其中红字的 slider 代表要使用的是滚动条(这也是默认设置) 。还可以指定为:none (代表禁用滚动条)bottom_point (代表使用下方点状桌面指示器)top_point (代表使用上方点状桌面状指示器)2. 通过主题对壁纸位置的定义。壁纸随桌面滚动这个是 android 的一个特色。但并不是所有同学
22、都喜欢这样。尤其对主题制作者来让壁纸固定下配合更加重要,于是我们增加了如下定义:同定义滚动条一样,在同一个 theme_values.xml 中添加:all其中红字的“all”代表全范围滚动(默认设置)还可以指定为:left (壁纸固定在左侧不滚动)center (壁纸固定在中心不滚动)right (壁纸固定在右侧不滚动)Level 6:处理9-Patch(.9.png) 图片1. 了解什么是9-patch 格式。这个格式主要的特点是定义了图片的可控制拉伸区域和内容区域。这个网上很多文章有介绍,相信大家都能找到自己能看懂的。先给出我随便搜索到的,http:/ 按照第一步找到的教程,制作9-patch 图标3. 编译9-patch 图片。编译的方法有点偏技术,大家可以试试这个工具 xUltimate Draw9Patch Compiler( http:/ . ease-xultimate.html) 。用法挺简单,把你的图片放到一个目录(可以直接用它自带的 example 目录) ,然后运行那个工具,就会生成编译好的图片,文件名不会变,但是你会看到图片的黑边都被去掉(实际上已经存到 png 内部特殊数据区) 。4. 把你编译好的图片按普通图片的方法放进主题包。更详细教程,请先看 http:/miui-