参考

截图

1、默认打开

image.png

2、点击【换主题色】

image.png

需知

主题色运用:manifest清单文件中application的属性之一,android:theme="@style/AppTheme"

在style.xml中定义不同风格的theme(对app而言的style啦)

熟悉?attr/colorPrimary等属性,在theme中定义好后,布局文件用到这些属性可以自动替换

如何点击触发后整体画面生效

代码

1、清单文件manifest中,app默认使用AppTheme(或者自定义Theme)

...

android:theme="@style/AppTheme">

...

2、style.xml 风格:

可定义app的theme,比方说AppTheme和MyTheme

一般用来定义app内各种控件样式,可重复使用,减少layout中的代码量,亦可做到后期维护换色等快速修改,不用一一修改。

用到一些自定义属性

@color/colorPrimary

@color/colorPrimaryDark

@color/colorAccent

@color/wx_bg_gray

60dp

@color/sysColorPrimary

@color/sysColorPrimaryDark

@color/sysColorAccent

80dp

@color/wx_green

@color/wx_sunset

100dp

match_parent

?attr/myButtonHeight

3、attr.xml 自定义属性(一般做自定义View的人肯定熟悉):

如果不用可忽略。这里定义后,就可在style.xml中使用这个item属性了,并可以写?attr/myBgColor 和 ?attr/myButtonHeight

4、layout.xml 布局文件使用

这里背景使用到:android:background="?attr/myBgColor"

其中一个按钮用到:style="@style/MyBtnStyle",而这个style里面属性用到?attr/myButtonHeight 。 而且这个myButtonHeight定义到了2个theme里面了!!!

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity"

android:orientation="vertical"

android:background="?attr/myBgColor">

android:id="@+id/sample_text"

android:textSize="25sp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello World!"

/>

android:id="@+id/et_1"

android:textSize="25sp"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Edit it"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="CheckBox"

android:checked="true"/>

android:id="@+id/btn_1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="点击这里"/>

android:id="@+id/btn_2"

style="@style/MyBtnStyle"

android:text="换主题色"/>

5、代码控制切换主题

setTheme(),必须在setContentView(),绘画画面之前

重启当前画面:recreate()

当前画面改了,但是除了栈顶的活动画面,之后新打开画面可以是新的theme,之前在栈里存活的活动画面还是不能及时换theme,这个此处不写了,太多情况了,反正可以控制的。

//切换不同的风格,必须在setContentView之前做

if(useMyTheme){

setTheme(R.style.MyTheme);

}else{

setTheme(R.style.AppTheme);

}

setContentView(R.layout.activity_main);

btn_2 = findViewById(R.id.btn_2);

btn_2.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

useMyTheme = !useMyTheme;

recreate(); //重启画面

}

});

android换主题功能,Android 切换主题风格(Theme换肤效果)相关推荐

  1. android 夜间模式功能,Android实现夜间模式切换功能实现代码

    现在很多App都有夜间模式,特别是阅读类的App,夜间模式现在已经是阅读类App的标配了,事实上,日间模式与夜间模式就是给App定义并应用两套不同颜色的主题,用户可以自动或者手动的开启,今天用Andr ...

  2. android相册幻灯片功能,Android实现幻灯片式图片浏览器

    我们来实现一个幻灯片式图片浏览器: 最下面一个画廊视图,选中画廊中的图片,会在上面的ImageSwitcher控件中显示大图. 效果图如图 实现方法: 在布局文件中添加图片切换控件ImageSwitc ...

  3. android 本地提醒功能,android中的本地定时推送到通知栏

    一.使用系统定义的Notification 以下是使用示例代码: import android.app.Notification; import android.app.NotificationMan ...

  4. android app 天气功能,Android天气预报app改进版

    最近总是有人来和我说我以前写的一个小app无法正常获取数据~Android简易版天气预报app 今天就又运行了下来查找问题,发现或许是接口有限制吧,不能在多台手机使用同个apikey 然后,发现了我写 ...

  5. android播放mp3功能,Android Studio实现简单音乐播放功能的示例代码

    项目要求 基于Broadcast,BroadcastReceiver等与广播相关的知识实现简单的音乐播放功能,包括音乐的播放.暂停.切换.进度选择.音量调整. 设计效果 (进度条时间刷新功能还没有实现 ...

  6. android的UDC功能,Android实现搜索历史功能

    本文实例为大家分享了Android实现搜索历史的具体代码,供大家参考,具体内容如下 SharedPreferences实现本地搜索历史功能,覆盖搜索重复的文本,可清空 1. 判断搜索内容是否含表情,不 ...

  7. android 添加附件功能,Android实现带附件的邮件发送功能

    本文实例讲解了基于基于jmail实现android邮件发送功能,分享给大家供大家参考,具体内容如下 在android上发送邮件方式: 第一种:借助gmail app客户端,缺点是必须使用gmail帐号 ...

  8. android sharesdk分享功能,Android ShareSDK快速实现分享功能

    第一步 :获取ShareSDK 为了集成ShareSDK,您首先需要到ShareSDK官方网站注册并且创建应用,获得ShareSDK的Appkey,然后到SDK的下载页面下载SDK的压缩包,解压以后可 ...

  9. android系统应用功能,Android系统应用(12)

    如何成为系统应用 方法一:在Manifest中声明android:sharedUserId的值为:android.uid.system,android.uid.phone,android.uid.lo ...

最新文章

  1. Open Source的一些网站,自己收集来的
  2. Daily Scrum 11.5
  3. matlab_矩阵的灵活操作
  4. 158.5. manifests
  5. PHP,操作多个用户,多个线程的session,实现用户登陆状态session值的自动更新
  6. php学生选课系统设计网站作品
  7. Latex文本文档的排版
  8. access() 函数 c++
  9. linux shell脚本 定义变量,Shell脚本应用 - 编制shell脚本、shell变量
  10. 分享个B端产品分析报告
  11. 华为手机禁用省电精灵
  12. 手把手教你玩物联网(二)---onenet云平台产品创建
  13. 剑指offer——44.翻转单词顺序序列
  14. html 在线编辑pdf,iLoveIMG 一个完全免费的PDF文件处理网站,可在线编辑PDF文件
  15. 腾讯2019秋招--小q爬塔(dp)
  16. 使用ResNet-50实现图像分类任务
  17. 软件企业认定条件政策
  18. Navigation的简单使用
  19. Logic pro中插件的存储路径
  20. 上海交通大学2022年计算机考研复试分数线

热门文章

  1. win10升级东芝NVME XG6 1T固态SSD,如何迁移系统(win10)-更换 m.2 NVME 系统迁移恢复
  2. 操作系统原理学习(第三周_上)_进程
  3. 解决淘淘第三天无法显示图片
  4. 文本处理-英文拼写检查
  5. 百度涉足招聘市场:猛挖51job智联墙角
  6. Django缓存系统
  7. kettle | error working eith XUL fedinition
  8. 聊聊这个火爆GitHub的女装大佬项目
  9. C#根据输入的层数打印星号(*)组成的的三角形
  10. PTA 7-138 昨天