diff options
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; + } } |