android support library github,Android Support Library 之 夜间模式

原标题:Android Support Library 之 夜间模式

前言

夜间模式实现方式:1、通过切换theme来实现夜间模式。优点:可以匹配多套主题,并不局限于黑白模式缺点:需要大量定义主题详见博客:http://wuxiaolong.me/2015/08/19/ChangeTheme/

2、通过修改uiMode来切换夜间模式。修改uimode是修改Configuration,这种主题切换只限于黑白模式,没有其他模式,不需要大量定义主题,即本文介绍的内容。

效果预览

6d4311ec2aa367273176307cea32e098.gif

如何使用

第一步

(1)app/build.gradle

compile'com.android.support:appcompat-v7:25.3.1'

(2)Activity须继承AppCompatActivity

(3)Theme.AppCompat.DayNight

@color/colorPrimary

@color/colorPrimaryDark

@color/colorAccent

false

true

第二步

应用全局主题推荐在 Application 的onCreate()中进行设置AppCompatDelegate.setDefaultNightMode(int mode);

它有四个可选值,分别是:MODE_NIGHT_NO: 使用亮色(light)主题,不使用夜间模式MODE_NIGHT_YES:使用暗色(dark)主题,使用夜间模式MODE_NIGHT_AUTO:根据当前时间自动切换 亮色(light)/暗色(dark)主题MODE_NIGHT_FOLLOW_SYSTEM(默认选项):设置为跟随系统,通常为 MODE_NIGHT_NO

第三步

动态的设定主题,需要切换主题调用:

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);

//调用recreate()使设置生效

recreate();

注意事项

setDefaultNightMode()与setLocalNightMode()区别

AppCompatDelegate.setDefaultNightMode()是对整个App中theme为DayNight主题生效getDelegate().setLocalNightMode()只对特定的组件生效

夜间资源

把夜晚主题的color等资源放在values-night中,程序在运行时就会自动调用

获取应用当前的主题

intcurrentNightMode=getResources().getConfiguration().uiMode

&Configuration.UI_MODE_NIGHT_MASK;

switch(currentNightMode){

caseConfiguration.UI_MODE_NIGHT_NO:

// Night mode is not active, we're in day time

caseConfiguration.UI_MODE_NIGHT_YES:

// Night mode is active, we're at night!

caseConfiguration.UI_MODE_NIGHT_UNDEFINED:

// We don't know what mode we're in, assume notnight

}

如果切换了主题,本想通过这个方法,下次启动程序的时候,来设置。发现并没有记住这个值,还是只能SharedPreference读取,然后根据用户设置,调用 setDefaultNightMode() 方法。

适配文字图片

尽可能的使用主题属性(theme attributes)

文字颜色

android:textColor="?android:attr/textColorPrimary"

android:textColor="?android:textColorPrimary"

系统默认的文字颜色。在亮色(light)主题下,颜色接近黑色,在暗色(dark)主题下,颜色接近白色。有两种写法,次标题和三标题同样。

次标题

android:textColor="?android:attr/textColorSecondary"

三标题

android:textColor="?android:attr/textColorTertiary"

系统默认的背景颜色

android:background="?android:attr/colorBackground"

android:background="?android:colorBackground"

点击效果

android:background="?android:attr/selectableItemBackground"

android:background="?android:selectableItemBackground"

android:background="?attr/selectableItemBackground"

系统默认的图标颜色

如vector里颜色:

android:fillColor="?attr/colorControlNormal"

源码地址

https://github.com/WuXiaolong/DesignSupportLibrarySample

iOS 用户赞赏通道,谢谢支持

责任编辑:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Replace Temp with Query(以查询取代临时变量)

一个临时变量保存某一个表达式的运算结果 double basePrice quantity * itemPrice; if (basePrice > 1000) {return basePrice * 0.95; } else {return basePrice * 0.98; } 重构后 if (basePrice() > 1000) {return basePrice() * 0.95; } else {return basePrice()…

类脑信息处理研究取得进展

来源:AAAI2018概要:近期,中国科学院自动化研究所类脑智能研究中心类脑信息处理(BRAVE)研究组,在研究员张兆翔的带领下,在借鉴生物神经结构、认知机制与学习特性的神经网络建模与类人学习研究中取…

今天下午爽了一把!

呵呵,很久没这么爽爽地看电影了,一个下午居然连续看了三部电影!看到人不想看为止,实在是很过瘾的一个下午啊!只是是翘课看的电影,感觉有点不太好,最近真是越来越堕落了。看来要好好克制一下自己…

展望:共融机器人的基础理论与关键技术

来源:《国家科学评论》概要:自1959年工业机器人诞生以来,机器人在机械制造、国防安全、健康服务、科考与医疗等方面发挥出越来越重要的作用。自1959年工业机器人诞生以来,机器人在机械制造、国防安全、健康服务、科考与医疗等方面…

Introduce Explaining Variable(引入解释性变量)

难于理解的复杂表达式 if ((platform.toUpperCase().indexOf("MAC") > -1) &&(brower.toUpperCase().indexOf("IE") > -1) &&wasInitialized && resize > 0) {// do something } 重构后 final boolean isMacOS platf…

android sdk 目录说明,Android的sdk、api及工程目录说明

SDK下包的说明1:add-ons:Android开发需要的第三方文件和软件库2:docs:Android的文档。包括开发指南、API参考、资源等3:extras:扩展的附加包4:platforms:你安装下载的所有Android平台…

角色的改变

今年因为个人的原因,换了一个环境,一直都是做开发的,新的工作也是开发,开发部经理,怎么说还是开发。 可是时间越长越觉得操心的不仅是开发的问题了,负责我们公司的经理去美国读书去了,基本不管了…

哈萨比斯导师:人工智能媲美人类或需两百年,神经学是条出路

来源:澎湃新闻概要:从围棋到智能驾驶,深度学习缔造了眼下这一波人工智能热潮。在深度学习最热的两大关键词“AlphaGo”和“自动驾驶”,托马索波吉奥(Tomaso Poggio)都有声名卓著的学生,分别是De…

我的第一个blog

我的第一个blog 本来是为了 elvish ray 的开源注册的, 后来又在 sourceforge 注册了一个, 感觉那里的服务更专业, 这里还是说说闲话用吧……呵呵…… 当然还是会提供一些源码……posted on 2005-02-01 22:29 Len3d 阅读(...) 评论(...) 编辑 …

android sqlite 查询时间,android – sqlite日期查询

我是新的sqlite.我有一个有3列的表1. Id2. FoodName3. Date and time(ex: 1 Chicken 2012-08-10 13:54)我读到某处Android sqlite不提供日期数据类型.所以我使用文本数据类型在本地数据库中存储日期.它工作正常.现在我想写一个查询来检索两个日期之间的记录.我试过但我没有得到…

Split Temporary Variable(分解临时变量)

某个变量被赋值超过一次,它既不是循环变量,也不被用于汇总结果 double temp 2 * (height width); System.out.println(temp); temp height * width; System.out.println(temp); 重构后 final double perimeter 2 * (height width); System.out.p…

独家对话英伟达首席科学家:解码AI芯片战局

来源:智东西概要:独家对话Bill Dally博士,深度解读四大AI热点话题。从2017年1月底以来,英伟达的股价又从108美元一路飙升至240多美元,翻了一倍有多。而英伟达股价一飞冲天的背后,正是人工智能技术不断兴盛崛…

[翻译]2005年软件业界推出新产品非官方计划

虽然预测未来的最好方法就是发明(The best way to predict the future is to invent it. -- A. Kay),但是对于我等现在还没开始发明或者还没有能力发明的人来说,不妨还是看看2005年会软件业界会推出点什么软件,想象一下程序员的生活会不会在2…

android 百度地图3.0定位,Android 百度地圖 SDK v3.0.0 (二) 定位與結合方向傳感器...

新功能添加:第一,定位功能;第二,與方向傳感器結合,通過旋轉手機進行道路的方向確認。1、初次啟動定位/*** 定位的客戶端*/privateLocationClient mLocationClient;/*** 定位的監聽器*/publicMyLocationListener mMyLoc…

Remove Assignments to Parameters(移除对参数的赋值)

对入参进行赋值 int discount(int inputVal, int quantity, int yearToDate) {if (inputVal > 50) {inputVal - 2;} } 重构:用一个临时变量取代该参数 int discount(int inputVal, int quantity, int yearToDate) {int result inputVal;if (inputVal > 50…

房地产信息

今天随便在网上看了一下长沙的房产,觉得有几个小区,还比较适合。 枫林绿洲 http://house.csonline.com.cn/lp/displp.asp?id39 西子园 http://house.csonline.com.cn/lp/displp.asp?id42 转载于:https://www.cnblogs.com/jacklaw/archive/2005/02/17/…

Replace Method with Method Object(以函数对象取代函数)

在一个大型函数中,由于局部变量的使用导致无法采用Extract Method class Order...double price() {double primaryBasePrice;double secondaryBasePrice;double teriaryBasePrice;// long computation.....} } 重构:将这个函数放进一个单独对象中&…

强烈推荐 MicroSoft Office OneNote

微软推出了一款电子记事本软件,MicroSoft Office OneNote ,强烈推荐之! 平时工作中,一般大家都会记笔记,好记性不如烂笔头嘛,但是大家都还不愿意拿笔记录在纸上,特别是一些比较重要的资料&…

2018-2020年中国服务机器人行业深度研究报告

来源:机器人大讲堂概要:目前世界上至少有48个国家在发展机器人,其中25个国家已涉足服务机器人开发。一、报告编写背景和特点北京立德融创智能机器人技术研究院(简称“立德研究院”)通过对各机器人项目的实施以及自身发…

vscode android入门,vscode Android调试

.vscode 文件夹中添加launch.json文件launch.json内容:{// 使用 IntelliSense 了解相关属性。// 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0","configuratio…