在android中,实现白天模式和夜间模式的切换,实际是两个主题的切换,主题之间的切换可以参考文章《android 在各种版本下实现切换主题》
谈论到此,如何实现白天模式和夜间模式的切换,就只剩下这两个主题的定义问题了!
如何定义呢?

一。定义主题的属性

通常情况下,在主题文件style里,定义主题属性,都是系统默认的熟悉,例如:

  <style name="DayTheme" parent="@style/Theme.AppCompat.NoActionBar"><item name="android:dialogTheme">@android:style/Theme.Holo.Light.Dialog</item></style>

但是这种定义,是针对app中所有使用到该地方的属性,并不能做到差异化设置。如果想做到差异化设置 ,就需要自己设置属性,有差异的设置值了。
定义主题的属性,首先需要在values文件夹下建一个以resources为根节点的资源文件,例如我们要建一个布局文件根节点的背景属性,:

<?xml version="1.0" encoding="utf-8"?>
<resources><!--白天夜晚主题:布局文件根节点的背景属性--><attr name="layoutparentbg" format="color"/>
</resources>

该属性就已经建立好了,下面就需要在style文件里使用了!

二。如何引用自定义的主题属性

上面创建的一个自定义主题属性,需要引用到布局文件根节点的地方,可以这么引用,进行设置布局文件的背景:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"  android:background="?layoutparentbg"android:layout_width="match_parent"android:layout_height="match_parent"><include
        layout="@layout/toolbar_title_only"android:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="?attr/colorPrimary"android:minHeight="?attr/actionBarSize"/><TextView
        android:id="@+id/line0"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/toolbar"android:layout_marginTop="@dimen/intro_margin_15"android:background="@color/common_line"/></RelativeLayout>

该文件的背景是这么设置的:android:background=”?layoutparentbg”,引用的是主题值,所以不指定具体的,而具体的值在主题里指定!(布局文件的Demo无实际意义,仅作示例)

三.创建主题文件style

在创建主题时,如果该主题的属性针对app的整个所有属性,使用系统属性;如果该属性只针对某一个地方几个地方使用,推荐使用自定义属性!
现在针对Demo 需要,写一个简单地style文件:

<resources xmlns:android="http://schemas.android.com/apk/res/android"><!--白天主题--><style name="DayTheme" parent="@style/Theme.AppCompat.NoActionBar"><item name="android:dialogTheme">@android:style/Theme.Holo.Light.Dialog</item><item name="layoutparentbg">@color/white</item></style><!--夜晚主题--><style name="NightTheme" parent="@style/Theme.AppCompat.NoActionBar"><item name="android:dialogTheme">@android:style/Theme.Holo.Light.Dialog</item><item name="layoutparentbg">@color/deep_black</item></style></resources>

通过这三步,主题的使用就基本可以了!
参考文档:http://www.mamicode.com/info-detail-1013910.html

android 白天模式/夜间模式切换相关推荐

  1. android 白天和夜间模式切换时闪屏问题处理方法

    这个简单的处理方法就是添加系统的动画,可以在res---value--style -- 主题里面添加 当然如果主题 单独写了,可以在单独写的主题里面写 <item name="andr ...

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

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

  3. android简单的夜间模式

    现在android项目values下打 attrs.xml <?xml version="1.0" encoding="utf-8"?> <r ...

  4. Android中白天模式与夜间模式的切换

    前言 安卓是自带模式的,我们在styles.xml便可以设置标题栏显示的颜色(白天和夜间模式当然也就可以通过切换主题来实现) 设置切换之间的动画 在res下面新建anim文件夹然后在里面创建切换动画 ...

  5. android ios 夜间模式切换,iOS-夜间模式(换肤设置)

    一.实现功能及主要思路 实现功能: iOS 开发中有时候会有夜间模式(换肤设置)的需求,  其实主要是更改相关颜色操作.每次切换夜间/白天模式时,都会发出通知给所有ViewController,让它们 ...

  6. android 夜间模式库,Android夜间模式切换库 NightModel

    软件介绍 NightModel是一个方便切换夜间模式的库,利用官方夜间模式,同时不用重启Activity. 使用要求:官方包support appcompat 23.2.0 或以上版本 activit ...

  7. Android 简单的白天与夜晚模式切换

    //使用Android SDK自带的API,完成白天与夜晚模式切换,非常简单. //-------第一步 打开你的项目values下的style.xml文件修改-------- //把你原来的: &l ...

  8. 44.android 简单的白天与夜晚模式切换

    //使用Android SDK自带的API,完成白天与夜晚模式切换,非常简单. //这句依赖在android studio创建项目的时候就有了: implementation 'com.android ...

  9. android自动夜间模式,Android实现日夜间模式的深入理解

    在本篇文章中给出了三种实现日间/夜间模式切换的方案,三种方案综合起来可能导致文章的篇幅过长,请耐心阅读. 1.使用 setTheme的方法让 Activity重新设置主题: 2.设置 Android ...

最新文章

  1. int main(int argc,char *argv[]),主函数的参数问题
  2. 【攻防世界019】SignIn
  3. MGM Resorts和NRG Energy在美国完成最大屋顶光伏阵列的安装
  4. c#扩展方法奇思妙用变态篇四:string 的翻身革命
  5. python开发转行渗透测试_月薪45K的大牛用Python开发一款密码攻击测试器!密码形同虚设!...
  6. Linux文件类型与文件权限详解(三)
  7. 20.卷1(套接字联网API)---广播
  8. [JSOI2012]玄武密码 题解(AC自动机)
  9. 传奇HERO引擎给装备加套装属性技巧
  10. 使用python将视频中的音频分离出来
  11. linux 截屏_如何在Linux上截图
  12. JavaScript async/await理解
  13. WiFi开启热点冲突
  14. 关于如何处理MyEclipse中struts2与Hiber 3中antlr-2.7.2.jar与antlr-2.7.6包冲突的问题
  15. Vue中如何关闭语法检查
  16. 【网络游戏植入营销案例】
  17. 按键精灵脚本-windows桌面自动化操作
  18. Ridge和Lasso回归代码实现--Tensorflow部分
  19. 2021-06-22 9点30 程序外生活 - 中国A50指数 机器预测学习跟踪记录 - 周一晚上第一个较为正常的4小时反弹出现,日线底分型出现,量能上有持续反弹概率高。周月线持续跌势。
  20. 离奇电信诈骗:一夜损失 52000元,毒品、情妇、黑客交织的犯罪网络

热门文章

  1. 手机无线耳机哪个牌子好用?好用的无线蓝牙耳机推荐
  2. js高频面试题(高频)
  3. HTML5--多媒体viedo和radio
  4. 三星+java+s3600_三星手机s3600怎么样?报价多少?
  5. 016 可接任务遍历(链表+二叉树)
  6. 国内自助建站平台哪些适合小白用户想建站?
  7. AXI协议与自定义AXI4-Lite外设
  8. python psycopg2使用_psycopg2 (python与postgresql)
  9. 锁定计算机禁用,“关闭计算机锁定”的解决方案
  10. C/C++:函数名前引用一个空的宏定义