Funui-Theme 资源的替换
实现资源的替换,需要分为以下几个步骤
1.找到需要更改的模块 mediatek/packages/apps/FileManager
2.到主题模块下根据包名找到相应资源(以Grass为例) cd vendor/themes/Grass/values com_mediatek_filemanager_colors com_mediatek_filemanager_styles
代码如下
com_mediatek_filemanager_styles
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<style name="FileManager.Theme" parent="@android:style/Theme.Funui">
<item name="*android:searchViewTextColor">@color/search_color</item>
<item name="*android:searchViewTextColorHint">@color/search_hint_color</item>
<item name="*android:searchViewSearchIcon">@drawable/com_mediatek_filemanager_search_image</item>
</style> <style name="FileManager.Theme.NoActionBar" parent="@android:style/Theme.Funui.NoActionBar">
</style>
</resources>
com_mediatek_filemanager_colors
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<color name="item_selected_color">#7fed6f00</color>
<color name="action_text_select_color">#ffffff</color>
<color name="search_color">#000000</color>
<color name="search_hint_color">#919192</color>
</resources>
讲解一下这个Theme的工作原理
theme主要就是通过应用的包名来识别应用处理的。首先当一个应用工作的时候,这个主题就会查看自己目录下是否有这个应用的包名文件,然后从这个包名文件中选择相应的资源去替换到应用中的同名或者加了包名的资源。当然,这个资源可以是图片,也可以是style,color等
注意:主题下的资源可以替换相应应用的,但是,主题却不可引用相应应用下的资源。例如<item name="*android:searchViewTextColorHint">@color/search_hint_color_aa</item> search_hint_color_aa 是filemanager下的颜色,这样是会报错的。你想替换或者使用的资源,必须在这个theme下添加 (图片-drawable* 共用的 颜色-自己相应包名应用下*color style-自己相应包名下的*style)
3.当你添加了资源以后,你需要执行一下p2x c 这个命令的作用,其实就是在xml目录下的com_mediatek_filemanager.xml里面注册你添加的新的资源信息
<?xml version="1.0" encoding="utf-8"?>
<resource-redirections>
<item name="color/action_text_select_color">@color/action_text_select_color</item>
<item name="color/item_selected_color">@color/item_selected_color</item>
<item name="color/search_color">@color/search_color</item>
<item name="color/search_hint_color">@color/search_hint_color</item>
<item name="drawable/action_bar_background_pressed">@drawable/com_mediatek_filemanager_action_bar_background_pressed</item>
<item name="drawable/app_filemanager">@drawable/com_mediatek_filemanager_app_filemanager</item>
<item name="drawable/dropdown_ic_arrow_normal_holo_dark">@drawable/com_mediatek_filemanager_dropdown_ic_arrow_normal_holo_dark</item>
<item name="drawable/fm_copy">@drawable/com_mediatek_filemanager_fm_copy</item>
<item name="drawable/fm_cut">@drawable/com_mediatek_filemanager_fm_cut</item>
<item name="drawable/fm_delete">@drawable/com_mediatek_filemanager_fm_delete</item>
<item name="drawable/fm_home_focus">@drawable/com_mediatek_filemanager_fm_home_focus</item>
<item name="drawable/fm_home_ninepatch_focus">@drawable/com_mediatek_filemanager_fm_home_ninepatch_focus</item>
<item name="drawable/fm_tab_focus">@drawable/com_mediatek_filemanager_fm_tab_focus</item>
<item name="drawable/search_image">@drawable/com_mediatek_filemanager_search_image</item>
<item name="style/FileManager.Theme.NoActionBar">@style/FileManager.Theme.NoActionBar</item>
<item name="style/FileManager.Theme">@style/FileManager.Theme</item>
</resource-redirections>
这个文件就是上面原理的依据,它就是通过查找这个文件来决定是否替换一个资源的。这个当然可以手动添加,当然,为了使用p2x c 自动添加文件到xml中,我们命名的时候,尽量使用原名,或者在原名前面添加相应的包名。你会发现,执行p2x c以后,它生成的文件,会自动去点包名。例如
color中添加:<color name="com_mediatek_filemanager_aaa_color">#323232</color>
p2x c
在xml中生成:<item name="color/aaa_color">@color/com_mediatek_filemanager_aaa_color</item>
意义:应用下的aaa_color会替换为theme下的com_mediatek_filemanager_aaa_color
Funui-Theme 资源的替换的更多相关文章
- Funui-overlay 如何添加theme 的 overlay
昨天更改theme主题的时候,发现所有仓库下的theme都是共用的.也就是说,如果你更改了52平台下的theme,那么你提交了代码以后,82下也会发生相应的更改.但是,昨天修改的theme属性,只在3 ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- WPF 之 资源(Resource)
1.什么叫WPF的资源(Resource)? 资源是保存在可执行文件中的一种不可执行数据.在WPF的资源中,几乎可以包含图像.字符串等所有的任意CLR对象,只要对象有一个默认的构造函数和独立的属性. ...
- WPF中的资源简介、DynamicResource与StaticResource的区别(转)
什么叫WPF的资源(Resource)?资源是保存在可执行文件中的一种不可执行数据.在WPF的资源中,几乎可以包含图像.字符串等所有的任意CLR对象,只要对象有一个默认的构造函数和独立的属性. 也就是 ...
- 基于年纪和成本(Age & Cost)的缓存替换(cache replacement)机制
一.客户端的缓存与缓存替换机制 客户端的资源缓存: 在客户端游戏中,通常有大量的资源要处理,这些可能包括贴图.动作.模型.特效等等,这些资源往往存在着磁盘文件->内存(->显存)的数据通路 ...
- Android应用程序资源的编译和打包过程分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8744683 我们知道,在一个APK文件中,除了 ...
- android应用资源预编译,编译和打包全解析
我们知道,在一个APK文件中,除了有代码文件之外,还有很多资源文件.这些资源文件是通过Android资源打包工具aapt(Android Asset Package Tool)打包到APK文件里面的. ...
- 超越Ctrl+S保存页面所有资源
如何抓取页面所有内容 基本需求 抓取页面所有内容主要包括一下内容: 页面内元素 页面元素包含服务端直接返回的元素,动态构建的元素 页面内所有资源 页面所有资源包含本页面所在域资源以及第三方域资源,同主 ...
- 删除csdn上面自己上传的资源
今天想删掉以前的资源,才发现CSDN并没有提供删除资源的功能,然后去网上搜了下,这才删除了,不知道怎么删除的小伙伴看过来~ 首先,找到自己要删除资源的页面,举个栗子 https://download. ...
随机推荐
- 洛谷 P1604 B进制星球
P1604 B进制星球 题目背景 进制题目,而且还是个计算器~~ 题目描述 话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球.因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2 ...
- EF框架—Database-First
ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,现已经包含在 Visual Studio 2008 S ...
- MapReduce实现线性回归
1. 软件版本号: Hadoop2.6.0(IDEA中源代码编译使用CDH5.7.3,相应Hadoop2.6.0),集群使用原生Hadoop2.6.4.JDK1.8,Intellij IDEA 14 ...
- C语言typedef struct具体解释
在C中定义一个结构体要用typedef,如: typedef struct Student { int a; }Stu; 于是在声明变量的时候就能够:Stu stu1;(假设没有typedef就必须用 ...
- 使用ThoughtWorks.QRCode生成二维码
新建Windows应用程序,加入引用ThoughtWorks.QRCode.dll,编写代码生成二维码. using System; using System.Drawing; using Syste ...
- 一些牛人的IOS博客,mark下慢慢学习
http://blog.devtang.com/ 唐巧的个人blog http://gracelancy.com/ Lancy's blog http://b ...
- UvaLive 6600 Spanning trees in a secure lock pattern 矩阵行列式
链接:https://icpcarchive.ecs.baylor.edu/index.php? option=com_onlinejudge&Itemid=8&page=show_p ...
- js斐波那契数列求和
一.递归算法 function recurFib(n) { if (n < 2) { return n; } else { return recurFib(n-1) ...
- Oracle 复制随意表一行的SQL语句(測试Ok)
測试了非常久,网上说的方法非常多,事实上都是错误的.正确的写法: declare cursor rowAll is select * from tb_news where 1=1; row1 tb_n ...
- K-序列(埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛)
题目描述 给一个数组 a,长度为 n,若某个子序列中的和为 K 的倍数,那么这个序列被称为“K 序列”.现在要你 对数组 a 求出最长的子序列的长度,满足这个序列是 K 序列. 输入描述: 第一行为 ...