1. 適応する最も簡単な方法は、ForceDark を使用することです
この方法を使用できるのは、明るいテーマを使用するアプリのみです。アプリが暗いテーマを使用している場合、Force Dark は有効になりません。
android:forceDarkAllowed は Android 10 システムからのみ利用可能です。すべての res ディレクトリにvalues-v29 フォルダーを作成し、このフォルダー内にstyles.xmlファイルを作成し、前に適用されたstyles.xml内の属性をvalues-にコピーします。 v29/styles.xml の最後に追加します
<item name="android:forceDarkAllowed">true</item>
2. 件名を次のように指定します
親="Theme.AppCompat.DayNight.NoActionBar"
この種のテーマは、通常の状況では引き続きライト テーマを使用し、ダーク モードに切り替えるとダーク テーマを使用します。
このように使用すると、再度調整する必要がある色の詳細がまだたくさんあります
ダークモードの色に適応するためにres/の下にvalues-night/colors.xmlを作成します。
res の下にdrawable-nightを作成し、ダークモードを設定するための画像リソースなどを配置します。
3. モニターシステムのダークモード切り替え
AndroidManifest.xml の対応する <activity> に追加します。
android:configChanges="uiMode"
次に、アクティビティの onConfigurationChanged で、ダーク モードの切り替えを監視できます。
@Override public void onConfigurationChanged(@NonNull Configuration newConfig) {
}
/** * ダークモードかどうかを判断します * @param context * @return */ public static boolean isNightMode(Context context) { try { return (context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES; } catch (例外例) { } return false; }