Android实现夜间模式切换功能

项目简介


许多APP现在已经有夜间模式(也有的叫做护眼模式),它可以一键将应用从浅背景色、深前景色切换到深背景色、浅前景色的模式,不仅夜间护眼,还有省电的功效。但以往这些只是APP自己开发的功能,而从 Android Q 开始,夜间模式成为一个全局设置,用户只需下滑呼出快捷设置菜单,开启夜间模式,整个 Android 操作系统界面和支持夜间模式的APP都会自动变成统一的深色风格。对于开发者来说,只需要为应用添加夜间主题就可以自动适应全局夜间模式。

在这里插入图片描述

在这里插入图片描述

首先,在build.gradle中添加依赖


compile ‘com.android.support:appcompat-v7:25.1.0’

调试后进行下一步

在values的styles继承并应用DayNight主题


在res目录下新建values-night文件夹,在此目录下新建colors.xml和strings.xml文件


values-night文件中的代码是在values文件的基础上修改的,在下方进行对比

values中的colors.xml

<?xml version="1.0" encoding="utf-8"?>

#009688

#00796B

#009688

#616161

@android:color/white

@android:color/holo_orange_dark

values-night中的colors.xml

<?xml version="1.0" encoding="utf-8"?>

#35464e

#212a2f

#212a2f

#616161

#212a2f

@android:color/holo_blue_dark

values中的strings.xml

DayNight

日间模式

values-night中的strings.xml

DayNight

夜间模式

在MainActivity.java中添加点击、功能动作


public class MainActivity extends AppCompatActivity {

private Button mDayNightChange;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mDayNightChange = (Button) findViewById(R.id.day_night_change);

mDayNightChange.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;

if (mode == Configuration.UI_MODE_NIGHT_YES) {

getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO);

} else if (mode == Configuration.UI_MODE_NIGHT_NO) {

getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES);

}

recreate();

}

});

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值