Android アプリ通知のアイコンは"白と透過"で用意する
はじめに
今回はアプリの通知(Push通知)のスモールアイコンについて解説したいと思います。
このスモールアイコンですが、実は奥が深くバージョン差異が多いので、注意が必要です。
通知に関する概要のリンクを貼っておきます。 developer.android.com
スモールアイコンとは
スモールアイコンとは、以下の画像の①のことです。
通知に関する概要でも説明されていますが、 setSmallIcon()
で設定する画像ですね。
また、ステータスバーにも表示されているのも同じくスモールアイコンです。(色が変わってますね)
val builder = NotificationCompat.Builder(this, id).apply { setContentTitle(getString(R.string.notification_title)) setContentText(data.message) setSmallIcon(R.mipmap.ic_notification_small) ←コレ // 省略 }
この通知自体の表示もバージョンによって異なるので、通知バー自体のUIの違いについてはこちらを参考にどうぞ。
バージョンまたは条件ごとに表示が異なる
通知の色をコードで指定しなかった場合
バージョン | 表示 |
---|---|
7.0 | 端末に依存する。通知アイコンはグレー表示されたり、元のアイコンカラーになる。 |
8.0 | 通知アイコンは元のアイコン画像の色(オレンジ), 通知テキストはAndroid側により指定(グレー) |
9.0~ | 通知アイコン、通知テキストの色はAndroid側により指定されてしまう |
通知の色をコードで指定した場合
バージョン | 表示 |
---|---|
7.0~8.0 | 通知アイコン・テキストは指定した色になる。コントラスト的にふさわしくない場合は色が変更される。 |
9.0~ | 通知アイコンのみ指定した色になる。コントラスト的にふさわしくない場合は色が変更される。 |
スモールアイコンは"白と透過"で用意
バージョン差異だったり、端末依存だったり、とてもめんどくさいですよね。
なので、通知アイコンの画像は色は「白」と「透過」だけで用意するのが鉄則です。(というかそれが推奨されています)
こんな画像が理想
カラー:黒の部分が透過・白の部分が白のPNG画像
サイズ:128x128px
ImageAssetで作成
以下のすべてのサイズが必要になるのですが、ImageAsset機能を使えばすべてのサイズにわけてインポートしてくれます。
一番大きなサイズである128x128pxを用意しておきましょう。
mdpi 32x32
hdpi 48x48
xhdpi 64x64
xxhdpi 96x96
xxxhdpi 128x128
ImageAssetを起動
タブをNotification Iconsに切り替える
独自の画像を設定する場合はAssetTypeをImageにして設定する