android 白天模式/夜间模式切换
在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 白天模式/夜间模式切换相关推荐
- android 白天和夜间模式切换时闪屏问题处理方法
这个简单的处理方法就是添加系统的动画,可以在res---value--style -- 主题里面添加 当然如果主题 单独写了,可以在单独写的主题里面写 <item name="andr ...
- android 夜间模式功能,Android实现夜间模式切换功能实现代码
现在很多App都有夜间模式,特别是阅读类的App,夜间模式现在已经是阅读类App的标配了,事实上,日间模式与夜间模式就是给App定义并应用两套不同颜色的主题,用户可以自动或者手动的开启,今天用Andr ...
- android简单的夜间模式
现在android项目values下打 attrs.xml <?xml version="1.0" encoding="utf-8"?> <r ...
- Android中白天模式与夜间模式的切换
前言 安卓是自带模式的,我们在styles.xml便可以设置标题栏显示的颜色(白天和夜间模式当然也就可以通过切换主题来实现) 设置切换之间的动画 在res下面新建anim文件夹然后在里面创建切换动画 ...
- android ios 夜间模式切换,iOS-夜间模式(换肤设置)
一.实现功能及主要思路 实现功能: iOS 开发中有时候会有夜间模式(换肤设置)的需求, 其实主要是更改相关颜色操作.每次切换夜间/白天模式时,都会发出通知给所有ViewController,让它们 ...
- android 夜间模式库,Android夜间模式切换库 NightModel
软件介绍 NightModel是一个方便切换夜间模式的库,利用官方夜间模式,同时不用重启Activity. 使用要求:官方包support appcompat 23.2.0 或以上版本 activit ...
- Android 简单的白天与夜晚模式切换
//使用Android SDK自带的API,完成白天与夜晚模式切换,非常简单. //-------第一步 打开你的项目values下的style.xml文件修改-------- //把你原来的: &l ...
- 44.android 简单的白天与夜晚模式切换
//使用Android SDK自带的API,完成白天与夜晚模式切换,非常简单. //这句依赖在android studio创建项目的时候就有了: implementation 'com.android ...
- android自动夜间模式,Android实现日夜间模式的深入理解
在本篇文章中给出了三种实现日间/夜间模式切换的方案,三种方案综合起来可能导致文章的篇幅过长,请耐心阅读. 1.使用 setTheme的方法让 Activity重新设置主题: 2.设置 Android ...
最新文章
- int main(int argc,char *argv[]),主函数的参数问题
- 【攻防世界019】SignIn
- MGM Resorts和NRG Energy在美国完成最大屋顶光伏阵列的安装
- c#扩展方法奇思妙用变态篇四:string 的翻身革命
- python开发转行渗透测试_月薪45K的大牛用Python开发一款密码攻击测试器!密码形同虚设!...
- Linux文件类型与文件权限详解(三)
- 20.卷1(套接字联网API)---广播
- [JSOI2012]玄武密码 题解(AC自动机)
- 传奇HERO引擎给装备加套装属性技巧
- 使用python将视频中的音频分离出来
- linux 截屏_如何在Linux上截图
- JavaScript async/await理解
- WiFi开启热点冲突
- 关于如何处理MyEclipse中struts2与Hiber 3中antlr-2.7.2.jar与antlr-2.7.6包冲突的问题
- Vue中如何关闭语法检查
- 【网络游戏植入营销案例】
- 按键精灵脚本-windows桌面自动化操作
- Ridge和Lasso回归代码实现--Tensorflow部分
- 2021-06-22 9点30 程序外生活 - 中国A50指数 机器预测学习跟踪记录 - 周一晚上第一个较为正常的4小时反弹出现,日线底分型出现,量能上有持续反弹概率高。周月线持续跌势。
- 离奇电信诈骗:一夜损失 52000元,毒品、情妇、黑客交织的犯罪网络
热门文章
- 手机无线耳机哪个牌子好用?好用的无线蓝牙耳机推荐
- js高频面试题(高频)
- HTML5--多媒体viedo和radio
- 三星+java+s3600_三星手机s3600怎么样?报价多少?
- 016 可接任务遍历(链表+二叉树)
- 国内自助建站平台哪些适合小白用户想建站?
- AXI协议与自定义AXI4-Lite外设
- python psycopg2使用_psycopg2 (python与postgresql)
- 锁定计算机禁用,“关闭计算机锁定”的解决方案
- C/C++:函数名前引用一个空的宏定义