Merge "Fix the position of a11y floating menu was not centered when switching the size under half oval type." into sc-dev
diff --git a/packages/SystemUI/res/layout/accessibility_floating_menu_item.xml b/packages/SystemUI/res/layout/accessibility_floating_menu_item.xml
index f7357b2..2067f85 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 c0ebff6..0be648f 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 86a37ec..259a9f7 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 @@
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 @@
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 @@
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 @@
}
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 @@
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 76106e7..63cfd51 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 @@
*/
public class AccessibilityTargetAdapter extends Adapter<ViewHolder> {
private int mIconWidthHeight;
+ private int mItemPadding;
private final List<AccessibilityTarget> mTargets;
@IntDef({
@@ -84,6 +83,7 @@
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 @@
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 @@
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 65acba9..448211e 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 @@
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;