Loading src/com/android/settings/Utils.java +16 −9 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ import android.widget.ListView; import android.widget.TabWidget; import androidx.annotation.StringRes; import androidx.core.graphics.drawable.IconCompat; import androidx.fragment.app.Fragment; import androidx.preference.Preference; import androidx.preference.PreferenceGroup; Loading Loading @@ -950,24 +951,30 @@ public final class Utils extends com.android.settingslib.Utils { bitmap = Bitmap.createScaledBitmap(((BitmapDrawable) original).getBitmap(), width, height, false); } else { bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(bitmap); original.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); original.draw(canvas); bitmap = createBitmap(original, width, height); } return new BitmapDrawable(null, bitmap); } /** * Converts the {@link Drawable} to a {@link Bitmap}. * Create an Icon pointing to a drawable. */ public static Bitmap drawableToBitmap(Drawable drawable) { public static IconCompat createIconWithDrawable(Drawable drawable) { Bitmap bitmap; if (drawable instanceof BitmapDrawable) { return ((BitmapDrawable)drawable).getBitmap(); bitmap = ((BitmapDrawable)drawable).getBitmap(); } else { final int width = drawable.getIntrinsicWidth(); final int height = drawable.getIntrinsicHeight(); bitmap = createBitmap(drawable, width > 0 ? width : 1, height > 0 ? height : 1); } return IconCompat.createWithBitmap(bitmap); } final Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); private static Bitmap createBitmap(Drawable drawable, int width, int height) { final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); drawable.draw(canvas); Loading src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java +1 −1 Original line number Diff line number Diff line Loading @@ -214,7 +214,7 @@ public class BluetoothDevicesSlice implements CustomSliceable { .getBtClassDrawableWithDescription(mContext, device); if (pair.first != null) { return IconCompat.createWithBitmap(Utils.drawableToBitmap(pair.first)); return Utils.createIconWithDrawable(pair.first); } else { return IconCompat.createWithResource(mContext, com.android.internal.R.drawable.ic_settings_bluetooth); Loading src/com/android/settings/homepage/contextualcards/slices/NotificationChannelSlice.java +1 −4 Original line number Diff line number Diff line Loading @@ -30,9 +30,6 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; Loading Loading @@ -243,7 +240,7 @@ public class NotificationChannelSlice implements CustomSliceable { return null; } return IconCompat.createWithBitmap(Utils.drawableToBitmap(drawable)); return Utils.createIconWithDrawable(drawable); } @VisibleForTesting Loading src/com/android/settings/media/MediaOutputSlice.java +1 −14 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.UserHandle; Loading Loading @@ -87,7 +85,7 @@ public class MediaOutputSlice implements CustomSliceable { final Drawable drawable = Utils.getBadgedIcon(mIconDrawableFactory, pm, mPackageName, UserHandle.myUserId()); final IconCompat icon = IconCompat.createWithBitmap(getBitmapFromDrawable(drawable)); final IconCompat icon = Utils.createIconWithDrawable(drawable); @ColorInt final int color = Utils.getColorAccentDefaultColor(mContext); final SliceAction primarySliceAction = SliceAction.createDeeplink(getPrimaryAction(), icon, Loading Loading @@ -134,17 +132,6 @@ public class MediaOutputSlice implements CustomSliceable { return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, 0 /* flags */); } private Bitmap getBitmapFromDrawable(Drawable drawable) { final Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); drawable.draw(canvas); return bitmap; } private ListBuilder.RowBuilder getMediaDeviceRow(MediaDevice device) { final String title = device.getName(); final PendingIntent broadcastAction = Loading src/com/android/settings/wifi/slice/ContextualWifiSlice.java +1 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ public class ContextualWifiSlice extends WifiSlice { } d.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN)); return IconCompat.createWithBitmap(Utils.drawableToBitmap(d)); return Utils.createIconWithDrawable(d); } @Override Loading Loading
src/com/android/settings/Utils.java +16 −9 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ import android.widget.ListView; import android.widget.TabWidget; import androidx.annotation.StringRes; import androidx.core.graphics.drawable.IconCompat; import androidx.fragment.app.Fragment; import androidx.preference.Preference; import androidx.preference.PreferenceGroup; Loading Loading @@ -950,24 +951,30 @@ public final class Utils extends com.android.settingslib.Utils { bitmap = Bitmap.createScaledBitmap(((BitmapDrawable) original).getBitmap(), width, height, false); } else { bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(bitmap); original.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); original.draw(canvas); bitmap = createBitmap(original, width, height); } return new BitmapDrawable(null, bitmap); } /** * Converts the {@link Drawable} to a {@link Bitmap}. * Create an Icon pointing to a drawable. */ public static Bitmap drawableToBitmap(Drawable drawable) { public static IconCompat createIconWithDrawable(Drawable drawable) { Bitmap bitmap; if (drawable instanceof BitmapDrawable) { return ((BitmapDrawable)drawable).getBitmap(); bitmap = ((BitmapDrawable)drawable).getBitmap(); } else { final int width = drawable.getIntrinsicWidth(); final int height = drawable.getIntrinsicHeight(); bitmap = createBitmap(drawable, width > 0 ? width : 1, height > 0 ? height : 1); } return IconCompat.createWithBitmap(bitmap); } final Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); private static Bitmap createBitmap(Drawable drawable, int width, int height) { final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); drawable.draw(canvas); Loading
src/com/android/settings/homepage/contextualcards/slices/BluetoothDevicesSlice.java +1 −1 Original line number Diff line number Diff line Loading @@ -214,7 +214,7 @@ public class BluetoothDevicesSlice implements CustomSliceable { .getBtClassDrawableWithDescription(mContext, device); if (pair.first != null) { return IconCompat.createWithBitmap(Utils.drawableToBitmap(pair.first)); return Utils.createIconWithDrawable(pair.first); } else { return IconCompat.createWithResource(mContext, com.android.internal.R.drawable.ic_settings_bluetooth); Loading
src/com/android/settings/homepage/contextualcards/slices/NotificationChannelSlice.java +1 −4 Original line number Diff line number Diff line Loading @@ -30,9 +30,6 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; Loading Loading @@ -243,7 +240,7 @@ public class NotificationChannelSlice implements CustomSliceable { return null; } return IconCompat.createWithBitmap(Utils.drawableToBitmap(drawable)); return Utils.createIconWithDrawable(drawable); } @VisibleForTesting Loading
src/com/android/settings/media/MediaOutputSlice.java +1 −14 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.UserHandle; Loading Loading @@ -87,7 +85,7 @@ public class MediaOutputSlice implements CustomSliceable { final Drawable drawable = Utils.getBadgedIcon(mIconDrawableFactory, pm, mPackageName, UserHandle.myUserId()); final IconCompat icon = IconCompat.createWithBitmap(getBitmapFromDrawable(drawable)); final IconCompat icon = Utils.createIconWithDrawable(drawable); @ColorInt final int color = Utils.getColorAccentDefaultColor(mContext); final SliceAction primarySliceAction = SliceAction.createDeeplink(getPrimaryAction(), icon, Loading Loading @@ -134,17 +132,6 @@ public class MediaOutputSlice implements CustomSliceable { return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, 0 /* flags */); } private Bitmap getBitmapFromDrawable(Drawable drawable) { final Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); drawable.draw(canvas); return bitmap; } private ListBuilder.RowBuilder getMediaDeviceRow(MediaDevice device) { final String title = device.getName(); final PendingIntent broadcastAction = Loading
src/com/android/settings/wifi/slice/ContextualWifiSlice.java +1 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ public class ContextualWifiSlice extends WifiSlice { } d.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN)); return IconCompat.createWithBitmap(Utils.drawableToBitmap(d)); return Utils.createIconWithDrawable(d); } @Override Loading