diff options
author | 2024-09-05 20:21:41 +0000 | |
---|---|---|
committer | 2024-09-05 22:48:10 +0000 | |
commit | 08a952fdcee3fe54539e35b58bd158146815dfaf (patch) | |
tree | 6a046c1381a4e86f67bd1c17174f34e24a1aa3b5 /packages/SystemUI/accessibility | |
parent | 06665dcfa8e19cd9a2598f4c76553c2336c8fcbc (diff) |
Make RippleDrawable as the only background drawable to be borderless
If we use LayerDrawable with RippleDrawable as one of its layer, due to
the RippleDrawable is a borderless drawable, the entire LayerDrawable
would try to render outside of the views bound where you'd see a circle
over the footer buttons.
By moving the adaptiveIcon as the ImageView's source and use
RippleDrawable as the only background drawable, we're able to keep the
RippleDrawable as borderless, and won't see the AdaptiveIconDrawable
being rendered over the footer view.
Bug: 361454352
Test: manual. Maxout the display and font size and view the a11yMenu on
phone in landscape mode, verify no overlapping images on footer view.
Also verify the Ripple affect is still borderless.
Flag: EXEMPT low risk bugfix
Change-Id: I8c30dab3c52b3c821fdb067d93b755a4ed040587
Diffstat (limited to 'packages/SystemUI/accessibility')
17 files changed, 80 insertions, 143 deletions
diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_assistant_24dp.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_assistant.xml index 9c3417fde80a..6408a122a99e 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_assistant_24dp.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_assistant.xml @@ -1,6 +1,6 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="108dp" + android:height="108dp" android:viewportWidth="24.0" android:viewportHeight="24.0" android:tint="@color/colorControlNormal"> diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_brightness_down_24dp.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_brightness_down.xml index a64a0d18acd1..f13239cf78fb 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_brightness_down_24dp.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_brightness_down.xml @@ -1,6 +1,6 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="108dp" + android:height="108dp" android:viewportWidth="24.0" android:viewportHeight="24.0" android:tint="@color/colorControlNormal"> diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_brightness_up_24dp.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_brightness_up.xml index 40423c7c35dd..a5d15f96759f 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_brightness_up_24dp.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_brightness_up.xml @@ -15,8 +15,8 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="108dp" + android:height="108dp" android:viewportWidth="24.0" android:viewportHeight="24.0" android:tint="@color/colorControlNormal"> diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_lock_24dp.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_lock.xml index a0f7b5d04379..212763283718 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_lock_24dp.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_lock.xml @@ -1,6 +1,6 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="108dp" + android:height="108dp" android:viewportWidth="24.0" android:viewportHeight="24.0" android:tint="@color/colorControlNormal"> diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_notifications_24dp.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_notifications.xml index 8757f22f2af6..62c8d1ddaba2 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_notifications_24dp.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_notifications.xml @@ -1,6 +1,6 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="108dp" + android:height="108dp" android:viewportWidth="24.0" android:viewportHeight="24.0" android:tint="@color/colorControlNormal"> diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_power_24dp.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_power.xml index 049013aa9763..ed11b44cc25a 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_power_24dp.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_power.xml @@ -1,6 +1,6 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="108dp" + android:height="108dp" android:viewportWidth="24.0" android:viewportHeight="24.0" android:tint="@color/colorControlNormal"> diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_quick_settings_24dp.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_quick_settings.xml index 4f25e7d80bd6..2da63a61e84e 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_quick_settings_24dp.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_quick_settings.xml @@ -15,8 +15,8 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="108dp" + android:height="108dp" android:viewportWidth="24.0" android:viewportHeight="24.0" android:tint="@color/colorControlNormal"> diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_recent_apps_24dp.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_recent_apps.xml index 38234c05d591..9763b8eefbe2 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_recent_apps_24dp.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_recent_apps.xml @@ -15,8 +15,8 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="108dp" + android:height="108dp" android:viewportWidth="24" android:viewportHeight="24" android:tint="@color/colorControlNormal"> diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_screenshot_24dp.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_screenshot.xml index 6d7f49cf6919..2bfbd5b48991 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_screenshot_24dp.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_screenshot.xml @@ -15,8 +15,8 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="108dp" + android:height="108dp" android:viewportWidth="24.0" android:viewportHeight="24.0" android:tint="@color/colorControlNormal"> diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_settings_24dp.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_settings.xml index 5ed6f19051bc..4ca9bfc7900d 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_settings_24dp.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_settings.xml @@ -15,8 +15,8 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="108dp" + android:height="108dp" android:viewportWidth="24.0" android:viewportHeight="24.0" android:tint="@color/colorControlNormal"> diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_volume_down_24dp.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_volume_down.xml index 16653e8e9d3e..f924e5eb9493 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_volume_down_24dp.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_volume_down.xml @@ -15,8 +15,8 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="108dp" + android:height="108dp" android:viewportWidth="24.0" android:viewportHeight="24.0" android:tint="@color/colorControlNormal"> diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_volume_up_24dp.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_volume_up.xml index e572c6adea33..41fe35184a2a 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_volume_up_24dp.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/ic_logo_a11y_volume_up.xml @@ -15,8 +15,8 @@ --> <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" + android:width="108dp" + android:height="108dp" android:viewportWidth="24.0" android:viewportHeight="24.0" android:tint="@color/colorControlNormal"> diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/menuitem_background_ripple.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/menuitem_background_ripple.xml new file mode 100644 index 000000000000..6cab464f0a9c --- /dev/null +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/drawable/menuitem_background_ripple.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?><!-- + ~ Copyright (C) 2024 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="@color/ripple_material_color" />
\ No newline at end of file diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/layout/grid_item.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/layout/grid_item.xml index 3c73eca732a1..a1130e6e2285 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/layout/grid_item.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/layout/grid_item.xml @@ -12,7 +12,8 @@ android:layout_height="@dimen/image_button_height" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" - android:scaleType="fitCenter"/> + android:scaleType="fitCenter" + android:background="@drawable/menuitem_background_ripple" /> <TextView android:id="@+id/shortcutLabel" diff --git a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/model/A11yMenuShortcut.java b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/model/A11yMenuShortcut.java index c698d18bfde8..11ce41ee4d96 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/model/A11yMenuShortcut.java +++ b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/model/A11yMenuShortcut.java @@ -53,73 +53,73 @@ public class A11yMenuShortcut { /** Map stores all shortcut resource IDs that is in matching order of defined shortcut. */ private static final Map<ShortcutId, int[]> sShortcutResource = Map.ofEntries( Map.entry(ShortcutId.ID_ASSISTANT_VALUE, new int[] { - R.drawable.ic_logo_a11y_assistant_24dp, + R.drawable.ic_logo_a11y_assistant, R.color.assistant_color, R.string.assistant_utterance, R.string.assistant_label, }), Map.entry(ShortcutId.ID_A11YSETTING_VALUE, new int[] { - R.drawable.ic_logo_a11y_settings_24dp, + R.drawable.ic_logo_a11y_settings, R.color.a11y_settings_color, R.string.a11y_settings_label, R.string.a11y_settings_label, }), Map.entry(ShortcutId.ID_POWER_VALUE, new int[] { - R.drawable.ic_logo_a11y_power_24dp, + R.drawable.ic_logo_a11y_power, R.color.power_color, R.string.power_utterance, R.string.power_label, }), Map.entry(ShortcutId.ID_RECENT_VALUE, new int[] { - R.drawable.ic_logo_a11y_recent_apps_24dp, + R.drawable.ic_logo_a11y_recent_apps, R.color.recent_apps_color, R.string.recent_apps_label, R.string.recent_apps_label, }), Map.entry(ShortcutId.ID_LOCKSCREEN_VALUE, new int[] { - R.drawable.ic_logo_a11y_lock_24dp, + R.drawable.ic_logo_a11y_lock, R.color.lockscreen_color, R.string.lockscreen_label, R.string.lockscreen_label, }), Map.entry(ShortcutId.ID_QUICKSETTING_VALUE, new int[] { - R.drawable.ic_logo_a11y_quick_settings_24dp, + R.drawable.ic_logo_a11y_quick_settings, R.color.quick_settings_color, R.string.quick_settings_label, R.string.quick_settings_label, }), Map.entry(ShortcutId.ID_NOTIFICATION_VALUE, new int[] { - R.drawable.ic_logo_a11y_notifications_24dp, + R.drawable.ic_logo_a11y_notifications, R.color.notifications_color, R.string.notifications_label, R.string.notifications_label, }), Map.entry(ShortcutId.ID_SCREENSHOT_VALUE, new int[] { - R.drawable.ic_logo_a11y_screenshot_24dp, + R.drawable.ic_logo_a11y_screenshot, R.color.screenshot_color, R.string.screenshot_utterance, R.string.screenshot_label, }), Map.entry(ShortcutId.ID_BRIGHTNESS_UP_VALUE, new int[] { - R.drawable.ic_logo_a11y_brightness_up_24dp, + R.drawable.ic_logo_a11y_brightness_up, R.color.brightness_color, R.string.brightness_up_label, R.string.brightness_up_label, }), Map.entry(ShortcutId.ID_BRIGHTNESS_DOWN_VALUE, new int[] { - R.drawable.ic_logo_a11y_brightness_down_24dp, + R.drawable.ic_logo_a11y_brightness_down, R.color.brightness_color, R.string.brightness_down_label, R.string.brightness_down_label, }), Map.entry(ShortcutId.ID_VOLUME_UP_VALUE, new int[] { - R.drawable.ic_logo_a11y_volume_up_24dp, + R.drawable.ic_logo_a11y_volume_up, R.color.volume_color, R.string.volume_up_label, R.string.volume_up_label, }), Map.entry(ShortcutId.ID_VOLUME_DOWN_VALUE, new int[] { - R.drawable.ic_logo_a11y_volume_down_24dp, + R.drawable.ic_logo_a11y_volume_down, R.color.volume_color, R.string.volume_down_label, R.string.volume_down_label, diff --git a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/utils/ShortcutDrawableUtils.java b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/utils/ShortcutDrawableUtils.java deleted file mode 100644 index 28ba4b54107f..000000000000 --- a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/utils/ShortcutDrawableUtils.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.systemui.accessibility.accessibilitymenu.utils; - -import android.content.Context; -import android.content.res.ColorStateList; -import android.graphics.Bitmap; -import android.graphics.Bitmap.Config; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Paint.Style; -import android.graphics.drawable.AdaptiveIconDrawable; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.ColorDrawable; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.LayerDrawable; -import android.graphics.drawable.RippleDrawable; - -import com.android.systemui.accessibility.accessibilitymenu.R; - -/** Creates background drawable for a11y menu shortcut. */ -public class ShortcutDrawableUtils { - - /** - * To make the circular background of shortcut icons have higher resolution. The higher value of - * LENGTH is, the higher resolution of the circular background are. - */ - private static final int LENGTH = 480; - - private static final int RADIUS = LENGTH / 2; - private static final int COORDINATE = LENGTH / 2; - private static final int RIPPLE_COLOR_ID = R.color.ripple_material_color; - - private final Context mContext; - private final ColorStateList mRippleColorStateList; - - // Placeholder of drawable to prevent NullPointerException - private final ColorDrawable mTransparentDrawable = new ColorDrawable(Color.TRANSPARENT); - - public ShortcutDrawableUtils(Context context) { - this.mContext = context; - - int rippleColor = context.getColor(RIPPLE_COLOR_ID); - mRippleColorStateList = ColorStateList.valueOf(rippleColor); - } - - /** - * Creates a circular drawable in specific color for shortcut. - * - * @param colorResId color resource ID - * @return drawable circular drawable - */ - public Drawable createCircularDrawable(int colorResId) { - Bitmap output = Bitmap.createBitmap(LENGTH, LENGTH, Config.ARGB_8888); - Canvas canvas = new Canvas(output); - int color = mContext.getColor(colorResId); - Paint paint = new Paint(); - paint.setColor(color); - paint.setStrokeCap(Paint.Cap.ROUND); - paint.setStyle(Style.FILL); - canvas.drawCircle(COORDINATE, COORDINATE, RADIUS, paint); - - BitmapDrawable drawable = new BitmapDrawable(mContext.getResources(), output); - return drawable; - } - - /** - * Creates an adaptive icon drawable in specific color for shortcut. - * - * @param colorResId color resource ID - * @return drawable for adaptive icon - */ - public Drawable createAdaptiveIconDrawable(int colorResId) { - Drawable circleLayer = createCircularDrawable(colorResId); - RippleDrawable rippleLayer = new RippleDrawable(mRippleColorStateList, null, null); - - AdaptiveIconDrawable adaptiveIconDrawable = - new AdaptiveIconDrawable(circleLayer, mTransparentDrawable); - - Drawable[] layers = {adaptiveIconDrawable, rippleLayer}; - LayerDrawable drawable = new LayerDrawable(layers); - return drawable; - } -} diff --git a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuAdapter.java b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuAdapter.java index c333a7a5e33e..aa1bbbdada65 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuAdapter.java +++ b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuAdapter.java @@ -16,7 +16,12 @@ package com.android.systemui.accessibility.accessibilitymenu.view; +import android.content.res.Resources; import android.graphics.Rect; +import android.graphics.drawable.AdaptiveIconDrawable; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.InsetDrawable; import android.view.LayoutInflater; import android.view.TouchDelegate; import android.view.View; @@ -26,11 +31,12 @@ import android.widget.BaseAdapter; import android.widget.ImageButton; import android.widget.TextView; +import androidx.annotation.NonNull; + import com.android.systemui.accessibility.accessibilitymenu.AccessibilityMenuService; import com.android.systemui.accessibility.accessibilitymenu.R; import com.android.systemui.accessibility.accessibilitymenu.activity.A11yMenuSettingsActivity.A11yMenuPreferenceFragment; import com.android.systemui.accessibility.accessibilitymenu.model.A11yMenuShortcut; -import com.android.systemui.accessibility.accessibilitymenu.utils.ShortcutDrawableUtils; import java.util.List; @@ -43,16 +49,12 @@ public class A11yMenuAdapter extends BaseAdapter { private final AccessibilityMenuService mService; private final List<A11yMenuShortcut> mShortcutDataList; - private final ShortcutDrawableUtils mShortcutDrawableUtils; public A11yMenuAdapter( AccessibilityMenuService service, List<A11yMenuShortcut> shortcutDataList) { this.mService = service; this.mShortcutDataList = shortcutDataList; - - mShortcutDrawableUtils = new ShortcutDrawableUtils(service); - mLargeTextSize = service.getResources().getDimensionPixelOffset(R.dimen.large_label_text_size); } @@ -152,10 +154,10 @@ public class A11yMenuAdapter extends BaseAdapter { shortcutIconButton.setContentDescription( mService.getString(shortcutItem.imgContentDescription)); shortcutLabel.setText(shortcutItem.labelText); - shortcutIconButton.setImageResource(shortcutItem.imageSrc); - shortcutIconButton.setBackground( - mShortcutDrawableUtils.createAdaptiveIconDrawable(shortcutItem.imageColor)); + AdaptiveIconDrawable iconDrawable = getAdaptiveIconDrawable(convertView, + shortcutItem); + shortcutIconButton.setImageDrawable(iconDrawable); shortcutIconButton.setAccessibilityDelegate(new View.AccessibilityDelegate() { @Override @@ -167,4 +169,18 @@ public class A11yMenuAdapter extends BaseAdapter { }); } } + + @NonNull + private static AdaptiveIconDrawable getAdaptiveIconDrawable(@NonNull View convertView, + @NonNull A11yMenuShortcut shortcutItem) { + Resources resources = convertView.getResources(); + // Note: from the official guide, the foreground image of the adaptive icon should be + // sized at 108 x 108 dp + Drawable icon = resources.getDrawable(shortcutItem.imageSrc); + float inset = AdaptiveIconDrawable.getExtraInsetFraction(); + AdaptiveIconDrawable iconDrawable = new AdaptiveIconDrawable( + new ColorDrawable(resources.getColor(shortcutItem.imageColor)), + new InsetDrawable(icon, inset)); + return iconDrawable; + } } |