Loading core/java/android/app/Notification.java +0 −1 Original line number Diff line number Diff line Loading @@ -9520,7 +9520,6 @@ public class Notification implements Parcelable contentView.setViewVisibility(R.id.icon, View.GONE); contentView.setViewVisibility(R.id.conversation_face_pile, View.GONE); contentView.setViewVisibility(R.id.conversation_icon, View.VISIBLE); contentView.setBoolean(R.id.conversation_icon, "setApplyCircularCrop", true); contentView.setImageViewIcon(R.id.conversation_icon, conversationIcon); } else if (mIsGroupConversation) { contentView.setViewVisibility(R.id.icon, View.GONE); Loading core/java/com/android/internal/widget/NotificationRowIconView.java +0 −84 Original line number Diff line number Diff line Loading @@ -19,12 +19,7 @@ package com.android.internal.widget; import android.annotation.Nullable; import android.app.Flags; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.util.AttributeSet; Loading @@ -41,7 +36,6 @@ import android.widget.RemoteViews; public class NotificationRowIconView extends CachingIconView { private NotificationIconProvider mIconProvider; private boolean mApplyCircularCrop = false; private Drawable mAppIcon = null; // Padding, background and colors set on the view prior to being overridden when showing the app Loading Loading @@ -221,84 +215,6 @@ public class NotificationRowIconView extends CachingIconView { } } @Nullable @Override Drawable loadSizeRestrictedIcon(@Nullable Icon icon) { final Drawable original = super.loadSizeRestrictedIcon(icon); final Drawable result; if (mApplyCircularCrop) { result = makeCircularDrawable(original); } else { result = original; } return result; } /** * Enables circle crop that makes given image circular */ @RemotableViewMethod(asyncImpl = "setApplyCircularCropAsync") public void setApplyCircularCrop(boolean applyCircularCrop) { mApplyCircularCrop = applyCircularCrop; } /** * Async version of {@link NotificationRowIconView#setApplyCircularCrop} */ public Runnable setApplyCircularCropAsync(boolean applyCircularCrop) { mApplyCircularCrop = applyCircularCrop; return () -> { }; } @Nullable private Drawable makeCircularDrawable(@Nullable Drawable original) { if (original == null) { return original; } final Bitmap source = drawableToBitmap(original); int size = Math.min(source.getWidth(), source.getHeight()); Bitmap squared = Bitmap.createScaledBitmap(source, size, size, /* filter= */ false); Bitmap result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(result); final Paint paint = new Paint(); paint.setShader( new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true); float radius = size / 2f; canvas.drawCircle(radius, radius, radius, paint); return new BitmapDrawable(getResources(), result); } private static Bitmap drawableToBitmap(Drawable drawable) { if (drawable instanceof BitmapDrawable bitmapDrawable) { final Bitmap bitmap = bitmapDrawable.getBitmap(); if (bitmap.getConfig() == Bitmap.Config.HARDWARE) { return bitmap.copy(Bitmap.Config.ARGB_8888, false); } else { return bitmap; } } int width = drawable.getIntrinsicWidth(); width = width > 0 ? width : 1; int height = drawable.getIntrinsicHeight(); height = height > 0 ? height : 1; Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); drawable.draw(canvas); return bitmap; } /** * A provider that allows this view to verify whether it should use the app icon instead of the * icon provided to it via setImageIcon, as well as actually fetching the app icon. It should Loading core/res/res/layout/notification_template_material_messaging_compact_heads_up.xml +3 −1 Original line number Diff line number Diff line Loading @@ -34,12 +34,14 @@ android:maxDrawableWidth="@dimen/notification_icon_circle_size" android:maxDrawableHeight="@dimen/notification_icon_circle_size" /> <com.android.internal.widget.NotificationRowIconView <com.android.internal.widget.CachingIconView android:id="@+id/conversation_icon" android:layout_width="@dimen/notification_icon_circle_size" android:layout_height="@dimen/notification_icon_circle_size" android:layout_gravity="center_vertical|start" android:layout_marginStart="@dimen/notification_icon_circle_start" android:background="@drawable/notification_icon_circle" android:clipToOutline="true" android:maxDrawableWidth="@dimen/notification_icon_circle_size" android:maxDrawableHeight="@dimen/notification_icon_circle_size" android:scaleType="centerCrop" Loading Loading
core/java/android/app/Notification.java +0 −1 Original line number Diff line number Diff line Loading @@ -9520,7 +9520,6 @@ public class Notification implements Parcelable contentView.setViewVisibility(R.id.icon, View.GONE); contentView.setViewVisibility(R.id.conversation_face_pile, View.GONE); contentView.setViewVisibility(R.id.conversation_icon, View.VISIBLE); contentView.setBoolean(R.id.conversation_icon, "setApplyCircularCrop", true); contentView.setImageViewIcon(R.id.conversation_icon, conversationIcon); } else if (mIsGroupConversation) { contentView.setViewVisibility(R.id.icon, View.GONE); Loading
core/java/com/android/internal/widget/NotificationRowIconView.java +0 −84 Original line number Diff line number Diff line Loading @@ -19,12 +19,7 @@ package com.android.internal.widget; import android.annotation.Nullable; import android.app.Flags; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.util.AttributeSet; Loading @@ -41,7 +36,6 @@ import android.widget.RemoteViews; public class NotificationRowIconView extends CachingIconView { private NotificationIconProvider mIconProvider; private boolean mApplyCircularCrop = false; private Drawable mAppIcon = null; // Padding, background and colors set on the view prior to being overridden when showing the app Loading Loading @@ -221,84 +215,6 @@ public class NotificationRowIconView extends CachingIconView { } } @Nullable @Override Drawable loadSizeRestrictedIcon(@Nullable Icon icon) { final Drawable original = super.loadSizeRestrictedIcon(icon); final Drawable result; if (mApplyCircularCrop) { result = makeCircularDrawable(original); } else { result = original; } return result; } /** * Enables circle crop that makes given image circular */ @RemotableViewMethod(asyncImpl = "setApplyCircularCropAsync") public void setApplyCircularCrop(boolean applyCircularCrop) { mApplyCircularCrop = applyCircularCrop; } /** * Async version of {@link NotificationRowIconView#setApplyCircularCrop} */ public Runnable setApplyCircularCropAsync(boolean applyCircularCrop) { mApplyCircularCrop = applyCircularCrop; return () -> { }; } @Nullable private Drawable makeCircularDrawable(@Nullable Drawable original) { if (original == null) { return original; } final Bitmap source = drawableToBitmap(original); int size = Math.min(source.getWidth(), source.getHeight()); Bitmap squared = Bitmap.createScaledBitmap(source, size, size, /* filter= */ false); Bitmap result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(result); final Paint paint = new Paint(); paint.setShader( new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); paint.setAntiAlias(true); float radius = size / 2f; canvas.drawCircle(radius, radius, radius, paint); return new BitmapDrawable(getResources(), result); } private static Bitmap drawableToBitmap(Drawable drawable) { if (drawable instanceof BitmapDrawable bitmapDrawable) { final Bitmap bitmap = bitmapDrawable.getBitmap(); if (bitmap.getConfig() == Bitmap.Config.HARDWARE) { return bitmap.copy(Bitmap.Config.ARGB_8888, false); } else { return bitmap; } } int width = drawable.getIntrinsicWidth(); width = width > 0 ? width : 1; int height = drawable.getIntrinsicHeight(); height = height > 0 ? height : 1; Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); drawable.draw(canvas); return bitmap; } /** * A provider that allows this view to verify whether it should use the app icon instead of the * icon provided to it via setImageIcon, as well as actually fetching the app icon. It should Loading
core/res/res/layout/notification_template_material_messaging_compact_heads_up.xml +3 −1 Original line number Diff line number Diff line Loading @@ -34,12 +34,14 @@ android:maxDrawableWidth="@dimen/notification_icon_circle_size" android:maxDrawableHeight="@dimen/notification_icon_circle_size" /> <com.android.internal.widget.NotificationRowIconView <com.android.internal.widget.CachingIconView android:id="@+id/conversation_icon" android:layout_width="@dimen/notification_icon_circle_size" android:layout_height="@dimen/notification_icon_circle_size" android:layout_gravity="center_vertical|start" android:layout_marginStart="@dimen/notification_icon_circle_start" android:background="@drawable/notification_icon_circle" android:clipToOutline="true" android:maxDrawableWidth="@dimen/notification_icon_circle_size" android:maxDrawableHeight="@dimen/notification_icon_circle_size" android:scaleType="centerCrop" Loading