Android夜间模式
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夜间模式相关推荐
- Android夜间模式实践
前言 由于项目需要,近段时间开发的夜间模式功能.主流的方案如下: 1.通过切换theme实现 2.通过resource id映射实现 3.通过Android Support Library的实现 方案 ...
- android自动夜间模式吗,Android夜间模式的实现方案
原标题:Android夜间模式的实现方案 作者简介 本篇来自 Sunlight1024的投稿,详细地讲解了关于Android应用的夜间模式的实现,希望大家喜欢! Sunlight1024的博客地址: ...
- android自动夜间模式,夜晚的故事(android夜间模式实现)
夜幕降临,他走在马路上,回想着今天发生的一切,他不敢相信事情就这样发生了.他最终还是决定拨打那个电话,掏出手机,解锁屏幕,突然一道强光从屏幕里毫无预兆的发射出来.他一个踉跄倒在了马路中央.而他身后伴随 ...
- Android夜间模式最佳实践
转自:Android夜间模式最佳实践 由于Android的设置中并没有夜间模式的选项,对于喜欢睡前玩手机的用户,只能简单的调节手机屏幕亮度来改善体验.目前越来越多的应用开始把夜间模式加到自家应用中,没 ...
- android 夜间模式 框架,Android 夜间模式的三种实现
实现夜间模式有很多种方式,经过多次尝试,算是找到了一种性价比较高的方式. 主题方式 这是最正统的方式,但工作量巨大,因为要全局替换 xml 布局中所有硬编码的色值,将其换成主题色.然后通过换主题达到换 ...
- android os夜间,Android夜间模式实现
查看我的全部开源项目[开源实验室] 欢迎加入我的QQ群:[201055521],本博客客户端下载[请点击] 本文原创,转载请注明地址:http://blog.kymjs.com/ 最近在做一个Andr ...
- android 夜间模式设置
夜晚的故事(android夜间模式实现) 字数2003 阅读1393 评论11 喜欢18 夜幕降临,他走在马路上,回想着今天发生的一切,他不敢相信事情就这样发生了.他最终还是决定拨打那个电话,掏 ...
- Android夜间模式的几种实现
一.直接修改widget颜色,这种方式实现起来最简单,但需要每个控件都去修改,太过复杂.例如: /*** 相应交互,修改控件颜色* @param view*/public void onMethod1 ...
- android官方夜间模式,Android夜间模式实践
前言 由于项目需要,近段时间开发的夜间模式功能.主流的方案如下: 1.通过切换theme实现 2.通过resource id映射实现 3.通过Android Support Library的实现 方案 ...
- android夜间模式揭露动画,Android Material Design系列之夜间模式
今天我们讲讲夜间模式的实现,这篇文章的名字应该叫:<Android Material Design系列之夜间模式>.在Android 5.0 之后,实现夜间模式并非很难了,支持的5.0库提 ...
最新文章
- 这个椅子哪里卖?我也想买啊!
- 【集合论】二元关系 ( A 上二元关系 | A 上二元关系示例 )
- EntityFramework Core 3.0 Preview
- android 融云定义主题,融云开发者文档
- GCD之线程挂起与恢复
- 成为高级测试人:软件测试工程师职业素养
- Android中kt转java_将我现有的andorid工作室项目转换为kotlin?
- HDAO去中心化社区自治平台,助力明星项目启航
- python写酒店管理系统_基于WEB的小型酒店管理系统,源码下载
- 阿里云 python_阿里云python sdk
- 快手接口分析(二)——关注
- 【史上最全】如何建立模型
- Java Refactor 代码重构
- 新媒体短视频运营哪些内容
- 解决一个应用连接oracle端口1521不通问题
- 装了linux无法进入bios设置u盘启动,装了linux无法进入bios设置密码
- 荣耀magic3会用鸿蒙,荣耀magic3怎么样-荣耀magic3配置分析
- php connection reset,connection reset by peer问题总结及解决方案
- 第七章 7.8抽象类与接口
- java-php-python-ssm校园闲置物品交易系统计算机毕业设计