实现资源的替换,需要分为以下几个步骤

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 资源的替换的更多相关文章

  1. Funui-overlay 如何添加theme 的 overlay

    昨天更改theme主题的时候,发现所有仓库下的theme都是共用的.也就是说,如果你更改了52平台下的theme,那么你提交了代码以后,82下也会发生相应的更改.但是,昨天修改的theme属性,只在3 ...

  2. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  3. WPF 之 资源(Resource)

    1.什么叫WPF的资源(Resource)? 资源是保存在可执行文件中的一种不可执行数据.在WPF的资源中,几乎可以包含图像.字符串等所有的任意CLR对象,只要对象有一个默认的构造函数和独立的属性. ...

  4. WPF中的资源简介、DynamicResource与StaticResource的区别(转)

    什么叫WPF的资源(Resource)?资源是保存在可执行文件中的一种不可执行数据.在WPF的资源中,几乎可以包含图像.字符串等所有的任意CLR对象,只要对象有一个默认的构造函数和独立的属性. 也就是 ...

  5. 基于年纪和成本(Age & Cost)的缓存替换(cache replacement)机制

    一.客户端的缓存与缓存替换机制 客户端的资源缓存: 在客户端游戏中,通常有大量的资源要处理,这些可能包括贴图.动作.模型.特效等等,这些资源往往存在着磁盘文件->内存(->显存)的数据通路 ...

  6. Android应用程序资源的编译和打包过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8744683 我们知道,在一个APK文件中,除了 ...

  7. android应用资源预编译,编译和打包全解析

    我们知道,在一个APK文件中,除了有代码文件之外,还有很多资源文件.这些资源文件是通过Android资源打包工具aapt(Android Asset Package Tool)打包到APK文件里面的. ...

  8. 超越Ctrl+S保存页面所有资源

    如何抓取页面所有内容 基本需求 抓取页面所有内容主要包括一下内容: 页面内元素 页面元素包含服务端直接返回的元素,动态构建的元素 页面内所有资源 页面所有资源包含本页面所在域资源以及第三方域资源,同主 ...

  9. 删除csdn上面自己上传的资源

    今天想删掉以前的资源,才发现CSDN并没有提供删除资源的功能,然后去网上搜了下,这才删除了,不知道怎么删除的小伙伴看过来~ 首先,找到自己要删除资源的页面,举个栗子 https://download. ...

随机推荐

  1. Unity Launcher类,轻松打开网页,照片,app 等

    using UnityEngine; using UnityEngine.WSA; public class test : MonoBehaviour { void Start () { //打开百度 ...

  2. vmware启动虚拟机报错VMware Workstation has paused this virtual machine because the disk on which the virtual machine is stored is almost full. To continue, free an additional 1.4 GB of disk space.

    报错VMware Workstation has paused this virtual machine because the disk on which the virtual machine i ...

  3. ADL & 实参相依的查找 & 成员与非成员的查找

    也就是会根据实参,所处在的名字空间,来查找对应名字空间里面的函数. 对于<<也是常见的场景,会根据实际要打印出来的下一个操作数,来决定调用哪个命名空间里面的函数. 注意,不同命名空间里面的 ...

  4. 【python下使用OpenCV实现计算机视觉读书笔记2】图像与字节的变换

    import cv2 import numpy import os # Make an array of 120,000 random bytes. randomByteArray = bytearr ...

  5. Android入门篇(一)Androidproject的搭建,导入与导出,图标的改动

       先说一些题外话吧.这是小珂同学的处女作.可能写的不好,请各位读者见谅.我先讲讲我为什么要写博文,那应该也是机缘巧合,有一次.我问学长一个问题,学长发了一个连接给我,里面是一篇博客.那时我仅仅是看 ...

  6. java内部类的初始化

    public class InnerClassTest { /** * @param args */ public static void main(String[] args) { // TODO  ...

  7. 发现javax.xml.parsers.SAXParser有bug

    javax.xml.parsers.SAXParser有bug, 我发现的地方在characters(char[] ch, int start, int length) length偶尔会变小,导致截 ...

  8. 系统管理员的 SELinux 指南:这个大问题的 42 个答案

    安全.坚固.遵从性.策略是末世中系统管理员的四骑士.除了我们的日常任务之外 —— 监控.备份.实施.调优.更新等等 —— 我们还需要负责我们的系统安全.即使这些系统是第三方提供商告诉我们该禁用增强安全 ...

  9. 自动与因特网时间服务器同步 NTP 服务器 pool.ntp.org, 120.24.166.46 端口 123

    自动与因特网时间服务器同步   NTP 服务器 pool.ntp.org 海康提供的NTP服务器   120.24.166.46     端口  123

  10. 36Kr众筹项目比呀比biyabi,调查分析研究报告,背后资方势力的关系梳理

    36Kr众筹项目比呀比biyabi调查报告 个层次的评价.   变革家-比呀比拆解报告:http://biangejia.com/archives/12653 8.其它 没有通过微信,参加路演,有点遗 ...