【Android】Status barにTool barの色を基にした濃い色をセットする


この記事はand factory Advent Calendar 2018 Day 17の記事になります。
前日は@Yaruki00 の「XCTestでアニメーションの結果を待つ便利メソッド」でした。

はじめに

アプリを新しく作成するときに、styleにステータスバー、ツールバーの背景色を指定できます。これでページごとに色指定をする必要がなくなり便利です。

ただ、やっぱり例外はあるもので、ページ毎で使う色数の増減や、個性(世界観?)をもたせたい場合などのデザイン要求が発生した場合は柔軟な指定が必要になると思います。

こちらを実装したコードを書きます。

  • ステータスバーの色はツールバーの色を少し濃くした色にする

イメージ

ステータスバーの色はツールバーの色を濃いめにした感じです。

動作環境

Lolipop ~ Pie

コード

HogeActivity.kt
private void setupStatusBarColor() {
    if (Build.VERSION.SDK_INT >= 21) {
        int toolBarColor = R.color.morning_glory
        int statusBarColor = ColorUtils.compositeColors(ContextCompat.getColor(this, R.color.foreground_status_bar),
                ContextCompat.getColor(this,toolBarColor)); // ①
        getWindow().setStatusBarColor(statusBarColor);
    }
}


ステータスバーの色を生成しています。暗めの色(R.color.foreground_status_barはcolors.xmlで #20111111を指定)とツールバーの色の2つを指定しています。

このコードではツールバは薄い青、ステータスバーは濃いめの青をセットしています。

終わりに

簡単ですが以上です。良い感じに暗めの色を重ねる処理が実現できなかったのですがColorUtilsのメソッドを利用して実装しました。

参考