アプリのNight Modeの切り替え(方法:UiModeManager、API≧31)

投稿日:  更新日:

アプリを対象としたNight Modeの切り替えは、AppCompatDelegateとUiModeManagerで行う方法がります。

ここでは、UiModeManagerを使った方法を説明します。

※Night Modeの切り替えの全体像は「Dark ThemeとNight Modeの関係」を参照

※環境:Android Studio Jellyfish | 2023.3.1
    Kotlin 1.9.0
    Compose Compiler 1.5.1
    androidx.compose.foundation:foundation 1.5.0
続きを読む

システムのNight Modeの切り替え(方法:UiModeManager、API<29)

投稿日:  更新日:

システムを対象としたNight Modeの切り替えは、SettingsアプリとUiModeManagerで行う方法がります。

ここでは、UiModeManagerを使った方法を説明します。

※Night Modeの切り替えの全体像は「Dark ThemeとNight Modeの関係」を参照

※環境:Android Studio Jellyfish | 2023.3.1
    Kotlin 1.9.0
    Compose Compiler 1.5.1
    androidx.compose.foundation:foundation 1.5.0
続きを読む

システムのNight Modeの切り替え(方法:Settingsアプリ、API≧29)

投稿日:  更新日:

システムを対象としたNight Modeの切り替えは、SettingsアプリとUiModeManagerで行う方法がります。

ここでは、Settingsアプリを使った方法を説明します。

※Night Modeの切り替えの全体像は「Dark ThemeとNight Modeの関係」を参照

※環境:Android Studio Jellyfish | 2023.3.1
    Kotlin 1.9.0
    Compose Compiler 1.5.1
    androidx.compose.foundation:foundation 1.5.0
    Emulator 35.1.4-11672324
続きを読む

Dark ThemeとNight Modeの関係

投稿日:  更新日:

Android端末は自身の置かれている状況を認識して、ユーザーが使い易いように動作を変える仕組みを持ちます。

uiModeのNight(UI_MODE_NIGHT_YES:夜である)とDay(UI_MODE_NIGHT_NO:昼である) は、その「置かれている状況」の一つです。

NightとDayは古くから定義されているモードです。

API29で追加された機能の「Dark Theme」と結びついて、Night Modeの時はDark Themeにする使い方が定番になってしまいました。

その影響でしょうか…

Settingsアプリを見ると、Night Modeの影が薄れて、「Drak Themeにする・しない」が主題に作られています。

しかし、裏にNight Modeが存在していることを忘れてはいけません。

※環境:Android Studio Jellyfish | 2023.3.1
    Kotlin 1.9.0
    Compose Compiler 1.5.1
    androidx.compose.foundation:foundation 1.5.0
続きを読む

Android端末の時刻を変更するJUnitテストルール(Api23~34対応)

投稿日:  更新日:

スケジュール管理やアラーム機能を提供するアプリのテストで、端末の時刻を自由に変更できたら便利です。

ですので、端末の時刻を変更するテストルールを作成してみました。

この記事は、以前に投稿した「Android端末の時刻を変更するJUnitテストルール」を改訂したものです。

API23~34で動作するように、テストルールの記述を改良しています。

※環境:Android Studio Jellyfish | 2023.3.1
    Kotlin 1.9.0
    Compose Compiler 1.5.1
    androidx.test.uiautomator:uiautomator 2.3.0
    androidx.test.ext:junit 1.1.5
    androidx.test:rules 1.5.0
    junit:junit 4.13.2
続きを読む