Android dQ(10)ダークモードを適切に実現
4637 ワード
前書き:Androidプログラマーとして、毎年楽しみにしているのはGoogleの発表会です。これは、今年のAndroid dQが予定通り来ました。ここではAndroidの新しい特性を簡単に紹介します。 Android dQグローバル暗黒モード プライバシー権限の更新 Android dQ新版のジェスチャー・ナビゲーション(実は、IOSのまね) システムスケジュールUIの最適化(他のシステムUIの最適化もある) Googleモジュールのおすすめ 毎年のGoogle大会が終わると、プログラマーの忙しい仕事の始まりです。各種の適性、各種の新機能があります。しかし、今年の発表会の後、Qの更新リストをよく見ると、実は私達が最適化に行くのは多くないです。また、ダークモードは従来のマルチプルテーマとマッチするのが道理です。そうすると、私達のフォローアップ最適化作業はもっと簡単になります。余計なことを言わないでください。ここでは元のシステムの下でブラックモードを行うのに適したマッチングを紹介します。
Android dQダークモードが似合う:
適合原理紹介:ダークモードとノーマルモードは、両テーマ間の切り替え(主に各種背景色、フォント色、Icon)にほかならない。したがって、私たちは二つのテーマを定義するだけで、暗いモードかどうかによってテーマを切り替えることができます。
詳細なステップ:
現在は暗いモードであるかどうかを判断します。起動時にはまだ別のテーマで使用します。
前のステップのスタイルで参照するために、異なるモードで異なる値を提供します。
まとめ:ここまでです。二つのモードでの切り替えが完了しても、システムの暗いモードをオンにしてみてもいいです。私たちのいくつかの面が暗いモードのテーマに変わります。もっと違うテーマがあれば、私達の仕事は簡単です。スタイルファイルの下にテーマを追加し、テーマの下の色の値を加えるだけでいいです。
ここでは、Android dQ(10)ダークモードの実現に関する記事を紹介します。Android dQ(10)ダークモードの内容については、以前の記事を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。
Android dQダークモードが似合う:
適合原理紹介:ダークモードとノーマルモードは、両テーマ間の切り替え(主に各種背景色、フォント色、Icon)にほかならない。したがって、私たちは二つのテーマを定義するだけで、暗いモードかどうかによってテーマを切り替えることができます。
詳細なステップ:
現在は暗いモードであるかどうかを判断します。起動時にはまだ別のテーマで使用します。
//
public static boolean getDarkModeStatus(Context context) {
int mode = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
return mode == Configuration.UI_MODE_NIGHT_YES;
}
2つのテーマ(ノーマルモードとブラックモード)を定義します。すなわちstyleファイルの下で2つのスタイルをカスタマイズしますが、parentを‘The me.AppComppat.DayNight.DarkActiver’として指定しなければなりません。
//
<style name="main_theme_light" parent="Theme.AppCompat.DayNight.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="main_text_color">@color/main_text_color_light</item>
<item name="main_bg_color">@color/main_bg_color_light</item>
</style>
//
<style name="main_theme_dark" parent="Theme.AppCompat.DayNight.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="main_text_color">@color/main_text_color_dark</item>
<item name="main_bg_color">@color/main_bg_color_dark</item>
</style>
ブラックモードに適応するために必要な属性(主に色属性:背景色、フォント色、Icon色などを探して属性に値を付けます。)は以下のように定義されています。前のステップのスタイルで参照するために、異なるモードで異なる値を提供します。
<!-- -->
<attr name="main_text_color" format="color" />
<!-- -->
<attr name="main_bg_color" format="color" />
//
<color name="main_text_color_light">#000000</color>
<color name="main_text_color_dark">#ffffff</color>
<color name="main_bg_color_light">#ffffff</color>
<color name="main_bg_color_dark">#000000</color>
activityとxmlに私達のカスタム属性を引用します。
// xml
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/main_bg_color">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textColor="?attr/main_text_color"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
// BaseActivity , , setContentView() :
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
if (getDarkModeStatus(this)) {
setTheme(R.style.main_theme_dark);
}else {
setTheme(R.style.main_theme_light);
}
setContentView(R.layout.activity_main)
}
// , xml activity :
android:configChanges="uiMode"
ps:Iconの適合は、tint属性を用いて異なるモードの色を切り替えることができる。まとめ:ここまでです。二つのモードでの切り替えが完了しても、システムの暗いモードをオンにしてみてもいいです。私たちのいくつかの面が暗いモードのテーマに変わります。もっと違うテーマがあれば、私達の仕事は簡単です。スタイルファイルの下にテーマを追加し、テーマの下の色の値を加えるだけでいいです。
ここでは、Android dQ(10)ダークモードの実現に関する記事を紹介します。Android dQ(10)ダークモードの内容については、以前の記事を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。