App一般会有多套颜色主题,下面介绍如何在App中添加主题切换功能:

  1. 先添加自定义属性,在values目录下新建attr.xml,根据主题中需要动态修改的颜色或者图片设定自定义属性

<?xml version="1.0" encoding="utf-8"?>
<resources><attr name="main_bg_color" format="color"/><attr name="nav_head_bg" format="color"/><attr name="text1_color" format="color"/><attr name="text2_color" format="color"/><attr name="text3_color" format="color"/><attr name="text4_color" format="color"/><attr name="text5_color" format="color"/>
</resources>
  1. 在colors.xml添加主题颜色配置

<?xml version="1.0" encoding="utf-8"?>
<resources><color name="purple_500">#1afa29</color><color name="purple_700">#afdd22</color><color name="teal_200">#FF03DAC5</color><color name="teal_700">#FF018786</color><color name="black">#FF000000</color><color name="white">#FFFFFFFF</color><color name="tab_sel">#1afa29</color><color name="tab_normal">#bfbfbf</color><color name="title_1">#000000</color><color name="title_2">#333333</color><color name="title_3">#666666</color><color name="title_4">#999999</color><color name="title_5">#CCCCCC</color><color name="banner_bg">#66CCCCCC</color><color name="purple_500_blue">#6699FF</color><color name="purple_700_blue">#3366FF</color><color name="teal_200_blue">#9999FF</color><color name="teal_700_blue">#6633FF</color><color name="title_1_blue">#0000CC</color><color name="title_2_blue">#0000FF</color><color name="title_3_blue">#0033FF</color><color name="title_4_blue">#0066FF</color><color name="title_5_blue">#0099FF</color><color name="main_gb_blue">#00CCFF</color>
</resources>
  1. 配置themes.xml,设置不同颜色主题配置

 <style name="Theme.JetpackDemo.main" parent="Theme.JetpackDemo.Base"><!-- Primary brand color. --><item name="colorPrimary">@color/purple_500</item><item name="colorPrimaryVariant">@color/purple_700</item><item name="colorPrimaryDark">@color/purple_700</item><item name="colorOnPrimary">@color/white</item><!-- Secondary brand color. --><item name="colorSecondary">@color/teal_200</item><item name="colorSecondaryVariant">@color/teal_700</item><item name="colorOnSecondary">@color/black</item><item name="main_bg_color">@color/white</item><item name="nav_head_bg">@drawable/side_nav_bar</item><item name="text1_color">@color/title_1</item><item name="text2_color">@color/title_2</item><item name="text3_color">@color/title_3</item><item name="text4_color">@color/title_4</item><item name="text5_color">@color/title_5</item></style><style name="Theme.JetpackDemo.Blue" parent="Theme.JetpackDemo.Base"><!-- Primary brand color. --><item name="colorPrimary">@color/purple_500_blue</item><item name="colorPrimaryVariant">@color/purple_700_blue</item><item name="colorPrimaryDark">@color/purple_700_blue</item><!-- Secondary brand color. --><item name="colorSecondary">@color/teal_200_blue</item><item name="colorSecondaryVariant">@color/teal_700_blue</item><item name="main_bg_color">@color/main_gb_blue</item><item name="nav_head_bg">@drawable/side_nav_bar_blue</item><item name="text1_color">@color/title_1_blue</item><item name="text2_color">@color/title_2_blue</item><item name="text3_color">@color/title_3_blue</item><item name="text4_color">@color/title_4_blue</item><item name="text5_color">@color/title_5_blue</item></style>
  1. 界面配置设置的自定义属性

<TextViewandroid:textSize="16sp"android:textColor="?attr/text1_color"android:text="@{top.title}"android:id="@+id/tv_title"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="?attr/main_bg_color"android:fitsSystemWindows="true"android:orientation="vertical">
  1. 代码设置当前主题

        super.onCreate(savedInstanceState);int theme = MmkvUtil.getInstance().getInt(Constant.THEME_KEY);if (theme == Constant.THEME_BLUE){setTheme(R.style.Theme_JetpackDemo_Blue);}else {setTheme(R.style.Theme_JetpackDemo_main);}binding = ActivityMainBinding.inflate(getLayoutInflater());setContentView(binding.getRoot());
  1. 选择切换主题

                        int theme = MmkvUtil.getInstance().getInt(Constant.THEME_KEY);if (theme == Constant.THEME_BLUE){MmkvUtil.getInstance().setInt(Constant.THEME_KEY,Constant.THEME_MAIN);}else {MmkvUtil.getInstance().setInt(Constant.THEME_KEY,Constant.THEME_BLUE);}Intent intent = new Intent(MainActivity.this,MainActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);startActivity(intent);finish();overridePendingTransition(0,0);

效果如下:

Android主题切换功能相关推荐

  1. 【Web技术】1374- 纯 JS 实现灵活的前端主题切换功能

    demo在线体验地址:https://hongqingcao.github.io/v-theme-colors/ 源码地址:https://github.com/HongqingCao/v-theme ...

  2. vue3实现主题切换功能

    本文使用的技术主要包括 vue3+vite+scss 1.配置全局scss变量 首先在src目录下创建styles文件夹,并新建common.scss文件,内容如下: // 文字颜色 $fontCol ...

  3. apkplug主题切换功能之主题包打包编译-07

    主题包与普通插件开发相同,只是须上传服务器进行编译生成apk主题包 一 主题包(插件)搭建 1.按照普通app创建流程创建安卓工程 2.按照apkplug插件开发流程添加必要文件 <apkplu ...

  4. Android 主题切换

    介绍 所谓的多主题切换,就是能够根据不同的设定,呈现不同风格的界面给用户.想实现Android多套主题的切换,网络上方案已经很多了,也看了许多大神的实现方式,但心里总想着自己去实现一遍,就这么借鉴Gi ...

  5. Android 主题切换(theme),语种切换,动态获取自定义属性(attr)值

    Google提供的更换主题包方法参考: https://source.android.google.cn/devices/architecture/rros?hl=zh-cn https://www. ...

  6. android中英文切换功能,Android开发之中英文切换

    这篇文章详细介绍了Android开发之中英文切换,文中穿插有实例代码和示例程序介绍的很详细,遇到同样问题的朋友可以参考一下,如果有更好的解决方法,请留言分享帮助更多的程序员. 首先配置文件的appli ...

  7. android中英文切换功能,Android APP 中英文切换

    实习期间,师父要求做app的中英文切换,就顺便记录了下. 一.AndroidManifest.xml文件(清单文件) 在每个要切换语言的Activity下面添加: android:configChan ...

  8. Android 主题切换/换肤方案 研究(四) - qq和qq空间

    4. qq和qq空间 (独立app) 分析时用的是: 1. 夜神android模拟器(因为用android studio自带的模拟器运行x86架构的镜像提示不能安装qq空间,安装arm架构的镜像运行又 ...

  9. Vue2.0实现炫酷的主题切换功能

    效果展示 实现原理 通过写多套样式文件,在项目编译完成后动态更改link标签引入 实现过程 首先如果需要多套主题,必须要有多套样式文件,而样式文件又有很多写法,下面分享一下我的写法 主题css 首先我 ...

最新文章

  1. 我们学习效率为什么这么低?CMU和PITT的科学家利用BCI技术对此做了相关研究
  2. (第四篇)Vue生命周期
  3. keil5用jlink不到芯片_你了解JLink、STLink、ULink、JTAG、SWD、SWIM的区别吗
  4. 2的32次方减1用python,第二章python入门
  5. [Servlet]研究ServletContext对象
  6. 初识react(四) react中异步解决方案之 redux-saga
  7. linux基础磁盘管理,Linux基础入门-文件系统操作与磁盘管理
  8. CCF201909-5 城市规划【树形DP】(100分题解链接)
  9. android 判断资源是否使用6,android-download-manager – Android 6获取下载文件的路径
  10. 多元统计分析最短距离法_多元统计分析(11个常见的多变量分析方法)
  11. 计算机操作系统第四版知识点总结(详细版一)
  12. 2022年centos下载及Linux安装
  13. 反射——Reflection
  14. 关于checkbox的removeClass属性
  15. 有趣的算法:捞鱼问题
  16. web前端第一次作业
  17. 易企秀前端压缩源码分析与还原
  18. 【杂七杂八的笔记】2019CVPR论文快读
  19. PHP的ereg()与eregi()的不同及相同点。对比
  20. yii2安装 报错fxp/composer-asset-plugin

热门文章

  1. 【SVN】——svn协议和http协议
  2. Spring——Spring整合MyBatis
  3. Indian_pines 高光谱图像数据集的处理(1)
  4. 软件测试就是挑Bug?也许你有认知偏差
  5. 兄弟连区块链入门教程分享区块链POW证明代码实现demo
  6. 解决Android虚拟机启动时System UI isn‘t responding错误
  7. [词根词缀]leg/lega/lev/liber/lig词根由来
  8. 7.1创新Audigy2Z S 7.1声卡的设置方法
  9. Element-UI 如何设置和使用第三方svg菜单图标
  10. 游戏制作之路(1)Blender下载