5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Androidでダークモード対応のアプリを作ってみる

Posted at
1 / 13

はじめに

  • このスライドは最近流行っている?ダークテーマに
    ついてまとめてみたので情報整理として記録したものです。
  • 参考ソース:ダークテーマ|Android Developers

ダークテーマとは

  • Android Qから登場した黒を基調としたUI
  • iOSでも13から対応
  • アプリ以外ではすでに取り入れられているサービスもある
    • Android StudioとかmacOS、Windowsとか

ダークモードのメリット(個人的に)

  • 目に優しい
    • ディスプレイの明るさと画面の白さを組み合わせたらあかん
  • コーディングの際文字が見やすい
    • 黒板に文字を書いているイメージ
  • バッテリーの消費量を抑えれる(条件あり)

Androidの場合

  • 通常モードとダークテーマでは以下のように変わる

Androidの場合

  • 通常モードとダークテーマでは以下のように変わる
    • 色設定をしていない部分が切り替わる?

設定方法(開発側)

<!-- 通常のダークテーマ-->
<style name="AppTheme" parent="Theme.AppCompat.DayNight">

<!-- MaterialComponentsのダークテーマ-->
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
  • Android Manifestに上記を記述
    • アプリのテーマとして設定をする
  • 最低SDKバージョン(minSDK)についての記載は確認できず
    • 筆者は17で動作確認しましたが特にエラーはなかったです

設定方法(ユーザ側)

  • Android Qを載せた端末で設定 -> ディスプレイ -> ダークテーマをON

未対応OSとの混合について

  • OSがダークテーマ未対応の場合、
    通常のレイアウトとして表示される。
    • 現段階では影響なしと筆者は判断

使用する際の注意点

  • アプリ起動時にダークテーマの切り替えを行うと
    アクティビティが再生成される
    • ライフサイクルには注意
  • 切り替え時のタイミングで処理をしたい時は別途設定が必要

切り替わりのタイミングをハンドリングする

<activity android:name=".MainActivity"
    android:configChanges="uiMode">
  • AndroidManifestでハンドリングを行いたいActivityで上記を記述

切り替わりのタイミングをハンドリングする

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)

    // ダークテーマがOS側で設定されているか調べる
    val isDarkTheme = newConfig.uiMode and Configuration.UI_MODE_NIGHT_MASK
    when (isDarkTheme) {
        Configuration.UI_MODE_NIGHT_NO -> Log.d("msg", "通常モード")
        Configuration.UI_MODE_NIGHT_YES -> Log.d("msg", "ダークテーマ")
    }
}
  • onConfigurationChangedメソッドを宣言し、適宜処理を行う。

まとめ

  • いくつかの項目さえ気を付ければ、ダークテーマの導入は簡単
    • ライフサイクル、色の相性など
  • ただQ自身がまだシェアは低そうなので急いで対応する必要はなさそう
  • 黒いテーマがもっと普及するといいね!
5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?