Loading packages/SystemUI/res/values/ids.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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"/> Loading packages/SystemUI/res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -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> Loading packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationController.java +4 −0 Original line number Diff line number Diff line Loading @@ -172,4 +172,8 @@ class DismissAnimationController implements ComponentCallbacks { R.dimen.dismiss_circle_small); mSizePercent = mMinDismissSize / maxDismissSize; } interface DismissCallback { void onDismiss(); } } packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationController.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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 Loading Loading @@ -102,6 +105,11 @@ class MenuAnimationController { } } void setDismissCallback( DismissAnimationController.DismissCallback dismissCallback) { mDismissCallback = dismissCallback; } void moveToTopLeftPosition() { mIsMovedToEdge = false; final Rect draggableBounds = mMenuView.getMenuDraggableBounds(); Loading Loading @@ -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 Loading packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegate.java +11 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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
packages/SystemUI/res/values/ids.xml +1 −0 Original line number Diff line number Diff line Loading @@ -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"/> Loading
packages/SystemUI/res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -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> Loading
packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationController.java +4 −0 Original line number Diff line number Diff line Loading @@ -172,4 +172,8 @@ class DismissAnimationController implements ComponentCallbacks { R.dimen.dismiss_circle_small); mSizePercent = mMinDismissSize / maxDismissSize; } interface DismissCallback { void onDismiss(); } }
packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationController.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; /** Loading Loading @@ -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 Loading Loading @@ -102,6 +105,11 @@ class MenuAnimationController { } } void setDismissCallback( DismissAnimationController.DismissCallback dismissCallback) { mDismissCallback = dismissCallback; } void moveToTopLeftPosition() { mIsMovedToEdge = false; final Rect draggableBounds = mMenuView.getMenuDraggableBounds(); Loading Loading @@ -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 Loading
packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegate.java +11 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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); } }