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. ...
随机推荐
- Android基础新手教程——4.3.2 BroadcastReceiver庖丁解牛
Android基础新手教程--4.3.2 BroadcastReceiver庖丁解牛 标签(空格分隔): Android基础新手教程 本节引言: 上节我们对BroadcastReceiver已经有了一 ...
- 介绍静态链接库和动态链接库的差别,及在VC++6.0中的建立和使用
首先介绍一下链接库:链接库分为动态链接库和静态链接库两种 LIB是静态链接库,在程序编译连接的时候是静态链接,其相应的文件格式是.lib. 即当程序採用静态链接库的时候..lib文件里的函数被链接到终 ...
- Simditor用法
一不小心接触到Simditor,瞬间被它优美极简的界面所吸引.Simditor是Tower开源的所见即所得的在线富文本编辑器. Simditor的理念是保持简单,避免过度的功能,每个特性都追求极致的用 ...
- 独立python环境之virtualenv和virtualenvwrapper
介绍 如果有一台測试机,多个人使用,有多个项目,不同项目可能python版本号不一样.须要的库不一样. 我们须要一个独立干净的python环境,互相隔离,互不影响. virtualenv能够帮我们解决 ...
- js插件---瀑布流Masonry
js插件---瀑布流Masonry 一.总结 一句话总结:还是要去看官网,比amazeui上面介绍的详细很多 1.瀑布流的原理是什么? 给外层套好相对定位,里面的每一个弄好绝对定位,然后计算出每一个的 ...
- 26. Intellij IDEA 启动项目ClassNotFoundException
转自:https://blog.csdn.net/zhw0596/article/details/81388147 使用Intellij IDEA 的过程中,新创建的项目启动时报 严重: Error ...
- BZOJ 2836 树链剖分+线段树
思路: 链剖+线段树裸题 重链的标号就是DFS序 所以查子树的时候每回就 query(change[x],change[x]+size[x]-1) 就好了 剩下的应该都会吧.. //By Sirius ...
- 【基础篇】activity生命周期及数据保存
常见的Android 的界面,均采用Activity+view的形式显示的,一提到Activity,立即就能联想到Activity的生命周期与状态的保存. 下面先从Activity的生命周期开始说起 ...
- Codeforces 344D Alternating Current 简单使用栈
Description Mad scientist Mike has just finished constructing a new device to search for extraterres ...
- 不允许 ASSIGNMENT 语句中包含 FOR XML 子句。
DECLARE @guidList NVARCHAR(max) SELECT @guidList=( CAST(OrderGUID AS nvarchar(max)) +',') FROM Order ...