diff options
author | Daniel Sandler <dsandler@android.com> | 2012-04-18 05:28:00 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-04-18 05:28:00 -0700 |
commit | b9a6d4d052a7cc63b4753081f64628be3503681a (patch) | |
tree | f2ad9b5ab8c858785b11df84aff428b2d3925490 | |
parent | e1e874854ab8b73dc5f2346108cbfe90dabaea18 (diff) | |
parent | 879c5e07c019bbcd8647e60656d0749eae0467c3 (diff) | |
download | frameworks_base-b9a6d4d052a7cc63b4753081f64628be3503681a.zip frameworks_base-b9a6d4d052a7cc63b4753081f64628be3503681a.tar.gz frameworks_base-b9a6d4d052a7cc63b4753081f64628be3503681a.tar.bz2 |
Merge "New InboxStyle template for expanded notifications."
-rw-r--r-- | api/current.txt | 6 | ||||
-rw-r--r-- | core/java/android/app/Notification.java | 56 | ||||
-rw-r--r-- | core/res/res/layout/notification_template_inbox.xml | 177 | ||||
-rw-r--r-- | core/res/res/values/public.xml | 6 |
4 files changed, 245 insertions, 0 deletions
diff --git a/api/current.txt b/api/current.txt index 2a54f2b..8d12a56 100644 --- a/api/current.txt +++ b/api/current.txt @@ -3775,6 +3775,12 @@ package android.app { method public android.app.Notification.Builder setWhen(long); } + public static class Notification.InboxStyle { + ctor public Notification.InboxStyle(android.app.Notification.Builder); + method public android.app.Notification.InboxStyle addLine(java.lang.CharSequence); + method public android.app.Notification build(); + } + public class NotificationManager { method public void cancel(int); method public void cancel(java.lang.String, int); diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 5cce25f..dc796bf 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -1696,4 +1696,60 @@ public class Notification implements Parcelable return wip; } } + + /** + * Helper class for generating large-format notifications that include a list of (up to 5) strings. + * + * This class is a "rebuilder": It consumes a Builder object and modifies its behavior, like so: + * <pre class="prettyprint"> + * Notification noti = new Notification.DigestStyle( + * new Notification.Builder() + * .setContentTitle("New mail from " + sender.toString()) + * .setContentText(subject) + * .setSmallIcon(R.drawable.new_mail) + * .setLargeIcon(aBitmap)) + * .addLine(str1) + * .addLine(str2) + * .build(); + * </pre> + * + * @see Notification#bigContentView + */ + public static class InboxStyle { + private Builder mBuilder; + private ArrayList<CharSequence> mTexts = new ArrayList<CharSequence>(5); + + public InboxStyle(Builder builder) { + mBuilder = builder; + } + + public InboxStyle addLine(CharSequence cs) { + mTexts.add(cs); + return this; + } + + private RemoteViews makeBigContentView() { + RemoteViews contentView = mBuilder.applyStandardTemplateWithActions(R.layout.notification_template_inbox); + + int[] rowIds = {R.id.inbox_text0, R.id.inbox_text1, R.id.inbox_text2, R.id.inbox_text3, R.id.inbox_text4}; + + int i=0; + while (i < mTexts.size() && i < rowIds.length) { + CharSequence str = mTexts.get(i); + if (str != null && !str.equals("")) { + contentView.setViewVisibility(rowIds[i], View.VISIBLE); + contentView.setTextViewText(rowIds[i], str); + } + i++; + } + + return contentView; + } + + public Notification build() { + Notification wip = mBuilder.getNotification(); + wip.bigContentView = makeBigContentView(); + return wip; + } + } } diff --git a/core/res/res/layout/notification_template_inbox.xml b/core/res/res/layout/notification_template_inbox.xml new file mode 100644 index 0000000..82342d4 --- /dev/null +++ b/core/res/res/layout/notification_template_inbox.xml @@ -0,0 +1,177 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2012 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/status_bar_latest_event_content" + android:layout_width="match_parent" + android:layout_height="wrap_content" + > + <ImageView android:id="@+id/icon" + android:layout_width="@dimen/notification_large_icon_width" + android:layout_height="@dimen/notification_large_icon_height" + android:background="@android:drawable/notify_panel_notification_icon_bg_tile" + android:scaleType="center" + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="fill_vertical" + android:layout_marginLeft="@dimen/notification_large_icon_width" + android:minHeight="@dimen/notification_large_icon_height" + android:orientation="vertical" + android:paddingLeft="12dp" + android:paddingRight="12dp" + android:paddingTop="4dp" + android:paddingBottom="4dp" + android:gravity="center_vertical" + > + <LinearLayout + android:id="@+id/line1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + > + <TextView android:id="@+id/title" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Title" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="marquee" + android:fadingEdge="horizontal" + android:layout_weight="1" + /> + <ViewStub android:id="@+id/time" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_weight="0" + android:visibility="gone" + android:layout="@layout/notification_template_part_time" + /> + <ViewStub android:id="@+id/chronometer" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_weight="0" + android:visibility="gone" + android:layout="@layout/notification_template_part_chronometer" + /> + </LinearLayout> + <TextView android:id="@+id/text2" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Line2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="-2dp" + android:layout_marginBottom="-2dp" + android:singleLine="true" + android:fadingEdge="horizontal" + android:ellipsize="marquee" + android:visibility="gone" + /> + <TextView android:id="@+id/inbox_text0" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="end" + android:visibility="gone" + /> + <TextView android:id="@+id/inbox_text1" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="end" + android:visibility="gone" + /> + <TextView android:id="@+id/inbox_text2" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="end" + android:visibility="gone" + /> + <TextView android:id="@+id/inbox_text3" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="end" + android:visibility="gone" + /> + <TextView android:id="@+id/inbox_text4" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="end" + android:visibility="gone" + /> + <LinearLayout + android:id="@+id/line3" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + > + <TextView android:id="@+id/text" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:layout_gravity="center" + android:singleLine="true" + android:ellipsize="marquee" + android:fadingEdge="horizontal" + /> + <TextView android:id="@+id/info" + android:textAppearance="@style/TextAppearance.StatusBar.EventContent.Info" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_weight="0" + android:singleLine="true" + android:gravity="center" + android:paddingLeft="8dp" + /> + <ImageView android:id="@+id/right_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_weight="0" + android:scaleType="center" + android:paddingLeft="8dp" + android:visibility="gone" + android:drawableAlpha="180" + /> + </LinearLayout> + <ProgressBar + android:id="@android:id/progress" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone" + style="?android:attr/progressBarStyleHorizontal" + /> + <LinearLayout + android:id="@+id/actions" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone" + > + <!-- actions will be added here --> + </LinearLayout> + </LinearLayout> +</FrameLayout> diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 8ac94fb..6266726 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -205,6 +205,11 @@ <java-symbol type="id" name="big_picture" /> <java-symbol type="id" name="big_text" /> <java-symbol type="id" name="chronometer" /> + <java-symbol type="id" name="inbox_text0" /> + <java-symbol type="id" name="inbox_text1" /> + <java-symbol type="id" name="inbox_text2" /> + <java-symbol type="id" name="inbox_text3" /> + <java-symbol type="id" name="inbox_text4" /> <java-symbol type="attr" name="actionModeShareDrawable" /> <java-symbol type="attr" name="alertDialogCenterButtons" /> @@ -1085,6 +1090,7 @@ <java-symbol type="layout" name="notification_template_big_picture" /> <java-symbol type="layout" name="notification_template_part_time" /> <java-symbol type="layout" name="notification_template_part_chronometer" /> + <java-symbol type="layout" name="notification_template_inbox" /> <java-symbol type="anim" name="slide_in_child_bottom" /> <java-symbol type="anim" name="slide_in_right" /> |