[Android] Android 4.1 で追加された Notification styles

| トラックバック(0) |

Android 4.1(Jelly Bean) から新しく 3 つのスタイルが使用できるようになりました。

  • BigTextStyle
  • BigPictureStyle
  • InboxStyle

また、通知領域に簡単にボタンを追加できるようにもなっています。

 

以下、それぞれの画面キャプチャとソースコードです。

画面キャプチャと、ソースコード中の文字列を比較しながら見ると、わかりやすいと思います^^

 

Notification.BigTextStyle

BigTextStyle は「テキスト(Summary Text)」と「小さいアイコン」を表示できます。

 

  • 画面キャプチャ

Notification.BigTextStyle.png

  •  ソースコード
// NotificationManager
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// Small and large icon
int smallIconId = R.drawable.ic_action_search;
Bitmap largeIconBitmap = BitmapFactory.decodeResource(
    getResources(), R.drawable.ic_launcher);
//-----------------------------------------------------------------------
// BigTextStyle
//-----------------------------------------------------------------------
Notification notificationBigTextStyle = new Notification.BigTextStyle(
    new Notification.Builder(this)
        .setContentTitle("ContentTitle")
        .setSmallIcon(smallIconId)
        .setLargeIcon(largeIconBitmap))
    .bigText("BigText")
//  .setBigContentTitle("BigContentTitle") // Notification.Builder#setContentTitle() を上書き
    .setSummaryText("SummaryText")
    .build();
nm.notify(0, notificationBigTextStyle);

 

Notification.BigPictureStyle

BigPictureStyle は「大きな画像(Big Picture)」を表示できます。

 

  • 画面キャプチャ

Notification.BigPictureStyle.png

  •  ソースコード
//-----------------------------------------------------------------------
// BigPictureStyle
//-----------------------------------------------------------------------
Notification notificationBigPictureStyle = new Notification.BigPictureStyle(
    new Notification.Builder(this)
        .setContentTitle("ContentTitle")
        .setSmallIcon(smallIconId)
        .setLargeIcon(largeIconBitmap))
//  .bigLargeIcon(largeIconBitmap) // Notification.Builder#setLargeIcon() を上書き
    .bigPicture(largeIconBitmap)
//  .setBigContentTitle("BigContentTitle") // Notification.Builder#setContentTitle() を上書き
    .setSummaryText("SummaryText")
    .build();
nm.notify(1, notificationBigPictureStyle);

 

Notification.InboxStyle

InboxStyle は、複数行の「テキスト(Line)」、「テキスト(Summary Text)」と「小さいアイコン」を表示できます。

※8 行目以降は、"..."表示されます

 

  • 画面キャプチャ

Notification.InboxStyle.png

  •  ソースコード
//-----------------------------------------------------------------------
// InboxStyle
//-----------------------------------------------------------------------
Notification notificationInboxStyle = new Notification.InboxStyle(
    new Notification.Builder(this)
        .setContentTitle("ContentTitle")
        .setSmallIcon(smallIconId)
        .setLargeIcon(largeIconBitmap))
    .addLine("addLine(1)")
    .addLine("addLine(2)")
    .addLine("addLine(3)")
    .addLine("addLine(4)")
    .addLine("addLine(5)")
    .addLine("addLine(6)")
    .addLine("addLine(7)")
    .addLine("addLine(8)") // 8行目以降は"..."で表示される
//  .setBigContentTitle("BigContentTitle") // Notification.Builder#setContentTitle()  を上書き
    .setSummaryText("SummaryText")
    .build();
nm.notify(2, notificationInboxStyle);

 

ボタンを追加する

Notification 作成時、Notification.Builder#addAction() を呼び出すと、ボタンを追加することができます。

※最大3つまで追加できます

※ボタン押下時のアクションは、PendingIntent で指定します

 

  • 画面キャプチャ

NotificationWithButtons.png

 

  • ソースコード
// PendingIntent
PendingIntent pendingIntent = PendingIntent.getActivity(this,
    0, new Intent(this, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
//-----------------------------------------------------------------------
// BigTextStyle + Button
//-----------------------------------------------------------------------
Notification notificationBigTextStyle = new Notification.BigTextStyle(
    new Notification.Builder(this)
        .setContentTitle("ContentTitle")
        .setSmallIcon(smallIconId)
        .setLargeIcon(largeIconBitmap)
        .addAction(android.R.drawable.ic_input_add, "Add", pendingIntent)
        .addAction(android.R.drawable.ic_input_delete, "Delete", pendingIntent))
    .bigText("BigText")
//  .setBigContentTitle("BigContentTitle") // Notification.Builder#setContentTitle() を上書き
    .setSummaryText("SummaryText")
    .build();
nm.notify(4, notificationBigTextStyle);

トラックバック(0)

トラックバックURL: http://mt.adakoda.com/mt-tb.cgi/582

2016年8月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31