From 6be374da5348951d3f1ad032e859a85ca543e01d Mon Sep 17 00:00:00 2001 From: Rafay Saleem Date: Tue, 14 Dec 2021 21:50:35 +0500 Subject: [PATCH 1/2] Icon rounding issue resolved --- .../chat/CustomNotificationProvider.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/java/com/expensify/chat/CustomNotificationProvider.java b/android/app/src/main/java/com/expensify/chat/CustomNotificationProvider.java index d3efa5bc6196..75d71813d7af 100644 --- a/android/app/src/main/java/com/expensify/chat/CustomNotificationProvider.java +++ b/android/app/src/main/java/com/expensify/chat/CustomNotificationProvider.java @@ -2,6 +2,12 @@ import android.content.Context; import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.Bitmap.Config; +import android.graphics.PorterDuffXfermode; +import android.graphics.PorterDuff.Mode; import android.util.DisplayMetrics; import android.util.Log; import android.util.TypedValue; @@ -74,6 +80,25 @@ protected NotificationCompat.Builder onExtendBuilder(@NonNull Context context, @ return builder; } + public Bitmap getCroppedBitmap(Bitmap bitmap) { + Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), + bitmap.getHeight(), Config.ARGB_8888); + Canvas canvas = new Canvas(output); + + final int color = 0xff424242; + final Paint paint = new Paint(); + final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); + + paint.setAntiAlias(true); + canvas.drawARGB(0, 0, 0, 0); + paint.setColor(color); + canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2, + bitmap.getWidth() / 2, paint); + paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); + canvas.drawBitmap(bitmap, rect, rect, paint); + return output; + } + /** * Applies the message style to the notification builder. It also takes advantage of the * notification cache to build conversations. @@ -208,7 +233,7 @@ private IconCompat fetchIcon(String urlString) { try { Bitmap bitmap = future.get(MAX_ICON_FETCH_WAIT_TIME_SECONDS, TimeUnit.SECONDS); - return IconCompat.createWithBitmap(bitmap); + return IconCompat.createWithBitmap(getCroppedBitmap(bitmap)); } catch (InterruptedException e) { Log.e(TAG,"Failed to fetch icon", e); Thread.currentThread().interrupt(); From e2d73b6b1d5ff07a26c9bc4e6c647baba3286c7f Mon Sep 17 00:00:00 2001 From: Rafay Saleem Date: Thu, 16 Dec 2021 19:02:07 +0500 Subject: [PATCH 2/2] variable name improved and comments added --- .../expensify/chat/CustomNotificationProvider.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/java/com/expensify/chat/CustomNotificationProvider.java b/android/app/src/main/java/com/expensify/chat/CustomNotificationProvider.java index 75d71813d7af..643b4eef4dd7 100644 --- a/android/app/src/main/java/com/expensify/chat/CustomNotificationProvider.java +++ b/android/app/src/main/java/com/expensify/chat/CustomNotificationProvider.java @@ -80,18 +80,25 @@ protected NotificationCompat.Builder onExtendBuilder(@NonNull Context context, @ return builder; } + /** + * Creates a canvas to draw a circle and then draws the bitmap avatar within that circle + * to clip off the area of the bitmap outside the circular path and returns a circular + * bitmap. + * + * @param bitmap The bitmap image to modify. + */ public Bitmap getCroppedBitmap(Bitmap bitmap) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); - final int color = 0xff424242; + final int defaultBackgroundColor = 0xff424242; final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); - paint.setColor(color); + paint.setColor(defaultBackgroundColor); canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2, bitmap.getWidth() / 2, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));