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

Commit 23f2e0ec authored by PETER LIANG's avatar PETER LIANG Committed by Android (Google) Code Review
Browse files

Merge "Support the feature of Drag to remove for the Accessibility Floating Menu(3/n)."

parents ef3f5826 b12f423b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -177,6 +177,7 @@
    <item type="id" name="action_move_bottom_right"/>
    <item type="id" name="action_move_to_edge_and_hide"/>
    <item type="id" name="action_move_out_edge_and_show"/>
    <item type="id" name="action_remove_menu"/>

    <!-- rounded corner view id -->
    <item type="id" name="rounded_corner_top_left"/>
+2 −0
Original line number Diff line number Diff line
@@ -2218,6 +2218,8 @@
    <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half">Move to edge and hide</string>
    <!-- Action in accessibility menu to move the accessibility floating button out the edge and show. [CHAR LIMIT=36]-->
    <string name="accessibility_floating_button_action_move_out_edge_and_show">Move out edge and show</string>
    <!-- Action in accessibility menu to remove the accessibility floating menu view on the screen. [CHAR LIMIT=36]-->
    <string name="accessibility_floating_button_action_remove_menu">Remove</string>
    <!-- Action in accessibility menu to toggle on/off the accessibility feature. [CHAR LIMIT=30]-->
    <string name="accessibility_floating_button_action_double_tap_to_toggle">toggle</string>

+4 −0
Original line number Diff line number Diff line
@@ -172,4 +172,8 @@ class DismissAnimationController implements ComponentCallbacks {
                R.dimen.dismiss_circle_small);
        mSizePercent = mMinDismissSize / maxDismissSize;
    }

    interface DismissCallback {
        void onDismiss();
    }
}
+15 −0
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@ import androidx.dynamicanimation.animation.SpringAnimation;
import androidx.dynamicanimation.animation.SpringForce;
import androidx.recyclerview.widget.RecyclerView;

import com.android.internal.util.Preconditions;

import java.util.HashMap;

/**
@@ -64,6 +66,7 @@ class MenuAnimationController {
    private final Handler mHandler;
    private boolean mIsMovedToEdge;
    private boolean mIsFadeEffectEnabled;
    private DismissAnimationController.DismissCallback mDismissCallback;

    // Cache the animations state of {@link DynamicAnimation.TRANSLATION_X} and {@link
    // DynamicAnimation.TRANSLATION_Y} to be well controlled by the touch handler
@@ -102,6 +105,11 @@ class MenuAnimationController {
        }
    }

    void setDismissCallback(
            DismissAnimationController.DismissCallback dismissCallback) {
        mDismissCallback = dismissCallback;
    }

    void moveToTopLeftPosition() {
        mIsMovedToEdge = false;
        final Rect draggableBounds = mMenuView.getMenuDraggableBounds();
@@ -132,6 +140,13 @@ class MenuAnimationController {
        constrainPositionAndUpdate(position);
    }

    void removeMenu() {
        Preconditions.checkArgument(mDismissCallback != null,
                "The dismiss callback should be initialized first.");

        mDismissCallback.onDismiss();
    }

    void flingMenuThenSpringToEdge(float x, float velocityX, float velocityY) {
        final boolean shouldMenuFlingLeft = isOnLeftSide()
                ? velocityX < ESCAPE_VELOCITY
+11 −0
Original line number Diff line number Diff line
@@ -84,6 +84,12 @@ class MenuItemAccessibilityDelegate extends RecyclerViewAccessibilityDelegate.It
                new AccessibilityNodeInfoCompat.AccessibilityActionCompat(moveEdgeId,
                        res.getString(moveEdgeTextResId));
        info.addAction(moveToOrOutEdge);

        final AccessibilityNodeInfoCompat.AccessibilityActionCompat removeMenu =
                new AccessibilityNodeInfoCompat.AccessibilityActionCompat(
                        R.id.action_remove_menu,
                        res.getString(R.string.accessibility_floating_button_action_remove_menu));
        info.addAction(removeMenu);
    }

    @Override
@@ -126,6 +132,11 @@ class MenuItemAccessibilityDelegate extends RecyclerViewAccessibilityDelegate.It
            return true;
        }

        if (action == R.id.action_remove_menu) {
            mAnimationController.removeMenu();
            return true;
        }

        return super.performAccessibilityAction(host, action, args);
    }
}
Loading