Android主题切换
一.APK文件方式:(CM9方案)
我们知道Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户的(Android 系统是基于Linux)。所以不同APK(用户)间互相访问数据默认是禁止的,但是它也提供了2种APK间共享数据的形式:
1. Share Preference. / Content Provider
APK可以指定接口和数据给任何其他APK读取,需要自己实现接口和Share的数据.
2. Shared User id
通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。所以默认就是可以互相访问任意数据。也可以配置成运行成不同的进程,同时可以访问其他APK的数据目录下的数据库和文件。就像访问本程序的数据一样。本文中的换主题功能就是通过这种方式来实现的。
二.读取zip文件的方式:(高通方案)
优点:非开发人员也可以很轻松的完成资源包任务。
缺点:代码比起APK方式相对比较繁琐,需要考虑图片文件完整、和一些异常等因素。这种方式有关问题就是每次需要读取zip流,这样性能太差,可以考虑单例设计。
第1步:程序里所有引用资源的地方改为读路径的方式,不使用android本土R.的方式。
第2步:完成资源所需的所有图片文件和资源相关说明放在一个文件夹压缩打包。
第3步:指定读取资源压缩包的相关约定协议,比如该主题名称等信息以约定格式存储。
第4步:程序读取资源压缩包约定格式的资源信息,加载。
三.读取文件的方式:
优点:性能较好,可以更换theme,layout,xml等大部分文件,
缺点:每个xml文件必须放在源码中编译后取其二进制文件。不便于大量使用和移植,还有个问题就是如果程序添加了新资源文件可能需要重新编译。因为id可能发生了变化。
第1步:完成资源所需的所有图片文件和资源相关说明放在一个文件夹。
第2步:程序里所有引用资源的地方改为读路径的方式,不使用android本土R.的方式。
第3步:指定读取资源文件的相关约定协议,比如该主题名称等信息以约定格式存储。
第4步:程序读取资源压缩包约定格式的资源信息,加载。
代码下载链接:http://www.apkbus.com/android-143869-1-1.html
Android主题切换的更多相关文章
- Android主题切换方案总结
所谓的主题切换,就是能够根据不同的设定,呈现不同风格的界面给用户,也就是所谓的换肤. 1.将主题包(图片与配置)存到SD卡上(可通过下载或手动放入指定目录),在代码里强制从本地文件创建图片与配置文字大 ...
- Android主题切换—夜间/白天模式探究
现在市面上众多阅读类App都提供了两种主题:白天or夜间. 上述两幅图片,正是两款App的夜间模式效果,所以,依据这个功能,来看看切换主题到底是怎么实现的(当然现在github有好多PluginThe ...
- Android 主题切换 小结
前言 我们用手机的时候经常看到 设置里面有夜间模式和白天模式来更换APP的主题,以前以为很简单,但是实际做起来还是有各种不完美,那么我们也要去了解各种解决方案来丰富我们的知识,现在我们就来看看各种优劣 ...
- Android 主题动态切换框架:Prism
Prism(棱镜) 是一个全新的 Android 动态主题切换框架,虽然是头一次发布,但它所具备的基础功能已经足够强大了!本文介绍了 Prism 的各种用法,希望对你会有所帮助,你也可以对它进行扩展, ...
- Android主题换肤实现
本系列文章主要是对一个Material Design的APP的深度解析,主要包括以下内容 基于Material Design Support Library作为项目整体框架.对应博文:Android ...
- Android学习系列(40)--Android主题和样式之系统篇(下)
11)Widget样式(Widget Style) 特别说明,此处定义大量的系统内置控件的样式,对于重写原生控件的样式具有很大的参考价值. <!-- Widget styles --> & ...
- windows phone主题切换(换肤)
之前项目做了个主题切换的功能,最后客户没来得及出第二套界面给放弃了,默哀中... 为了不让它就这样流产了,就放博客共享吧. 首先说明下原理:这个切换是通过重写资源字典里指定的样式,在运行的过程中加载指 ...
- android 语言切换过程分析
android 语言切换过程分析 2014-02-27 18:13 1207人阅读 评论(0) 收藏 举报 语言切换android语言切换android改变语言 最近在看一个bug,系统切换语言后,本 ...
- cocos2dx shader实现灰度图android后台切换回来导致图像偏移的问题
转自:http://www.tuicool.com/articles/U3URRrI 项目中经常会遇到将一张图像处理成灰色的需求,为了节省资源,一般不会让美术再做一套同样的灰度图,通常会通过代码处理让 ...
随机推荐
- Python基础学习(四)
菜鸟咀嚼python基础之继续. 一.返回函数 第三章已经简单操作了Python的高阶函数,目前继续练手函数作为返回值的特效:通常,高阶函数除了可以接收函数作为参数外,还可以把函数作为结果值返回. 案 ...
- poj 2763(RMQ+BIT\树链剖分)
传送门:Problem 2763 https://www.cnblogs.com/violet-acmer/p/9686774.html 题意: 一对夫妇居住在xx村庄,小屋之间有双向可达的道路,不会 ...
- sort逆序(char String)
import java.util.Arrays; import java.util.Collections; import java.util.Scanner; public class Main { ...
- P1169 [ZJOI2007]棋盘制作 && 悬线法
P1169 [ZJOI2007]棋盘制作 给出一个 \(N * M\) 的 \(01\) 矩阵, 求最大的正方形和最大的矩形交错子矩阵 \(n , m \leq 2000\) 悬线法 悬线法可以求出给 ...
- Redis危险命令重命名、禁用
Redis的危险命令主要有: flushdb,清空数据库 flushall,清空所有记录,数据库 config,客户端连接后可配置服务器 keys,客户端连接后可查看所有存在的键 作为服务端的redi ...
- #js window.open() 父窗口与子窗口的互相调用【转】
未完整版 javascript 父窗口与子窗口的互相调用 a.html 父页面 <HTML> <HEAD> <meta http-equiv="content- ...
- android allowbackup
allowbackup 属性是在application 节点下,作用的设置为true,人们可以通过adb 命令备份一份应用的信息,然后在另外一个设备上,还原这份信息,是一种危险操作,所以,我们一般设为 ...
- 《Maven实战》笔记
maven是什么 maven是 构建工具 依赖关系工具 项目信息管理工具 而JAVA世界的ant只是一个构建工具,不具备依赖管理的功能,需要配合使用ivy进行依赖管理. maven的安装 下载mave ...
- Git服务器,仓库的hook监控
简单应用场景:代码提交到git仓库,仓库监控到变化的jar包,然后把变化的jar包推到私服maven仓库. Git预定义了触发时机: ClientSide hooks: 1 pre-commit,当执 ...
- 第16月第23天 atos
1. grep --after-context=2 "Binary Images:" *crash xcrun atos -o zhiniao_adhoc_stg1.app.dSY ...