Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1076)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaNotificationManager.java

Issue 2462703002: Improving non-square large icon in MediaNotification (Closed)
Patch Set: nits Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaNotificationManager.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaNotificationManager.java b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaNotificationManager.java
index 2333b372437919ea28a81ec40974ce068fdd0fe0..2cf926549748faeaa4d7ccb7de23cd780ca3d4b1 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaNotificationManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/media/ui/MediaNotificationManager.java
@@ -14,6 +14,9 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Matrix;
+import android.graphics.Paint;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.media.AudioManager;
@@ -369,14 +372,33 @@ public class MediaNotificationManager {
int largeIconSizePx = getMaximumLargeIconSize();
- if (icon.getWidth() > largeIconSizePx || icon.getHeight() > largeIconSizePx) {
- return icon.createScaledBitmap(
- icon, largeIconSizePx, largeIconSizePx, true /* filter */);
+ if (icon.getWidth() > largeIconSizePx || icon.getHeight() > largeIconSizePx
+ || icon.getWidth() != icon.getHeight()) {
+ return scaleIconInternal(icon, largeIconSizePx);
}
return icon;
}
+ private static Bitmap scaleIconInternal(Bitmap icon, int targetSize) {
+ Matrix m = new Matrix();
+ int dominantLength = Math.max(icon.getWidth(), icon.getHeight());
+ // Move the center to (0,0).
+ m.postTranslate(icon.getWidth() / -2.0f, icon.getHeight() / -2.0f);
+ // Scale to desired size.
+ float scale = 1.0f * targetSize / dominantLength;
+ m.postScale(scale, scale);
+ // Move to the desired place.
+ m.postTranslate(targetSize / 2.0f, targetSize / 2.0f);
+
+ // Draw the image.
+ Bitmap paddedBitmap = Bitmap.createBitmap(targetSize, targetSize, Bitmap.Config.ARGB_8888);
+ Canvas canvas = new Canvas(paddedBitmap);
+ Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
+ canvas.drawBitmap(icon, m, paint);
+ return paddedBitmap;
+ }
+
/**
* @return Prefered maximum large icon size. If the large icon is larger than this size, then it
* needs to be scaled.

Powered by Google App Engine
This is Rietveld 408576698