diff options
| author | 2022-02-14 16:19:10 +0000 | |
|---|---|---|
| committer | 2022-03-31 15:51:40 +0000 | |
| commit | 6a1ca2ff49bfb2a54326703d23e4a06d8db76743 (patch) | |
| tree | 7ba4b570bf63cafb80553a79206b53e5bb4f79d5 | |
| parent | 9519e3c94ab7ec10e544e2f5a3dcb05a92939fc2 (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.java | 38 |
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; } } |