From 37cb8d75303a8f795ce66670761ca2263327563d Mon Sep 17 00:00:00 2001 From: Robert Ly Date: Thu, 8 May 2014 15:02:11 -0700 Subject: [PATCH] docs: fix some notification code for wear stacks Change-Id: Iea6b444480b161ab08a9ba02dbabb22773862cf0 --- .../guide/topics/resources/string-resource.jd | 107 +++++++++++++++++- .../html/wear/images/notif_summary_framed.png | Bin 0 -> 39277 bytes docs/html/wear/notifications/stacks.jd | 88 +++++++++++--- 3 files changed, 177 insertions(+), 18 deletions(-) create mode 100644 docs/html/wear/images/notif_summary_framed.png diff --git a/docs/html/guide/topics/resources/string-resource.jd b/docs/html/guide/topics/resources/string-resource.jd index 5a96ba172b4b0..e2326eca432b9 100644 --- a/docs/html/guide/topics/resources/string-resource.jd +++ b/docs/html/guide/topics/resources/string-resource.jd @@ -20,9 +20,6 @@ your application with strings:

information about styling and formatting strings, see the section about Formatting and Styling.

- - -

String

A single string that can be referenced from the application or from other resource files (such @@ -433,7 +430,7 @@ java.lang.Object...)">format(res.getString(R.string.welcome_messages), usern -

Styling with HTML markup

+

Styling with HTML markup

You can add styling to your strings with HTML markup. For example:

@@ -497,5 +494,107 @@ java.lang.Object...)">format(res.getString(R.string.welcome_messages), escap
 CharSequence styledText = Html.fromHtml(text);
 
+

Styling with Spannables

+

+A {@link android.text.Spannable} is a text object that you can style with +typeface properties such as color and font weight. You use +{@link android.text.SpannableStringBuilder} to build +your text and then apply styles defined in the {@link android.text.style} +package to the text. +

+

You can use the following helper methods to set up much of the work +of creating spannable text:

+
+/**
+ * Returns a CharSequence that concatenates the specified array of CharSequence
+ * objects and then applies a list of zero or more tags to the entire range.
+ *
+ * @param content an array of character sequences to apply a style to
+ * @param tags the styled span objects to apply to the content
+ *        such as android.text.style.StyleSpan
+ *
+ */
+private static CharSequence apply(CharSequence[] content, Object... tags) {
+    SpannableStringBuilder text = new SpannableStringBuilder();
+    openTags(text, tags);
+    for (CharSequence item : content) {
+        text.append(item);
+    }
+    closeTags(text, tags);
+    return text;
+}
+
+/**
+ * Iterates over an array of tags and applies them to the beginning of the specified
+ * Spannable object so that future text appended to the text will have the styling
+ * applied to it. Do not call this method directly.
+ */
+private static void openTags(Spannable text, Object[] tags) {
+    for (Object tag : tags) {
+        text.setSpan(tag, 0, 0, Spannable.SPAN_MARK_MARK);
+    }
+}
+
+/**
+ * "Closes" the specified tags on a Spannable by updating the spans to be
+ * endpoint-exclusive so that future text appended to the end will not take
+ * on the same styling. Do not call this method directly.
+ */
+private static void closeTags(Spannable text, Object[] tags) {
+    int len = text.length();
+    for (Object tag : tags) {
+        if (len > 0) {
+            text.setSpan(tag, 0, len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+        } else {
+            text.removeSpan(tag);
+        }
+    }
+}
+
+ +

+The following bold, italic, and color +methods show you how to call the helper methods to apply +styles defined in the {@link android.text.style} package. You +can create similar methods to do other types of text styling. +

+ +
+/**
+ * Returns a CharSequence that applies boldface to the concatenation
+ * of the specified CharSequence objects.
+ */
+public static CharSequence bold(CharSequence... content) {
+    return apply(content, new StyleSpan(Typeface.BOLD));
+}
+
+/**
+ * Returns a CharSequence that applies italics to the concatenation
+ * of the specified CharSequence objects.
+ */
+public static CharSequence italic(CharSequence... content) {
+    return apply(content, new StyleSpan(Typeface.ITALIC));
+}
+
+/**
+ * Returns a CharSequence that applies a foreground color to the
+ * concatenation of the specified CharSequence objects.
+ */
+public static CharSequence color(int color, CharSequence... content) {
+    return apply(content, new ForegroundColorSpan(color));
+}
+
+ +

+Here's an example of how to chain these methods to create a character sequence +with different types of styling applied to individual words: +

+ +
+// Create an italic "hello, " a red "world",
+// and bold the entire sequence.
+CharSequence text = bold(italic(res.getString(R.string.hello)),
+    color(Color.RED, res.getString(R.string.world)));
+
\ No newline at end of file diff --git a/docs/html/wear/images/notif_summary_framed.png b/docs/html/wear/images/notif_summary_framed.png new file mode 100644 index 0000000000000000000000000000000000000000..17b17039f7c4de3d427bd98e6f953290eaecafb9 GIT binary patch literal 39277 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 - + +

When creating notifications for a handheld device, you should always aggregate similar notifications into a single summary notification. For example, if your app creates notifications @@ -29,20 +29,44 @@ Wear.

To create a stack, call -setGroup() for each notification you want in the stack, passing the same -group key. For example:

+setGroup() for each notification you want in the stack and specify a +group key. Then call notify() to send it to the wearable.

 final static String GROUP_KEY_EMAILS = "group_key_emails";
 
+// Build the notification and pass this builder to WearableNotifications.Builder
 NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext)
-         .setContentTitle("New mail from " + sender)
-         .setContentText(subject)
+         .setContentTitle("New mail from " + sender1)
+         .setContentText(subject1)
          .setSmallIcon(R.drawable.new_mail);
 
-Notification notif = new WearableNotifications.Builder(builder)
+Notification notif1 = new WearableNotifications.Builder(builder)
          .setGroup(GROUP_KEY_EMAILS)
          .build();
+
+// Issue the notification
+NotificationManagerCompat notificationManager =
+        NotificationManagerCompat.from(this);
+notificationManager.notify(notificationId1, notif);
+
+ +

Later on, when you create another notification, specify +the same group key. When you call notify(), this notification appears +in the same stack as the previous notification, instead of as a new card:

+ +
+builder = new NotificationCompat.Builder(mContext)
+         .setContentTitle("New mail from " + sender2)
+         .setContentText(subject2)
+         .setSmallIcon(R.drawable.new_mail);
+
+// Use the same group as the previous notification
+Notification notif2 = new WearableNotifications.Builder(builder)
+         .setGroup(GROUP_KEY_EMAILS)
+         .build();
+
+notificationManager.notify(notificationId2, notif);
 

By default, notifications appear in the order in which you added them, with the most recent @@ -54,19 +78,55 @@ href="{@docRoot}reference/android/preview/support/wearable/notifications/Wearabl

Add a Summary Notification

+ +

It's important that you still provide a summary notification that appears on handheld devices. So in addition to adding each unique notification to the same stack group, also add a summary notification, but set its order position to be GROUP_ORDER_SUMMARY.

-
-Notification summaryNotification = new WearableNotifications.Builder(builder)
-         .setGroup(GROUP_KEY_EMAILS, WearableNotifications.GROUP_ORDER_SUMMARY)
-         .build();
+

This notification does not appear in your stack of notifications on the wearable, but +appears as the only notification on the handheld device.

+ +
+Bitmap largeIcon = BitmapFactory.decodeResource(getResources(),
+        R.drawable.ic_large_icon);
+
+builder = new NotificationCompat.Builder(this)
+        .setSmallIcon(R.drawable.ic_small_icon)
+        .setLargeIcon(largeIcon);
+
+// Use the same group key and pass this builder to InboxStyle notification
+WearableNotifications.Builder wearableBuilder = new WearableNotifications
+        .Builder(builder)
+        .setGroup(GROUP_KEY_EMAILS,
+                WearableNotifications.GROUP_ORDER_SUMMARY);
+
+// Build the final notification to show on the handset
+Notification summaryNotification = new NotificationCompat.InboxStyle(
+        wearableBuilder.getCompatBuilder())
+        .addLine("Alex Faaborg   Check this out")
+        .addLine("Jeff Chang   Launch Party")
+        .setBigContentTitle("2 new messages")
+        .setSummaryText("johndoe@gmail.com")
+        .build();
+
+notificationManager.notify(notificationId3, summaryNotification);
 
-

This notification will not appear in your stack of notifications on the wearable, but -appears as the only notification on the handheld device. +

+This notification uses {@link android.support.v4.app.NotificationCompat.InboxStyle}, +which gives you an easy way to create notifications for email or messaging apps. +You can use this style, another one defined in {@link android.support.v4.app.NotificationCompat}, +or no style for the summary notification. +

+

Tip: +To style the text like in the example screenshot, see +Styling +with HTML markup and +Styling +with Spannables. +

- + \ No newline at end of file