create a synthetic 2U heads up notification

combine the 1U with the action buttons to make a mid-sized notification
bounded to 128dp by the system ui
used for the heads up

Bug: 13208692
Change-Id: I382bb0bd1ce73f35295f05ca2606195986cff1d3
This commit is contained in:
Chris Wren
2014-02-27 17:43:26 -05:00
parent 22ae46efdd
commit 8fd39ec46b
3 changed files with 59 additions and 2 deletions

View File

@ -79,6 +79,9 @@
<!-- Height of a large notification in the status bar -->
<dimen name="notification_max_height">256dp</dimen>
<!-- Height of a medium notification in the status bar -->
<dimen name="notification_mid_height">128dp</dimen>
<!-- Height of a small notification in the status bar plus glow, padding, etc -->
<dimen name="notification_row_min_height">70dp</dimen>

View File

@ -685,6 +685,13 @@ public abstract class BaseStatusBar extends SystemUI implements
StatusBarNotification sbn = entry.notification;
RemoteViews contentView = sbn.getNotification().contentView;
RemoteViews bigContentView = sbn.getNotification().bigContentView;
if (isHeadsUp) {
maxHeight =
mContext.getResources().getDimensionPixelSize(R.dimen.notification_mid_height);
bigContentView = sbn.getNotification().headsUpContentView;
}
if (contentView == null) {
return false;
}
@ -1040,6 +1047,8 @@ public abstract class BaseStatusBar extends SystemUI implements
final RemoteViews contentView = notification.getNotification().contentView;
final RemoteViews oldBigContentView = oldNotification.getNotification().bigContentView;
final RemoteViews bigContentView = notification.getNotification().bigContentView;
final RemoteViews oldHeadsUpContentView = oldNotification.getNotification().headsUpContentView;
final RemoteViews headsUpContentView = notification.getNotification().headsUpContentView;
final Notification oldPublicNotification = oldNotification.getNotification().publicVersion;
final RemoteViews oldPublicContentView = oldPublicNotification != null
? oldPublicNotification.contentView : null;
@ -1079,6 +1088,13 @@ public abstract class BaseStatusBar extends SystemUI implements
&& oldBigContentView.getPackage() != null
&& oldBigContentView.getPackage().equals(bigContentView.getPackage())
&& oldBigContentView.getLayoutId() == bigContentView.getLayoutId());
boolean headsUpContentsUnchanged =
(oldHeadsUpContentView == null && headsUpContentView == null)
|| ((oldHeadsUpContentView != null && headsUpContentView != null)
&& headsUpContentView.getPackage() != null
&& oldHeadsUpContentView.getPackage() != null
&& oldHeadsUpContentView.getPackage().equals(headsUpContentView.getPackage())
&& oldHeadsUpContentView.getLayoutId() == headsUpContentView.getLayoutId());
boolean publicUnchanged =
(oldPublicContentView == null && publicContentView == null)
|| ((oldPublicContentView != null && publicContentView != null)
@ -1097,7 +1113,7 @@ public abstract class BaseStatusBar extends SystemUI implements
&& !TextUtils.equals(notification.getNotification().tickerText,
oldEntry.notification.getNotification().tickerText);
boolean isTopAnyway = isTopNotification(rowParent, oldEntry);
if (contentsUnchanged && bigContentsUnchanged && publicUnchanged
if (contentsUnchanged && bigContentsUnchanged && headsUpContentsUnchanged && publicUnchanged
&& (orderUnchanged || isTopAnyway)) {
if (DEBUG) Log.d(TAG, "reusing notification for key: " + key);
oldEntry.notification = notification;
@ -1181,7 +1197,9 @@ public abstract class BaseStatusBar extends SystemUI implements
private void updateNotificationViews(NotificationData.Entry entry,
StatusBarNotification notification, boolean isHeadsUp) {
final RemoteViews contentView = notification.getNotification().contentView;
final RemoteViews bigContentView = notification.getNotification().bigContentView;
final RemoteViews bigContentView = isHeadsUp
? notification.getNotification().headsUpContentView
: notification.getNotification().bigContentView;
final Notification publicVersion = notification.getNotification().publicVersion;
final RemoteViews publicContentView = publicVersion != null ? publicVersion.contentView
: null;