Loading core/java/android/app/Notification.java +42 −13 Original line number Diff line number Diff line Loading @@ -1867,6 +1867,15 @@ public class Notification implements Parcelable */ private Notification mRebuildNotification = null; /** * Whether the build notification has three lines. This is used to make the top padding for * both the contracted and expanded layout consistent. * * <p> * This field is only valid during the build phase. */ private boolean mHasThreeLines; /** * Constructs a new Builder with the defaults: * Loading Loading @@ -2564,19 +2573,23 @@ public class Notification implements Parcelable return this; } private Bitmap getProfileBadge() { private Drawable getProfileBadgeDrawable() { // Note: This assumes that the current user can read the profile badge of the // originating user. UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); Drawable badge = userManager.getBadgeForUser(new UserHandle(mOriginatingUserId), 0); return userManager.getBadgeForUser(new UserHandle(mOriginatingUserId), 0); } private Bitmap getProfileBadge() { Drawable badge = getProfileBadgeDrawable(); if (badge == null) { return null; } final int width = badge.getIntrinsicWidth(); final int height = badge.getIntrinsicHeight(); Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); final int size = mContext.getResources().getDimensionPixelSize( R.dimen.notification_badge_size); Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); badge.setBounds(0, 0, width, height); badge.setBounds(0, 0, size, size); badge.draw(canvas); return bitmap; } Loading @@ -2602,6 +2615,12 @@ public class Notification implements Parcelable return false; } private void shrinkLine3Text(RemoteViews contentView) { float subTextSize = mContext.getResources().getDimensionPixelSize( R.dimen.notification_subtext_size); contentView.setTextViewTextSize(R.id.text, TypedValue.COMPLEX_UNIT_PX, subTextSize); } private RemoteViews applyStandardTemplate(int resId) { RemoteViews contentView = new BuilderRemoteViews(mContext.getPackageName(), mOriginatingUserId, resId); Loading Loading @@ -2674,10 +2693,7 @@ public class Notification implements Parcelable if (showLine2) { // need to shrink all the type to make sure everything fits final Resources res = mContext.getResources(); final float subTextSize = res.getDimensionPixelSize( R.dimen.notification_subtext_size); contentView.setTextViewTextSize(R.id.text, TypedValue.COMPLEX_UNIT_PX, subTextSize); shrinkLine3Text(contentView); } if (mWhen != 0 && mShowWhen) { Loading @@ -2696,7 +2712,7 @@ public class Notification implements Parcelable // Adjust padding depending on line count and font size. contentView.setViewPadding(R.id.line1, 0, calculateTopPadding(mContext, hasThreeLines(), mContext.getResources().getConfiguration().fontScale), mHasThreeLines, mContext.getResources().getConfiguration().fontScale), 0, 0); // We want to add badge to first line of text. Loading @@ -2721,7 +2737,12 @@ public class Notification implements Parcelable * is going to have one or two lines */ private boolean hasThreeLines() { boolean hasLine3 = mContentText != null || mContentInfo != null || mNumber > 0; boolean contentTextInLine2 = mSubText != null && mContentText != null; // If we have content text in line 2, badge goes into line 2, or line 3 otherwise boolean badgeInLine3 = getProfileBadgeDrawable() != null && !contentTextInLine2; boolean hasLine3 = mContentText != null || mContentInfo != null || mNumber > 0 || badgeInLine3; boolean hasLine2 = (mSubText != null && mContentText != null) || (mSubText == null && (mProgressMax != 0 || mProgressIndeterminate)); return hasLine2 && hasLine3; Loading Loading @@ -3092,6 +3113,7 @@ public class Notification implements Parcelable if (mRebuildNotification == null) { throw new IllegalStateException("rebuild() only valid when in 'rebuild' mode."); } mHasThreeLines = hasThreeLines(); Bundle extras = mRebuildNotification.extras; Loading Loading @@ -3124,6 +3146,7 @@ public class Notification implements Parcelable } extras.remove(EXTRA_REBUILD_HEADS_UP_CONTENT_VIEW); mHasThreeLines = false; return mRebuildNotification; } Loading Loading @@ -3238,6 +3261,7 @@ public class Notification implements Parcelable */ public Notification build() { mOriginatingUserId = mContext.getUserId(); mHasThreeLines = hasThreeLines(); Notification n = buildUnstyled(); Loading @@ -3259,6 +3283,7 @@ public class Notification implements Parcelable mStyle.addExtras(n.extras); } mHasThreeLines = false; return n; } Loading Loading @@ -3388,7 +3413,7 @@ public class Notification implements Parcelable */ protected void applyTopPadding(RemoteViews contentView) { int topPadding = Builder.calculateTopPadding(mBuilder.mContext, mBuilder.hasThreeLines(), mBuilder.mHasThreeLines, mBuilder.mContext.getResources().getConfiguration().fontScale); contentView.setViewPadding(R.id.line1, 0, topPadding, 0, 0); } Loading Loading @@ -3661,6 +3686,8 @@ public class Notification implements Parcelable applyTopPadding(contentView); mBuilder.shrinkLine3Text(contentView); mBuilder.addProfileBadge(contentView, R.id.profile_badge_large_template); return contentView; Loading Loading @@ -3800,6 +3827,8 @@ public class Notification implements Parcelable applyTopPadding(contentView); mBuilder.shrinkLine3Text(contentView); mBuilder.addProfileBadge(contentView, R.id.profile_badge_large_template); return contentView; Loading core/res/res/layout/notification_template_material_big_base.xml +2 −2 Original line number Diff line number Diff line Loading @@ -53,8 +53,8 @@ android:visibility="gone" /> <ImageView android:id="@+id/profile_badge_large_template" android:layout_width="20dp" android:layout_height="20dp" android:layout_width="@dimen/notification_badge_size" android:layout_height="@dimen/notification_badge_size" android:layout_weight="0" android:layout_marginStart="4dp" android:scaleType="fitCenter" Loading core/res/res/layout/notification_template_material_big_text.xml +4 −3 Original line number Diff line number Diff line Loading @@ -39,11 +39,12 @@ <include layout="@layout/notification_template_part_line2" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_height="0dp" android:layout_marginEnd="8dp" android:layout_marginBottom="10dp" android:orientation="horizontal" android:gravity="top" android:layout_weight="1" > <TextView android:id="@+id/big_text" android:textAppearance="@style/TextAppearance.Material.Notification" Loading @@ -54,8 +55,8 @@ android:visibility="gone" /> <ImageView android:id="@+id/profile_badge_large_template" android:layout_width="20dp" android:layout_height="20dp" android:layout_width="@dimen/notification_badge_size" android:layout_height="@dimen/notification_badge_size" android:layout_weight="0" android:layout_marginStart="4dp" android:scaleType="fitCenter" Loading core/res/res/layout/notification_template_material_inbox.xml +85 −82 Original line number Diff line number Diff line Loading @@ -37,31 +37,39 @@ > <include layout="@layout/notification_template_part_line1" /> <include layout="@layout/notification_template_part_line2" /> <!-- We can't have another vertical linear layout here with weight != 0 so this forces us to put the badge on the first line. --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="top" > <LinearLayout android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:orientation="vertical" android:layout_height="0dp" android:orientation="horizontal" > <TextView android:id="@+id/inbox_text0" android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_width="0dp" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="end" android:visibility="gone" android:layout_weight="1" /> <ImageView android:id="@+id/profile_badge_large_template" android:layout_width="@dimen/notification_badge_size" android:layout_height="@dimen/notification_badge_size" android:layout_weight="0" android:layout_marginStart="4dp" android:layout_marginEnd="8dp" android:scaleType="fitCenter" android:visibility="gone" /> </LinearLayout> <TextView android:id="@+id/inbox_text1" android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" Loading @@ -71,6 +79,7 @@ android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" Loading @@ -80,6 +89,7 @@ android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" Loading @@ -89,6 +99,7 @@ android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" Loading @@ -98,6 +109,7 @@ android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" Loading @@ -107,6 +119,7 @@ android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" Loading @@ -116,23 +129,13 @@ android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" android:layout_weight="1" android:text="@android:string/ellipsis" /> </LinearLayout> <ImageView android:id="@+id/profile_badge_large_template" android:layout_width="20dp" android:layout_height="20dp" android:layout_weight="0" android:layout_marginStart="4dp" android:layout_marginEnd="8dp" android:scaleType="fitCenter" android:visibility="gone" /> </LinearLayout> <FrameLayout android:id="@+id/inbox_end_pad" android:layout_width="match_parent" Loading core/res/res/layout/notification_template_part_line2.xml +2 −4 Original line number Diff line number Diff line Loading @@ -20,8 +20,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:visibility="gone" android:layout_weight="0" android:orientation="horizontal" android:gravity="center_vertical" > Loading @@ -39,8 +37,8 @@ android:layout_weight="1" /> <ImageView android:id="@+id/profile_badge_line2" android:layout_width="20dp" android:layout_height="20dp" android:layout_width="@dimen/notification_badge_size" android:layout_height="@dimen/notification_badge_size" android:layout_weight="0" android:layout_marginStart="4dp" android:scaleType="fitCenter" Loading Loading
core/java/android/app/Notification.java +42 −13 Original line number Diff line number Diff line Loading @@ -1867,6 +1867,15 @@ public class Notification implements Parcelable */ private Notification mRebuildNotification = null; /** * Whether the build notification has three lines. This is used to make the top padding for * both the contracted and expanded layout consistent. * * <p> * This field is only valid during the build phase. */ private boolean mHasThreeLines; /** * Constructs a new Builder with the defaults: * Loading Loading @@ -2564,19 +2573,23 @@ public class Notification implements Parcelable return this; } private Bitmap getProfileBadge() { private Drawable getProfileBadgeDrawable() { // Note: This assumes that the current user can read the profile badge of the // originating user. UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); Drawable badge = userManager.getBadgeForUser(new UserHandle(mOriginatingUserId), 0); return userManager.getBadgeForUser(new UserHandle(mOriginatingUserId), 0); } private Bitmap getProfileBadge() { Drawable badge = getProfileBadgeDrawable(); if (badge == null) { return null; } final int width = badge.getIntrinsicWidth(); final int height = badge.getIntrinsicHeight(); Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); final int size = mContext.getResources().getDimensionPixelSize( R.dimen.notification_badge_size); Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); badge.setBounds(0, 0, width, height); badge.setBounds(0, 0, size, size); badge.draw(canvas); return bitmap; } Loading @@ -2602,6 +2615,12 @@ public class Notification implements Parcelable return false; } private void shrinkLine3Text(RemoteViews contentView) { float subTextSize = mContext.getResources().getDimensionPixelSize( R.dimen.notification_subtext_size); contentView.setTextViewTextSize(R.id.text, TypedValue.COMPLEX_UNIT_PX, subTextSize); } private RemoteViews applyStandardTemplate(int resId) { RemoteViews contentView = new BuilderRemoteViews(mContext.getPackageName(), mOriginatingUserId, resId); Loading Loading @@ -2674,10 +2693,7 @@ public class Notification implements Parcelable if (showLine2) { // need to shrink all the type to make sure everything fits final Resources res = mContext.getResources(); final float subTextSize = res.getDimensionPixelSize( R.dimen.notification_subtext_size); contentView.setTextViewTextSize(R.id.text, TypedValue.COMPLEX_UNIT_PX, subTextSize); shrinkLine3Text(contentView); } if (mWhen != 0 && mShowWhen) { Loading @@ -2696,7 +2712,7 @@ public class Notification implements Parcelable // Adjust padding depending on line count and font size. contentView.setViewPadding(R.id.line1, 0, calculateTopPadding(mContext, hasThreeLines(), mContext.getResources().getConfiguration().fontScale), mHasThreeLines, mContext.getResources().getConfiguration().fontScale), 0, 0); // We want to add badge to first line of text. Loading @@ -2721,7 +2737,12 @@ public class Notification implements Parcelable * is going to have one or two lines */ private boolean hasThreeLines() { boolean hasLine3 = mContentText != null || mContentInfo != null || mNumber > 0; boolean contentTextInLine2 = mSubText != null && mContentText != null; // If we have content text in line 2, badge goes into line 2, or line 3 otherwise boolean badgeInLine3 = getProfileBadgeDrawable() != null && !contentTextInLine2; boolean hasLine3 = mContentText != null || mContentInfo != null || mNumber > 0 || badgeInLine3; boolean hasLine2 = (mSubText != null && mContentText != null) || (mSubText == null && (mProgressMax != 0 || mProgressIndeterminate)); return hasLine2 && hasLine3; Loading Loading @@ -3092,6 +3113,7 @@ public class Notification implements Parcelable if (mRebuildNotification == null) { throw new IllegalStateException("rebuild() only valid when in 'rebuild' mode."); } mHasThreeLines = hasThreeLines(); Bundle extras = mRebuildNotification.extras; Loading Loading @@ -3124,6 +3146,7 @@ public class Notification implements Parcelable } extras.remove(EXTRA_REBUILD_HEADS_UP_CONTENT_VIEW); mHasThreeLines = false; return mRebuildNotification; } Loading Loading @@ -3238,6 +3261,7 @@ public class Notification implements Parcelable */ public Notification build() { mOriginatingUserId = mContext.getUserId(); mHasThreeLines = hasThreeLines(); Notification n = buildUnstyled(); Loading @@ -3259,6 +3283,7 @@ public class Notification implements Parcelable mStyle.addExtras(n.extras); } mHasThreeLines = false; return n; } Loading Loading @@ -3388,7 +3413,7 @@ public class Notification implements Parcelable */ protected void applyTopPadding(RemoteViews contentView) { int topPadding = Builder.calculateTopPadding(mBuilder.mContext, mBuilder.hasThreeLines(), mBuilder.mHasThreeLines, mBuilder.mContext.getResources().getConfiguration().fontScale); contentView.setViewPadding(R.id.line1, 0, topPadding, 0, 0); } Loading Loading @@ -3661,6 +3686,8 @@ public class Notification implements Parcelable applyTopPadding(contentView); mBuilder.shrinkLine3Text(contentView); mBuilder.addProfileBadge(contentView, R.id.profile_badge_large_template); return contentView; Loading Loading @@ -3800,6 +3827,8 @@ public class Notification implements Parcelable applyTopPadding(contentView); mBuilder.shrinkLine3Text(contentView); mBuilder.addProfileBadge(contentView, R.id.profile_badge_large_template); return contentView; Loading
core/res/res/layout/notification_template_material_big_base.xml +2 −2 Original line number Diff line number Diff line Loading @@ -53,8 +53,8 @@ android:visibility="gone" /> <ImageView android:id="@+id/profile_badge_large_template" android:layout_width="20dp" android:layout_height="20dp" android:layout_width="@dimen/notification_badge_size" android:layout_height="@dimen/notification_badge_size" android:layout_weight="0" android:layout_marginStart="4dp" android:scaleType="fitCenter" Loading
core/res/res/layout/notification_template_material_big_text.xml +4 −3 Original line number Diff line number Diff line Loading @@ -39,11 +39,12 @@ <include layout="@layout/notification_template_part_line2" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_height="0dp" android:layout_marginEnd="8dp" android:layout_marginBottom="10dp" android:orientation="horizontal" android:gravity="top" android:layout_weight="1" > <TextView android:id="@+id/big_text" android:textAppearance="@style/TextAppearance.Material.Notification" Loading @@ -54,8 +55,8 @@ android:visibility="gone" /> <ImageView android:id="@+id/profile_badge_large_template" android:layout_width="20dp" android:layout_height="20dp" android:layout_width="@dimen/notification_badge_size" android:layout_height="@dimen/notification_badge_size" android:layout_weight="0" android:layout_marginStart="4dp" android:scaleType="fitCenter" Loading
core/res/res/layout/notification_template_material_inbox.xml +85 −82 Original line number Diff line number Diff line Loading @@ -37,31 +37,39 @@ > <include layout="@layout/notification_template_part_line1" /> <include layout="@layout/notification_template_part_line2" /> <!-- We can't have another vertical linear layout here with weight != 0 so this forces us to put the badge on the first line. --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="top" > <LinearLayout android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:orientation="vertical" android:layout_height="0dp" android:orientation="horizontal" > <TextView android:id="@+id/inbox_text0" android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_width="0dp" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="end" android:visibility="gone" android:layout_weight="1" /> <ImageView android:id="@+id/profile_badge_large_template" android:layout_width="@dimen/notification_badge_size" android:layout_height="@dimen/notification_badge_size" android:layout_weight="0" android:layout_marginStart="4dp" android:layout_marginEnd="8dp" android:scaleType="fitCenter" android:visibility="gone" /> </LinearLayout> <TextView android:id="@+id/inbox_text1" android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" Loading @@ -71,6 +79,7 @@ android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" Loading @@ -80,6 +89,7 @@ android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" Loading @@ -89,6 +99,7 @@ android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" Loading @@ -98,6 +109,7 @@ android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" Loading @@ -107,6 +119,7 @@ android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" Loading @@ -116,23 +129,13 @@ android:textAppearance="@style/TextAppearance.Material.Notification" android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginEnd="8dp" android:singleLine="true" android:ellipsize="end" android:visibility="gone" android:layout_weight="1" android:text="@android:string/ellipsis" /> </LinearLayout> <ImageView android:id="@+id/profile_badge_large_template" android:layout_width="20dp" android:layout_height="20dp" android:layout_weight="0" android:layout_marginStart="4dp" android:layout_marginEnd="8dp" android:scaleType="fitCenter" android:visibility="gone" /> </LinearLayout> <FrameLayout android:id="@+id/inbox_end_pad" android:layout_width="match_parent" Loading
core/res/res/layout/notification_template_part_line2.xml +2 −4 Original line number Diff line number Diff line Loading @@ -20,8 +20,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:visibility="gone" android:layout_weight="0" android:orientation="horizontal" android:gravity="center_vertical" > Loading @@ -39,8 +37,8 @@ android:layout_weight="1" /> <ImageView android:id="@+id/profile_badge_line2" android:layout_width="20dp" android:layout_height="20dp" android:layout_width="@dimen/notification_badge_size" android:layout_height="@dimen/notification_badge_size" android:layout_weight="0" android:layout_marginStart="4dp" android:scaleType="fitCenter" Loading