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