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或资源目录中的资源文件。

代码下载

相关推荐
此去正年少7 分钟前
编写adb脚本工具对Android设备上的闪退问题进行监控分析
android·adb·logcat·ndk·日志监控
落羽凉笙27 分钟前
Python基础(4)| 玩转循环结构:for、while与嵌套循环全解析(附源码)
android·开发语言·python
十幺卜入1 小时前
Unity3d C# 基于安卓真机调试日志抓取拓展包(Android Logcat)
android·c#·unity 安卓调试·unity 安卓模拟·unity排查问题
frontend_frank1 小时前
脱离 Electron autoUpdater:uni-app跨端更新:Windows+Android统一实现方案
android·前端·javascript·electron·uni-app
薛晓刚1 小时前
MySQL的replace使用分析
android·adb
DengDongQi2 小时前
Jetpack Compose 滚轮选择器
android
stevenzqzq2 小时前
Android Studio Logcat 基础认知
android·ide·android studio·日志
代码不停2 小时前
MySQL事务
android·数据库·mysql
朝花不迟暮2 小时前
使用Android Studio生成apk,卡在Running Gradle task ‘assembleDebug...解决方法
android·ide·android studio
yngsqq2 小时前
使用VS(.NET MAUI)开发第一个安卓APP
android·.net