カスタムスタイル
2921 ワード
概要
Notificationの----デフォルトスタイルではandroidの各バージョンで提供されるデフォルトスタイルについて説明し、androidの各バージョンでスタイルをカスタマイズする方法について説明します.
API Level < 16(JB)
この範囲のバージョンでは、高さ64 dpのカスタムviewのみがサポートされています.あなたのlayoutがどんなに高く書いても、最後には64 dpしか表示されません.
API Level >= 16(JB) && API Level < 24(N)
このバージョンでは、デフォルト状態64 dpの高さと拡張状態256 dpの高さの2つの高さのカスタムviewがサポートされています.同じ通知に通常の表示と拡張後の表示を設定できます.
拡張:ドロップダウン通知が展開された状態を指します.romによって展開方法が異なる場合があります.
notificationのbigContentView変数を使用して、拡張された表示内容を設定します.
API Level >= 24(N)
Nでは、拡張後のコンテンツをnotificationのbigContentView変数で任意に設定ことができるが、この属性は
これでbigContentViewを設定できます.Notificationの----デフォルトスタイルから分かるように、バージョンNでは、システムのデフォルトの通知欄のスタイルと高さ(高くなる)が変更されており、具体的な高さは不明ですが、以前のデフォルトの高さより大きいはずです(>64 dp).そこでdemoを書いたところ、bigcontentviewが設定されているとbigcontentviewしか表示されず、Nで新しく変更されたのかどうかはわかりませんが、筆者は後で検討して結果を出しますので、読者が答えを知っていたら教えてください~
最後に
github demoダウンロード
関連読書
Notificationの----endroid 5.0実現原理(二)Notificationの----Android 5.0実現原理(一)Notificationの---NotificationListenerServices 5.0実現原理Notificationの----デフォルトスタイルNotificationの----タスクスタック
Notificationの----デフォルトスタイルではandroidの各バージョンで提供されるデフォルトスタイルについて説明し、androidの各バージョンでスタイルをカスタマイズする方法について説明します.
API Level < 16(JB)
この範囲のバージョンでは、高さ64 dpのカスタムviewのみがサポートされています.あなたのlayoutがどんなに高く書いても、最後には64 dpしか表示されません.
RemoteViews remoteViews = new RemoteViews(mContext.getPackageName(), R.layout.custom_notification);
remoteViews.setImageViewBitmap(
R.id.notification_large_icon,
BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_launcher));
remoteViews.setTextViewText(R.id.notification_content, "Content");
remoteViews.setTextViewText(R.id.notification_title, "title");
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
remoteViews.setTextViewText(R.id.notification_time, format.format(new Date()));
builder.setContent(remoteViews);
API Level >= 16(JB) && API Level < 24(N)
このバージョンでは、デフォルト状態64 dpの高さと拡張状態256 dpの高さの2つの高さのカスタムviewがサポートされています.同じ通知に通常の表示と拡張後の表示を設定できます.
拡張:ドロップダウン通知が展開された状態を指します.romによって展開方法が異なる場合があります.
RemoteViews remoteViews = new RemoteViews(mContext.getPackageName(), R.layout.custom_notification);
remoteViews.setImageViewBitmap(
R.id.notification_large_icon,
BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.ic_launcher));
remoteViews.setTextViewText(R.id.notification_content, "Content");
remoteViews.setTextViewText(R.id.notification_title, "title");
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
remoteViews.setTextViewText(R.id.notification_time, format.format(new Date()));
builder.setContent(remoteViews);
RemoteViews remoteViewBig = new RemoteViews(mContext.getPackageName(), R.layout.custom_notification_big);
notification = builder.build();
notification.bigContentView = remoteViewBig;
notificationのbigContentView変数を使用して、拡張された表示内容を設定します.
API Level >= 24(N)
Nでは、拡張後のコンテンツをnotificationのbigContentView変数で任意に設定ことができるが、この属性は
@Deprecated
、notificationとしてマークする.bigContentView = remoteViewBig. bigContentViewを設定するには、他の推奨方法を使用します.v 4パッケージ、version 24バージョンのNotificationCompat.BuilderにはsetCustomBigContentView
のメソッドが追加されましたRemoteViews remoteViewBig = new RemoteViews(mContext.getPackageName(), R.layout.custom_notification_big);
builder.setCustomBigContentView(remoteViewBig);
これでbigContentViewを設定できます.Notificationの----デフォルトスタイルから分かるように、バージョンNでは、システムのデフォルトの通知欄のスタイルと高さ(高くなる)が変更されており、具体的な高さは不明ですが、以前のデフォルトの高さより大きいはずです(>64 dp).そこでdemoを書いたところ、bigcontentviewが設定されているとbigcontentviewしか表示されず、Nで新しく変更されたのかどうかはわかりませんが、筆者は後で検討して結果を出しますので、読者が答えを知っていたら教えてください~
最後に
github demoダウンロード
関連読書
Notificationの----endroid 5.0実現原理(二)Notificationの----Android 5.0実現原理(一)Notificationの---NotificationListenerServices 5.0実現原理Notificationの----デフォルトスタイルNotificationの----タスクスタック