📅  最后修改于: 2023-12-03 15:06:41.002000             🧑  作者: Mango
在 Android 10(API 级别 29)中,全局深色主题已经成为了一个正式特性。它可以让应用程序向用户自动提供适合当前系统主题的明暗伸缩栏等 UI 元素,以及应用主题。
本文将介绍如何使用 Java 以编程方式实现 Android 深色主题。
在你的应用程序的XML资源文件夹中的 styles.xml
文件定义主题:
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
</style>
<!-- 创建一个新的主题,作为深色模式的扩展 -->
<style name="AppTheme.Dark" parent="AppTheme">
<item name="android:windowBackground">@color/black</item>
<item name="android:textColor">@color/white</item>
...
</style>
</resources>
在 AndroidManifest.xml 中指定应用程序的主题:
<application
android:name=".ExampleApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
...
</application>
接下来在你的 Application 类中,设置你的应用程序的主题:
public class ExampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 检查是否在深色模式下运行
// 如果是,请将应用程序的主题切换为深色主题
if (isDarkModeEnabled()) {
setTheme(R.style.AppTheme_Dark);
}
}
// 判断当前系统是否在深色模式下运行
private boolean isDarkModeEnabled() {
int currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
return currentNightMode == Configuration.UI_MODE_NIGHT_YES;
}
}
现在你已经成功地为你的应用程序添加深色主题的支持了!