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
続きを読む

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
続きを読む

アプリ全体から参照可能なインスタンス(Application)

投稿日:  更新日:

Applicationクラスのインスタンスは、アプリが起動する際に作成されて、アプリが起動している限り存在し続けます。

しかも、全てのアプリケーションコンポーネントから参照可能なインスタンスです。

ですので、アプリ全体に関連する共有データを管理する場合に便利です。

例えば、「アプリの環境設定データ」などが考えられます。

今回は、このApplicationクラスの使い方を、まとめます。

※環境:Android Studio Iguana | 2023.2.1 Patch 2
    Kotlin 1.9.0
    Compose Compiler 1.5.1
続きを読む

Compose Animation:AnimationSpecでアニメの形状を指定(snap編)

投稿日:  更新日:

アニメーションの動きに特殊な効果を加えることができます。

特殊な効果とは、動きが加速したり、減速したり、弾んだり、または向きを変えたり、などです。

上記のような特殊な効果は、動きの軌道がそれぞれ異なる形になるため、ここでは「アニメーションの形状」と表現しています。

AnimationSpecはアニメーションの形状を定義するインターフェースです。そして、Jetpack Composeは実装済みの形状を4つ提供しています。

この中から、「snap」と取りあげて、まとめます。

※環境:Android Studio Iguana | 2023.2.1 Patch 1
    Kotlin 1.9.0
    Compose Compiler 1.5.1
    androidx.compose.animation:* 1.5.0
続きを読む