Android中有夜间主题Theme.AppCompat.DayNight

主题继承Theme.AppCompat.DayNight

<style name="AppTheme" parent="Theme.AppCompat.DayNight"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><item name="android:textColorPrimary">@color/ic_color</item><item name="android:textColor">@color/textColor</item><item name="android:statusBarColor">@color/colorPrimary</item>
</style>

Button按下后使用

int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
if (mode == Configuration.UI_MODE_NIGHT_YES) {AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);SPUtil.put(SPUtil.isDay, true);
} else {AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);SPUtil.put(SPUtil.isDay, false);
}
recreate();

运行app,切换夜间模式时闪退,连错误的地方都没报

解决办法:在recreate()之前添加window动画

int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
if (mode == Configuration.UI_MODE_NIGHT_YES) {AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);SPUtil.put(SPUtil.isDay, true);
} else {AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);SPUtil.put(SPUtil.isDay, false);
}
getWindow().setWindowAnimations(R.style.WindowAnimationFadeInOut);
recreate();

在style中定义

<style name="WindowAnimationFadeInOut"><item name="android:windowEnterAnimation">@anim/fade_in</item><item name="android:windowExitAnimation">@anim/fade_out</item>
</style>

fade_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><alphaandroid:duration="1000"android:fromAlpha="0"android:interpolator="@android:anim/decelerate_interpolator"android:toAlpha="1.0"/>
</set>

fade_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><alphaandroid:duration="1500"android:fromAlpha="1.0"android:interpolator="@android:anim/decelerate_interpolator"android:toAlpha="0"/>
</set>

运行后,夜间模式可以切换,还有动画效果

Android夜间模式相关推荐

  1. Android夜间模式实践

    前言 由于项目需要,近段时间开发的夜间模式功能.主流的方案如下: 1.通过切换theme实现 2.通过resource id映射实现 3.通过Android Support Library的实现 方案 ...

  2. android自动夜间模式吗,Android夜间模式的实现方案

    原标题:Android夜间模式的实现方案 作者简介 本篇来自 Sunlight1024的投稿,详细地讲解了关于Android应用的夜间模式的实现,希望大家喜欢! Sunlight1024的博客地址: ...

  3. android自动夜间模式,夜晚的故事(android夜间模式实现)

    夜幕降临,他走在马路上,回想着今天发生的一切,他不敢相信事情就这样发生了.他最终还是决定拨打那个电话,掏出手机,解锁屏幕,突然一道强光从屏幕里毫无预兆的发射出来.他一个踉跄倒在了马路中央.而他身后伴随 ...

  4. Android夜间模式最佳实践

    转自:Android夜间模式最佳实践 由于Android的设置中并没有夜间模式的选项,对于喜欢睡前玩手机的用户,只能简单的调节手机屏幕亮度来改善体验.目前越来越多的应用开始把夜间模式加到自家应用中,没 ...

  5. android 夜间模式 框架,Android 夜间模式的三种实现

    实现夜间模式有很多种方式,经过多次尝试,算是找到了一种性价比较高的方式. 主题方式 这是最正统的方式,但工作量巨大,因为要全局替换 xml 布局中所有硬编码的色值,将其换成主题色.然后通过换主题达到换 ...

  6. android os夜间,Android夜间模式实现

    查看我的全部开源项目[开源实验室] 欢迎加入我的QQ群:[201055521],本博客客户端下载[请点击] 本文原创,转载请注明地址:http://blog.kymjs.com/ 最近在做一个Andr ...

  7. android 夜间模式设置

    夜晚的故事(android夜间模式实现) 字数2003  阅读1393  评论11  喜欢18 夜幕降临,他走在马路上,回想着今天发生的一切,他不敢相信事情就这样发生了.他最终还是决定拨打那个电话,掏 ...

  8. Android夜间模式的几种实现

    一.直接修改widget颜色,这种方式实现起来最简单,但需要每个控件都去修改,太过复杂.例如: /*** 相应交互,修改控件颜色* @param view*/public void onMethod1 ...

  9. android官方夜间模式,Android夜间模式实践

    前言 由于项目需要,近段时间开发的夜间模式功能.主流的方案如下: 1.通过切换theme实现 2.通过resource id映射实现 3.通过Android Support Library的实现 方案 ...

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

    今天我们讲讲夜间模式的实现,这篇文章的名字应该叫:<Android Material Design系列之夜间模式>.在Android 5.0 之后,实现夜间模式并非很难了,支持的5.0库提 ...

最新文章

  1. 这个椅子哪里卖?我也想买啊!
  2. 【集合论】二元关系 ( A 上二元关系 | A 上二元关系示例 )
  3. EntityFramework Core 3.0 Preview
  4. android 融云定义主题,融云开发者文档
  5. GCD之线程挂起与恢复
  6. 成为高级测试人:软件测试工程师职业素养
  7. Android中kt转java_将我现有的andorid工作室项目转换为kotlin?
  8. HDAO去中心化社区自治平台,助力明星项目启航
  9. python写酒店管理系统_基于WEB的小型酒店管理系统,源码下载
  10. 阿里云 python_阿里云python sdk
  11. 快手接口分析(二)——关注
  12. 【史上最全】如何建立模型
  13. Java Refactor 代码重构
  14. 新媒体短视频运营哪些内容
  15. 解决一个应用连接oracle端口1521不通问题
  16. 装了linux无法进入bios设置u盘启动,装了linux无法进入bios设置密码
  17. 荣耀magic3会用鸿蒙,荣耀magic3怎么样-荣耀magic3配置分析
  18. php connection reset,connection reset by peer问题总结及解决方案
  19. 第七章 7.8抽象类与接口
  20. java-php-python-ssm校园闲置物品交易系统计算机毕业设计

热门文章

  1. JavaScript沙箱
  2. 串口 PLC 编程FAQ
  3. 百家号搬运电视剧技巧,视频搬运去重技巧
  4. 快手主页服务跳转微信技术教程
  5. 入手了一个超大的回车键听说是程序员发泄神器的东东
  6. Python中的字典到底是有序的吗
  7. Media Encoder CC 2019 Macv13.0.2无需激活直装版
  8. 记录8 板块月线反转
  9. win10系统arp绑定
  10. ROS安装、双系统Ubuntu安装以及ROS的基本使用