Android_切换主题或皮肤的实现方式

2023-10-27

1.简介

使用自定义主题或者皮肤,可以将相关配置(颜色、大小等等)放在一个新的apk压缩文件中,目录结构保持一致,该apk文件放在任意可以访问到的目录即可,类似/system/framework/framework-res.apk,可根据软件的需要动态的加载主题文件。这里只介绍这一种实现方式,别的方式有兴趣的可以自己研究。主要实例化AssetManager对象和Resources对象来实现的

AssetManager assetManager = AssetManager.class.newInstance();
Method addAssetPath = assetManager.getClass().getMethod("addAssetPath", String.class);
addAssetPath.invoke(assetManager, skinPkgPath);

Resources superRes = context.getResources();
Resources skinResource = new Resources(assetManager,superRes.getDisplayMetrics(),superRes.getConfiguration());


2.流程图





3. 备注

github上就有一个不错的开源项目https://github.com/fengjundev/Android-Skin-Loader,有兴趣的朋友可以研究下源码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android_切换主题或皮肤的实现方式 的相关文章

  • 如何创建在 React-Native 中检测自动位置的地图

    我已经在react native中创建了地图 参考https github com lelandrichardson react native maps https github com lelandrichardson react nat
  • 如何从android ble扫描结果中获取CRC?

    我每次都从 ble 设备收到 62 字节的扫描结果 使用下面的回调代码获取扫描结果 我可以获取 RSSI 但无法获取 CRC 或者 获取一帧的CRC的逻辑是什么 来自 ble 设备的数据格式 如数据包标头 广告数据 CRC RSSI 如何从
  • 使用DBFlow,如何加密已经存在的数据库?

    我正在使用 DBFlow 来处理项目中的数据库 并且我想对现有数据库进行加密 我知道我可能必须删除现有的未加密数据库并创建另一个加密数据库 我也知道我可以将 SQLCipher 与 DBFlow 一起使用 如上所述文档 https gith
  • Android TelecomManager 中的 addIncomingCall 没有执行任何操作

    我正在尝试使用本机 Android 来电 UI 我有一个连接服务 并且我已经成功注册了一个电话帐户 但在我调用方法 addNewIncomingCall 后什么也没有发生 对我所缺少的有什么想法吗 显现
  • 在工具栏下显示内容

    您好 我试图简单地将我的内容放在工具栏下方 但是当我运行我的应用程序时 某些内容本应位于工具栏下方 却隐藏在工具栏后面 我已经阅读了有关使用框架布局来尝试将其分离的内容 但我有点卡住了 我目前正在使用该软件提供的基本 android stu
  • Android:如何暂停和恢复可运行线程?

    我正在使用 postDelayed 可运行线程 当我按下按钮时 我需要暂停并恢复该线程 请任何人帮助我 这是我的主题 protected void animation music6 music4 postDelayed new Runnab
  • 为什么不能在 Fragment 中使用 ViewPager?它实际上是

    有信息无法使用ViewPager在一个Fragment在许多来源中 例如 Android 开发者繁忙编码指南 http commonsware com 作者 Mark Murphy 或者类似的帖子this https stackoverfl
  • 音频流的最佳实践

    我正在编写一个应用程序来播放远程服务器的音频 我尝试了多种方法来实现流音频 但它们对我来说都不够好 这就是我尝试过的 幼稚地使用 MediaPlayer 就像是 MediaPlayer player new MediaPlayer play
  • Android 中使用黑白 alpha 蒙版的高效位图蒙版

    我想用黑白 alpha 蒙版来掩盖位图 我的蒙版图像是黑白的 黑色区域意味着透明 白色区域意味着不透明 我需要的是 当我使用此蒙版图像来蒙版任何其他图像时 如果蒙版图像的相应区域为黑色 则生成的图像区域应为透明 否则 生成的图像区域应该是不
  • VOIP通话录音

    我正在开发一个在 android 中录制 VOIP 通话的项目 我没有找到任何解决方案 有很多应用程序支持手机上的 VOIP 录音 我找不到任何教程和帮助 立方体通话记录器 https play google com store apps
  • 如何使用 RecyclerView 创建此布局?

    我正在尝试使用这种类型的布局创建回收器视图 这些项目是字符串 可以以不同的大小出现 我不知道每行中有多少项目 我可以使用 StaggeredGridLayoutManager 来做到这一点吗 该图像只是一个假示例 每行可以有更多项目 您可能
  • Play 商店中的应用描述更新

    我想更新应用程序的描述以及 Play 商店上的屏幕截图 但应用程序保持相同 即相同的版本号 我不想发布新应用程序 因为应用程序中没有任何更改 这可能吗 谷歌也会要求更新应用程序吗 您可以更新描述 也可以更改屏幕截图 您的应用程序将保持不变
  • 在 NFC 标签扫描期间,onNewIntent() 内的intent.getAction() 为 null

    这是我第一次使用 NFC 标签 我在清单中声明了 NFC 扫描活动
  • 如何绘制部分位图圆弧?类似于圆形进度轮,但具有显示得越来越多的位图。

    我正在寻找的是一种以顺时针圆形方式显示图像的视图 当进度为 25 时 应显示前 90 度 当进度为 100 时 应绘制完整的 360 度 它与使用 canvas drawArc 非常接近 但此方法仅适用于 Paint 对象 不适用于位图 其
  • Android - 存储对ApplicationContext的引用

    我有一个静态 Preferences 类 其中包含一些应用程序首选项和类似的内容 可以在那里存储对 ApplicationContext 的引用吗 我需要该引用 以便我可以在不继承 Activity 的类中获取缓存文件夹和类似内容 你使用的
  • 调试android数据绑定?

    谁能告诉我如何调试或找到数据绑定生成的代码 从this https www youtube com watch v NBbeQMOcnZ0链接我发现它生成了所需的代码 我猜您正在寻找自动生成的绑定 java 文件 我也在寻找他们 最后我在这
  • Android:透明活动问题

    最近 在我们的一款生产应用程序上 透明活动已停止工作 我的意思是它变成了黑色背景而不是透明背景 当我将活动的背景颜色设置为纯色 即红色 绿色等 时 它的应用不会出现问题 该问题可能是由于迁移到 AndroidX 引起的 但我没有这方面的证据
  • 如何从DataSource.Factory获取数据

    我必须调用此方法才能获取所有人员 我根本无法修改这个方法 Query SELECT FROM PERSON TABLE ORDER BY NAME DESC abstract fun getElements DataSource Facto
  • 如何正确处理 ListView 内的 Android EditText 输入?

    在我的应用程序中 我有一个在 a 中添加 删除 编辑记录的活动SortedMap 该活动作为以下活动的延伸实施ListActivity 我已经实现了自定义ArrayAdapter对于收藏品 Every ListView项目 对应于基础记录
  • 如何用LoaderManager自动重新查询

    我有一个应用程序显示来自 SQLite DB 的数据 并且数据不断变化 所以显然 我认为我应该使用 LoaderManager 来显示数据 我读过一些关于将 LoaderManager 与 SQLite 结合使用的内容 然后看到了亚历克斯

随机推荐

  • Linux Tomcat JVM 参数调优

    Linux Tomcat JVM 参数调优 适用场景 Tomcat 长期运行过程遇到Caused by java lang OutOfMemoryError PermGen space或java lang OutOfMemoryError
  • VB.net对于datagride控件的使用及C#中datagrideView\bindingSource\bindingNavigator\tabcontrol控件的应用

    绑定数据源 DataSet ds new DataSet SqlConnection connection new SqlConnection netiFace ConnectionString ConnectionString conne
  • d指针在Qt上的应用及实现

    Qt为了使其动态库最大程度上实现二进制兼容 引入了d指针的概念 那么为什么d指针能实现二进制兼容呢 为了回答这个问题 首先弄清楚什么是二进制兼容 所谓二进制兼容动态库 指的是一个在老版本库下运行的程序 在不经过编译的情况下 仍然能够在新的版
  • pip使用踩坑集合

    1 python版本切换后 pip不好用了 报错如下 使用 python m pip install U pip 命令对pip进行更新 2 pip安装包时 报错如下 网络状态有问题 国外源挂梯子 国内源关梯子 3 windows系统下pyt
  • GD32 笔记 05:如何使用 DMA 配合 ADC,以软触发的方式采集电压

    文章目录 一 前言 二 主要代码 1 变量定义 2 初始化配置函数 GPIO ADC DMA 3 主函数 一 前言 测试时使用的 MCU 是 GD32E230 测试例程下载地址是 20210409 test gd32 usart dma z
  • Linux下安装NetworkManger

    NetworkManager简介 NetworkManager由一个管理系统网络连接 并且将其状态通过D BUS 是一个提供简单的应用程序互相通讯的途径的自由软件项目 它是做为freedesktoporg项目的一部分来开发的 进行报告的后台
  • 四:虚拟机是如何为对象分配内存空间的?

    指针碰撞 Bump the Pointer 空闲列表 Free List 假设Java堆中内存是绝对规整的 所有用过的内存都放在一边 空闲的内存放在另一边 中间放着一个指针作为分界点的指示器 那所分配内存就仅仅是把那个指针向空闲空间那边挪动
  • 在vue3里pinia的一些常规使用和实战

    安装 首先 我们需要安装 pinia 包 可以使用 npm 或 yarn 进行安装 npm install pinia yarn add pinia 创建 pinia 通过 defineStore 函数来创建一个 pinia import
  • Vue——事件绑定

    事件绑定 方法 v on 可以简写成 使用 两种方式 内联 直接把js写在标签上 调用方法 调用methods里定义的方法 事件修饰符 stop 阻止单击事件冒泡 prevent 提交事件不再重载页面 capture 使用事件捕获模式 se
  • 关于Unity中的NGUI和UGUI

    一 用Unity开发2D游戏 有三套关系 1 GUI Unity本身自带的GUI 2 NGUI 以前在Unity中广泛来做2D的 是第三方的包 需要安装 3 UGUI Unity5 X后 其实是Unity4 6以后 Unity找到NGUI的
  • 题目2681:蓝桥杯2022年第十三届省赛真题-矩形拼接JAVA实现下的思考

    先附上AC的代码 供大家参考 如果感兴趣的话 可以继续向下阅读 代码 package 2022年省赛Java大学C组真题 import java util Scanner public class Main f 分类考虑问题 以A B C为
  • r语言 求几个数的最小公倍数_(人教版)五年级下册第四单元:公倍数和最小公倍数资源包...

    人教版五年级下册资源包 课题 第四单元 公倍数和最小公倍数 教材P68 69 71内容 课程设计者 柳州市小数指导中心成员 柳州市柳北区长塘中心校 覃柳媛 柳州市第四十六中学教育集团 附小 罗怡 目标导学 学习目标 1 理解公倍数和最小公倍
  • 【基于 React + Three.js 第一人称3D星球游戏】01.在React中使用Three.js

    Three js DOM结构 来源 https threejsfundamentals org threejs lessons threejs fundamentals html Three js的大部分实例文件是直接写在HTML中 直接接
  • RocketMQ第二篇 单机版安装操作步骤

    MQ下载地址 下载RocketMQ 4 7 1版本 RocketMQ运行版本下载地址 https archive apache org dist rocketmq 4 7 1 rocketmq all 4 7 1 bin release z
  • 用Python做一个简单的表白程序

    我最近在看了一本Python tkinter从入门到精通 看了四章了 前面四章主要就是讲部件的共同属性 控件的布局 窗口的属性设置 于是利用这些做了个简单的程序 我将这个程序打包成了执行文件 放在了百度网盘 链接 https pan bai
  • Matlab小波神经网络(时间序列预测)

    Matlab 小波神经网络时间序列预测 时间序列数据 公共号 数据统计分析与挖掘 中回复 数据 获取本文所需数据 公共号 数据统计分析与挖掘 中回复 书籍 获取50本数据分析 python 统计学经典书籍 扫描二维码 回复 数据 获取本文所
  • Scala中的继承

    1 Scala中的扩展类 使用 extends 继承父类 eg abstract class People val name String def speak def info Unit printf this people s name
  • Nginx的alias/root/try_files实战

    项目背景 前端Vue项目 同时支撑PC网站 手机M站和手机App 在项目构建之后会有三个子目录作为路由分别对应m站 PC和APP 但是该项目作为一个服务对外提供服务需要一个统一的请求入口 比如 location xx root data w
  • cisco 3640 voip配置实例解析

    下面是一个Cisco 3640的VOIP配置 对方的结构是台北和上海两地做VOIP 后接阿尔卡特的PBX 这是我亲手做的 里面有很多有注意的地方 与大家一起分享快乐 如有看不懂的地方请问我 还有我加的注解 Taipei sh run Bui
  • Android_切换主题或皮肤的实现方式

    1 简介 使用自定义主题或者皮肤 可以将相关配置 颜色 大小等等 放在一个新的apk压缩文件中 目录结构保持一致 该apk文件放在任意可以访问到的目录即可 类似 system framework framework res apk 可根据软