Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 248719c2 authored by PETER LIANG's avatar PETER LIANG Committed by Automerger Merge Worker
Browse files

Merge "Fix the position of a11y floating menu was not centered when switching...

Merge "Fix the position of a11y floating menu was not centered when switching the size under half oval type." into sc-dev am: 26873cab

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14748171

Change-Id: I8de04491508211b127ec9166c7e41dc853c81b83
parents 5ad825cf 26873cab
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -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
+4 −3
Original line number Diff line number Diff line
@@ -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>
+24 −6
Original line number Diff line number Diff line
@@ -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);
    }
+20 −8
Original line number Diff line number Diff line
@@ -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);
        }
    }
+1 −1
Original line number Diff line number Diff line
@@ -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;