diff options
5 files changed, 51 insertions, 25 deletions
diff --git a/packages/SystemUI/res/layout/accessibility_floating_menu_item.xml b/packages/SystemUI/res/layout/accessibility_floating_menu_item.xml index f7357b27af5f..2067f85249a2 100644 --- a/packages/SystemUI/res/layout/accessibility_floating_menu_item.xml +++ b/packages/SystemUI/res/layout/accessibility_floating_menu_item.xml @@ -19,8 +19,8 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingStart="@dimen/accessibility_floating_menu_padding" - android:paddingEnd="@dimen/accessibility_floating_menu_padding" + android:paddingStart="@dimen/accessibility_floating_menu_small_padding" + android:paddingEnd="@dimen/accessibility_floating_menu_small_padding" android:orientation="vertical" android:gravity="center"> @@ -29,9 +29,4 @@ android:layout_width="@dimen/accessibility_floating_menu_small_width_height" android:layout_height="@dimen/accessibility_floating_menu_small_width_height"/> - <View - android:id="@+id/transparent_divider" - android:layout_width="match_parent" - android:layout_height="@dimen/accessibility_floating_menu_padding"/> - </LinearLayout>
\ No newline at end of file diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index c0ebff6d638c..0be648f1b9bd 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -1468,16 +1468,17 @@ <dimen name="medium_content_padding_above_name">4dp</dimen> <!-- Accessibility floating menu --> - <dimen name="accessibility_floating_menu_elevation">5dp</dimen> + <dimen name="accessibility_floating_menu_elevation">3dp</dimen> <dimen name="accessibility_floating_menu_stroke_width">1dp</dimen> <dimen name="accessibility_floating_menu_stroke_inset">-2dp</dimen> <dimen name="accessibility_floating_menu_margin">16dp</dimen> - <dimen name="accessibility_floating_menu_padding">6dp</dimen> + <dimen name="accessibility_floating_menu_small_padding">6dp</dimen> <dimen name="accessibility_floating_menu_small_width_height">36dp</dimen> <dimen name="accessibility_floating_menu_small_single_radius">25dp</dimen> <dimen name="accessibility_floating_menu_small_multiple_radius">20dp</dimen> + <dimen name="accessibility_floating_menu_large_padding">8dp</dimen> <dimen name="accessibility_floating_menu_large_width_height">56dp</dimen> - <dimen name="accessibility_floating_menu_large_single_radius">33dp</dimen> + <dimen name="accessibility_floating_menu_large_single_radius">35dp</dimen> <dimen name="accessibility_floating_menu_large_multiple_radius">35dp</dimen> <dimen name="accessibility_floating_tooltip_arrow_width">8dp</dimen> diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuView.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuView.java index 86a37ecbc4a9..259a9f7c6f3b 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuView.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuView.java @@ -419,11 +419,13 @@ public class AccessibilityFloatingMenuView extends FrameLayout mSizeType = newSizeType; - updateIconSizeWith(newSizeType); + updateItemViewWith(newSizeType); updateRadiusWith(newSizeType, mRadiusType, mTargets.size()); // When the icon sized changed, the menu size and location will be impacted. updateLocationWith(mAlignment, mPercentageY); + updateScrollModeWith(hasExceededMaxLayoutHeight()); + updateOffsetWith(mShapeType, mAlignment); setSystemGestureExclusion(); fadeOut(); @@ -621,24 +623,35 @@ public class AccessibilityFloatingMenuView extends FrameLayout mScreenHeight = dm.heightPixels; mMargin = res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_margin); - mPadding = - res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_padding); mInset = res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_stroke_inset); mSquareScaledTouchSlop = sq(ViewConfiguration.get(getContext()).getScaledTouchSlop()); + + updateItemViewDimensionsWith(mSizeType); } - private void updateIconSizeWith(@SizeType int sizeType) { + private void updateItemViewDimensionsWith(@SizeType int sizeType) { final Resources res = getResources(); + final int paddingResId = + sizeType == SizeType.SMALL + ? R.dimen.accessibility_floating_menu_small_padding + : R.dimen.accessibility_floating_menu_large_padding; + mPadding = res.getDimensionPixelSize(paddingResId); + final int iconResId = sizeType == SizeType.SMALL ? R.dimen.accessibility_floating_menu_small_width_height : R.dimen.accessibility_floating_menu_large_width_height; mIconWidth = res.getDimensionPixelSize(iconResId); mIconHeight = mIconWidth; + } + + private void updateItemViewWith(@SizeType int sizeType) { + updateItemViewDimensionsWith(sizeType); + mAdapter.setItemPadding(mPadding); mAdapter.setIconWidthHeight(mIconWidth); mAdapter.notifyDataSetChanged(); } @@ -650,7 +663,6 @@ public class AccessibilityFloatingMenuView extends FrameLayout final LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); - layoutParams.setMargins(mMargin, mMargin, mMargin, mMargin); mListView.setLayoutParams(layoutParams); final InstantInsetLayerDrawable layerDrawable = new InstantInsetLayerDrawable(new Drawable[]{background}); @@ -665,6 +677,10 @@ public class AccessibilityFloatingMenuView extends FrameLayout } private void updateListView() { + final LayoutParams layoutParams = (FrameLayout.LayoutParams) mListView.getLayoutParams(); + layoutParams.setMargins(mMargin, mMargin, mMargin, mMargin); + mListView.setLayoutParams(layoutParams); + final int elevation = getResources().getDimensionPixelSize(R.dimen.accessibility_floating_menu_elevation); mListView.setElevation(elevation); @@ -697,11 +713,13 @@ public class AccessibilityFloatingMenuView extends FrameLayout updateDimensions(); updateListView(); - updateIconSizeWith(mSizeType); + updateItemViewWith(mSizeType); updateColor(); updateStrokeWith(newConfig.uiMode, mAlignment); updateLocationWith(mAlignment, mPercentageY); + updateRadiusWith(mSizeType, mRadiusType, mTargets.size()); updateScrollModeWith(hasExceededMaxLayoutHeight()); + setSystemGestureExclusion(); mLastConfiguration.setTo(newConfig); } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityTargetAdapter.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityTargetAdapter.java index 76106e7c2cf1..63cfd5123c96 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityTargetAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityTargetAdapter.java @@ -16,8 +16,6 @@ package com.android.systemui.accessibility.floatingmenu; -import static android.view.View.GONE; - import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -43,6 +41,7 @@ import java.util.List; */ public class AccessibilityTargetAdapter extends Adapter<ViewHolder> { private int mIconWidthHeight; + private int mItemPadding; private final List<AccessibilityTarget> mTargets; @IntDef({ @@ -84,6 +83,7 @@ public class AccessibilityTargetAdapter extends Adapter<ViewHolder> { final AccessibilityTarget target = mTargets.get(position); holder.mIconView.setBackground(target.getIcon()); holder.updateIconWidthHeight(mIconWidthHeight); + holder.updateItemPadding(mItemPadding, getItemCount()); holder.itemView.setOnClickListener((v) -> target.onSelected()); holder.itemView.setStateDescription(target.getStateDescription()); holder.itemView.setContentDescription(target.getLabel()); @@ -120,14 +120,16 @@ public class AccessibilityTargetAdapter extends Adapter<ViewHolder> { mIconWidthHeight = iconWidthHeight; } + public void setItemPadding(int itemPadding) { + mItemPadding = itemPadding; + } + static class ViewHolder extends RecyclerView.ViewHolder { final View mIconView; - final View mDivider; ViewHolder(View itemView) { super(itemView); mIconView = itemView.findViewById(R.id.icon_view); - mDivider = itemView.findViewById(R.id.transparent_divider); } void updateIconWidthHeight(int newValue) { @@ -139,21 +141,31 @@ public class AccessibilityTargetAdapter extends Adapter<ViewHolder> { layoutParams.height = newValue; mIconView.setLayoutParams(layoutParams); } + + void updateItemPadding(int padding, int size) { + itemView.setPaddingRelative(padding, padding, padding, padding); + } } static class TopViewHolder extends ViewHolder { TopViewHolder(View itemView) { super(itemView); - final int padding = itemView.getPaddingStart(); - itemView.setPaddingRelative(padding, padding, padding, 0); + } + + @Override + void updateItemPadding(int padding, int size) { + final int paddingBottom = size <= 2 ? padding : 0; + itemView.setPaddingRelative(padding, padding, padding, paddingBottom); } } static class BottomViewHolder extends ViewHolder { BottomViewHolder(View itemView) { super(itemView); - mDivider.setVisibility(GONE); - final int padding = itemView.getPaddingStart(); + } + + @Override + void updateItemPadding(int padding, int size) { itemView.setPaddingRelative(padding, 0, padding, padding); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuViewTest.java index 65acba9bba85..448211ed5274 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuViewTest.java @@ -122,7 +122,7 @@ public class AccessibilityFloatingMenuViewTest extends SysuiTestCase { final int margin = res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_margin); final int padding = - res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_padding); + res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_small_padding); final int iconWidthHeight = res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_small_width_height); final int menuWidth = padding * 2 + iconWidthHeight; |