summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jernej Virag <jernej@google.com> 2022-02-14 16:19:10 +0000
committer Jernej Virag <jernej@google.com> 2022-03-31 15:51:40 +0000
commit6a1ca2ff49bfb2a54326703d23e4a06d8db76743 (patch)
tree7ba4b570bf63cafb80553a79206b53e5bb4f79d5
parent9519e3c94ab7ec10e544e2f5a3dcb05a92939fc2 (diff)
Fix loaded size of BigPicture bitmap
Right now the big picutre bitmap was loaded at 480px from URI and unrestricted from any other source. This adjusts that size to always consistently restrict it to 358dp, which is the maximum size of notifications. Bug:210690571 Bug:218845090 Test: Manually on device Change-Id: I9586488ba307e19bdc8c1af6f8c99cd369cd94c9
-rw-r--r--core/java/com/android/internal/widget/BigPictureNotificationImageView.java38
1 files changed, 22 insertions, 16 deletions
diff --git a/core/java/com/android/internal/widget/BigPictureNotificationImageView.java b/core/java/com/android/internal/widget/BigPictureNotificationImageView.java
index c34a42224f5a..3a7cf74df4a8 100644
--- a/core/java/com/android/internal/widget/BigPictureNotificationImageView.java
+++ b/core/java/com/android/internal/widget/BigPictureNotificationImageView.java
@@ -20,16 +20,16 @@ import android.annotation.AttrRes;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.StyleRes;
+import android.app.ActivityManager;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.util.AttributeSet;
-import android.util.Log;
import android.widget.ImageView;
import android.widget.RemoteViews;
-import java.io.IOException;
+import com.android.internal.R;
/**
* An ImageView used by BigPicture Notifications to correctly resolve the Uri in an Icon using the
@@ -41,22 +41,32 @@ public class BigPictureNotificationImageView extends ImageView {
private static final String TAG = BigPictureNotificationImageView.class.getSimpleName();
+ private final int mMaximumDrawableWidth;
+ private final int mMaximumDrawableHeight;
+
public BigPictureNotificationImageView(@NonNull Context context) {
- super(context);
+ this(context, null, 0, 0);
}
public BigPictureNotificationImageView(@NonNull Context context, @Nullable AttributeSet attrs) {
- super(context, attrs);
+ this(context, attrs, 0, 0);
}
public BigPictureNotificationImageView(@NonNull Context context, @Nullable AttributeSet attrs,
@AttrRes int defStyleAttr) {
- super(context, attrs, defStyleAttr);
+ this(context, attrs, defStyleAttr, 0);
}
public BigPictureNotificationImageView(@NonNull Context context, @Nullable AttributeSet attrs,
@AttrRes int defStyleAttr, @StyleRes int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
+ boolean isLowRam = ActivityManager.isLowRamDeviceStatic();
+ mMaximumDrawableWidth = context.getResources().getDimensionPixelSize(
+ isLowRam ? R.dimen.notification_big_picture_max_width_low_ram
+ : R.dimen.notification_big_picture_max_width);
+ mMaximumDrawableHeight = context.getResources().getDimensionPixelSize(
+ isLowRam ? R.dimen.notification_big_picture_max_height_low_ram
+ : R.dimen.notification_big_picture_max_height);
}
@Override
@@ -85,21 +95,17 @@ public class BigPictureNotificationImageView extends ImageView {
private Drawable loadImage(Uri uri) {
if (uri == null) return null;
- try {
- return LocalImageResolver.resolveImage(uri, mContext);
- } catch (IOException ex) {
- Log.d(TAG, "Resolve failed from " + uri, ex);
- return null;
- }
+ return LocalImageResolver.resolveImage(uri, mContext, mMaximumDrawableWidth,
+ mMaximumDrawableHeight);
}
private Drawable loadImage(Icon icon) {
if (icon == null) return null;
- try {
- return LocalImageResolver.resolveImage(icon, mContext);
- } catch (IOException ex) {
- Log.d(TAG, "Resolve failed from " + icon, ex);
- return null;
+ Drawable drawable = LocalImageResolver.resolveImage(icon, mContext, mMaximumDrawableWidth,
+ mMaximumDrawableHeight);
+ if (drawable == null) {
+ return icon.loadDrawable(mContext);
}
+ return drawable;
}
}