android夜间模式揭露动画,Android Material Design系列之夜间模式

今天我们讲讲夜间模式的实现,这篇文章的名字应该叫:《Android Material Design系列之夜间模式》。在Android 5.0 之后,实现夜间模式并非很难了,支持的5.0库提供了非常简单的实现方式。不信,你就往下看。

首先说,这种方式有它的局限性,只能是两种模式,夜间和白天的黑白两种模式,由于其局限性,所以实现就非常简单。讲之前,咱先看看效果图吧。

效果图

5eceaee37e9724799f93a460ea9a3f8a.gif

image

实现真的是非常简单,就如下几步,来一起来看看。

实现依赖

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

配置对应的主题模式

上篇文章我们补充了主题模式的讲解,对于一些主题样式进行的相应的说明,我也说过,到这里我们就有可能用到。

白天模式

对于白天模式的主题样式和颜色,我们就是按正常的来做就可以了。就是我们平常设置主题和颜色的地方设置就行。不同的是我们的主题style样式需要继承的是DayNight主题。

如下:

@color/colorPrimary

@color/colorPrimaryDark

@color/colorAccent

@color/text_color_primary

false

true

重点是这句话:

parent="Theme.AppCompat.DayNight"

夜间模式

对于夜间模式的颜色和主题配置,我们需要建立一个res下建立一个values-night文件夹,里面放着夜间主题样式的color等资源。

colors.xml配置如下:

#0a0a0a

#000000

#fc0404

#FF2ECC71

#51C332

#ffffff

#7f7f7f

#0a0a0a

#f305be

#00ffff

#000000

需要注意和说明的是:这里的name的属性的名字和我们正常情况下的,也就是白天模式下的名字必须一样,只不过是值不一样罢了,颜色值白天和夜间的值你们自己配置就可以了。

切换主题

这一步就是改切换主题的调用了,如下:

isNight = sp.getBoolean("night", false);

if (isNight) {

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);

sp.edit().putBoolean("night", false).commit();

} else {

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);

sp.edit().putBoolean("night", true).commit();

}

recreate();

我这里对模式进行了保存,先判断现在处于什么模式,然后点击的时候,再根据现在的模式切换到另一种模式。

重点是这两行代码:

//这是设置成非夜间模式

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);

//这是设置成夜间模式

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);

补充说明

AppCompatDelegate.setDefaultNightMode(int mode);

这里的mode有四个可选值,分别是:

MODE_NIGHT_NO: 使用亮色(light)主题,不使用夜间模式

MODE_NIGHT_YES:使用暗色(dark)主题,使用夜间模式

MODE_NIGHT_AUTO:根据当前时间自动切换 亮色(light)/暗色(dark)主题

MODE_NIGHT_FOLLOW_SYSTEM(默认选项):设置为跟随系统,通常为MODE_NIGHT_NO

到这里关于夜间模式的切换就讲完了,是不是非常简单?对,就是这么简单,如果你还不知道这种方式,那就赶紧去试试吧,最近MD系列的阅读量真的是很低,看来大家都不太喜欢,如果这篇文章的阅读量低于1500,就暂时先停一段MD系列的更新,换别的文章更新,给大家换换脑子,写这个系列我也有点累了,MD系列后面应该讲解转场动画和按压特效了。

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

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

相关文章

jboss drools_JBoss Drools –入门

jboss drools这篇文章是关于我如何掌握JBoss Drools的 。 其背后的原因是:SAP收购了我公司当前的规则引擎,而Drools是我们将寻找的另一种选择,只要有人有能力提高概念验证的能力。 尽管似乎有大量的文档,但是我总是会通过示例来发…

华为荣耀30pro鸿蒙内测版,荣耀手机用户放心了 消息称荣耀30 Pro正在内测华为鸿蒙OS...

2021-5-11 13:12【天极网手机频道】鸿蒙OS2.0手机版目前正在大规模开发者公测阶段,有消息称6月份将开始大规模向华为手机用户推送。而对于不少荣耀手机用户来讲,他们也十分期待体验鸿蒙OS,但荣耀品牌已经与华为品牌分离,这让不少荣…

Docker容器中的WildFly Swarm JAX-RS微服务

这些天,每个人都在谈论微服务。 关于如何在企业级应用这些原则,有很多意见和想法,而很少有示例。 可以肯定的是,即使在几天前的会议上,我也很少发现有人在生产环境中运行Docker容器。 当我问起初次体验以及是否有人玩过…

C#解析json文件的方法

C# 解析 json JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。 JSON采用完全独立于语言的文本格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,易于人阅读和编写&#x…

spring 线程池_Spring线程池服务

spring 线程池线程池对于执行同步和异步过程非常重要。 本文介绍如何使用Spring开发和监视线程池服务。 创建线程池已通过两种替代方法进行了说明。 二手技术 : JDK 1.6.0_21 春天3.0.5 Maven的3.0.2 步骤1:建立已完成的专案 创建一个Maven项目&…

带有骆驼,ActiveMQ,Elasticsearch的HL7关键用例

对于可以说HL7协议格式的系统, HL7 over MLLP是一种非常常见的传输机制。 JBoss Fuse是一个非常强大的微服务样式集成平台,在为关键医疗保健提供者构建灵活,有弹性,高可用性的集成方案方面拥有良好的记录。 此外,在JCA…

android 包裹内容,Android开发中Bundle用法 包裹数据

SDK里是这样描述:A mapping from String values to various Parcelable types。它帮助我将数据打包传入intent里面,为使用这些数据提供了便利。protected void onListItemClick (ListView l, View v, int position, long id){super.onListItemClick(l, v…

安卓高级6 SnackBar

引言 文/李牧羊(简书作者) 原文链接:http://www.jianshu.com/p/2654e6bda3b1 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。 在之前我有提到这一篇Android Design Support Library系列文章…

利用Aspose.Word控件实现Word文档的操作

Aspose系列的控件,功能都挺好,之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出,可以实现多样化的报表设计及输出,由于一般输出的内容比较正规化或者多数是表格居多,所以一般使用Aspose.Cell来实现我想要的各…

html编码自动识别,html实体编码遇上js代码

摘要: 在js中单、双引号引起来的是字符串,如果我们要在字符串中使用单、双引号,需要反斜杠进行转义。而如果字符串出现在html标签中,我们需要做转义处理。单双引号在js代码中在js中单、双引号引起来的是字符串,如果我们…

Activiti中具有单独数据库模式的多租户

我们过去听到的一项功能请求是以多租户方式运行Activiti引擎,使租户的数据与其他租户的数据隔离。 当然,在某些云/ SaaS环境中,这是必须的。 几个月前,波恩大学的学生拉斐尔吉伦(Raphael Gielen)与我接触&…

html5自动把某个层放在屏幕底部,告诉你一个将 footer 保持在底部的最好方法

当你在布局网页时,有可能会遇到类似下面的这种情况broken_layout.png导致这一问题的原因是页面内容太少,无法将内容区域撑开,从而在 footer 下面留下一大块空白。本文将介绍一种现代化的方法,�确保 footer 始终处于页面…

html的扇形代码导航,CSS3--利用transform和transition属性制作扇形导航

在前面,我们已经讲解了transform这个属性以及案例,那么本文会进一步结合transform和transition两个属性,并制作一个简单的案例进行说明。一、transition属性说明接下来简单分析一下transition这个属性的定义以及子属性。1)ansition-property …

常见的误解:这会创建多少个对象?

总览 一个常见的问题是一段代码创建多少个对象或多少个字符串。 答案通常不是您的想法,也不是您真正需要知道的。 了解何时创建对象是很有用的,但是有很多其他因素通常要考虑的重要得多,这可能意味着应用程序总数不是您所想的。 字符串不是一…

cvs配电保护断路器_电工电器(三)-配电电器-断路器类-剩余电流保护断路器

本文文字836,阅读时间6分钟左右。此系列文章 从配电电器的大类等进行慢慢阐述,有不足的地方 欢迎大家相互探讨交流。配电电器,顾名思义就是进行电力分配的设备。电,从发电机出来之后,由总线输出,不可能直接…

delhpi7 tcombobox清楚重复项_专利数据统计中需要搞清楚的首要问题(2)

上一篇专利数据统计中需要搞清楚的首要问题(1)介绍了通过合并申请号避免重复统计,理清了专利篇数和专利件数的问题,那么还有一类统计就是对发明项数的统计,这里就涉及到对同一项发明的重复统计问题。上一篇介绍的相同申请号但不同公开号的专利…

【Electron】Electron开发入门(八):自定义electron框架外壳(shell)的菜单(Menu)...

1.自定义electron框架外壳(shell)的菜单(Menu) electron的main.js里代码: const Menu require(electron).Menu; var template [{label: 关闭,click: function () { win.close();console.log("关闭")},// s…

交通大数据应用细分_盈海科技 | 交通大数据可视化“掘金”数据价值

面对日益拥堵的交通状况智能交通布局虽在不断完善但交通管理依旧收效甚微问题究竟出在了哪里?数据独立存储难以融合应用数据内在规律难寻数据可视化程度低……问题繁多 困难重重怎么办???交通大数据可视化解决方案上岗啦&#xff…

书评– Kubernetes Up&Running,作者:Kelsey Hightower

欢呼! 正如我在以前的帖子中所写的那样,当您开始研究和使用所有这些新颖的,有光泽的容器/编排技术时,很有可能最终导致您的翻译“迷失”。 很多信息,很多技术,很多开发 ,很多承诺,很…

MFC CListCtrl

列名、行内容的添加、删除。 据列名、行内容长度设置列宽。 排序。 提升权限 BOOL CDemoListCtrlApp::EnableDebugPrivilege() { HANDLE token; if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&token)) { return FALSE; } TOKEN_PRIVILEGES tkp…