Android 换肤之插件换肤

文章目录

Android 换肤之插件换肤

概述

Android 实现应用内换肤的常用方式(两种):

  • 通过Theme切换主题,即静态方法。
  • 通过AssetManager切换主题,可实现动态切换。

效果

浅色模式:

深色模式:

使用

这里使用第三方框架 PaintedSkin

步骤

  1. 新建 Android application 工程。

  2. 皮肤工程包名不能和宿主应用包名相同。

  3. 将需要换肤的资源放置于res对应目录下

    • 如果想要替换 Button 文字颜色,在 apk 的 res/values/colors.xml 的目录下有如下资源:

      复制代码
      <color name="textColor">#FFFFFFFF</color>

      在皮肤包对应 res/values/colors.xml 的目录下有如下资源:

      复制代码
      <color name="textColor">#FF000000</color>
    • 如果想要替换 Button 背景图片,在 apk 中有 res/mipmap/bg_button.png ,在皮肤包中 res/mipmap/bg_button.png

  4. 在皮肤包工程的 build.gradle 文件中添加:

    复制代码
     applicationVariants.all { variant ->
         variant.outputs.all { output ->
             outputFileName = "xxx.skin"
         }
     }

代码结构

原理

  • 资源包准备:首先,开发者会为应用准备多套皮肤资源,这些资源包括颜色、图片、布局样式等,通常被打包成独立的APK或存放在特定目录下。
  • 动态加载资源 :利用AssetManager和反射机制,可以在运行时动态加载外部APK或资源目录中的资源文件。

代码下载

相关推荐
后端码匠2 小时前
MySQL 8.0安装(压缩包方式)
android·mysql·adb
梓仁沐白4 小时前
Android清单文件
android
董可伦6 小时前
Dinky 安装部署并配置提交 Flink Yarn 任务
android·adb·flink
每次的天空6 小时前
Android学习总结之Glide自定义三级缓存(面试篇)
android·学习·glide
恋猫de小郭7 小时前
如何查看项目是否支持最新 Android 16K Page Size 一文汇总
android·开发语言·javascript·kotlin
flying robot8 小时前
小结:Android系统架构
android·系统架构
xiaogai_gai8 小时前
有效的聚水潭数据集成到MySQL案例
android·数据库·mysql
鹅鹅鹅呢9 小时前
mysql 登录报错:ERROR 1045(28000):Access denied for user ‘root‘@‘localhost‘ (using password Yes)
android·数据库·mysql
在人间负债^9 小时前
假装自己是个小白 ---- 重新认识MySQL
android·数据库·mysql
Unity官方开发者社区9 小时前
Android App View——团结引擎车机版实现安卓应用原生嵌入 3D 开发场景
android·3d·团结引擎1.5·团结引擎车机版