Loading packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationController.java→packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationController.java +4 −4 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ import com.android.wm.shell.common.magnetictarget.MagnetizedObject; * Controls the interaction between {@link MagnetizedObject} and * {@link MagnetizedObject.MagneticTarget}. */ class DismissAnimationController { class DragToInteractAnimationController { private static final boolean ENABLE_FLING_TO_DISMISS_MENU = false; private static final float COMPLETELY_OPAQUE = 1.0f; private static final float COMPLETELY_TRANSPARENT = 0.0f; Loading @@ -45,7 +45,7 @@ class DismissAnimationController { private float mMinDismissSize; private float mSizePercent; DismissAnimationController(DismissView dismissView, MenuView menuView) { DragToInteractAnimationController(DismissView dismissView, MenuView menuView) { mDismissView = dismissView; mDismissView.setPivotX(dismissView.getWidth() / 2.0f); mDismissView.setPivotY(dismissView.getHeight() / 2.0f); Loading Loading @@ -127,7 +127,7 @@ class DismissAnimationController { * @param event that move the magnetized object which is also the menu list view. * @return true if the location of the motion events moves within the magnetic field of a * target, but false if didn't set * {@link DismissAnimationController#setMagnetListener(MagnetizedObject.MagnetListener)}. * {@link DragToInteractAnimationController#setMagnetListener(MagnetizedObject.MagnetListener)}. */ boolean maybeConsumeMoveMotionEvent(MotionEvent event) { return mMagnetizedObject.maybeConsumeMotionEvent(event); Loading @@ -140,7 +140,7 @@ class DismissAnimationController { * @param event that move the magnetized object which is also the menu list view. * @return true if the location of the motion events moves within the magnetic field of a * target, but false if didn't set * {@link DismissAnimationController#setMagnetListener(MagnetizedObject.MagnetListener)}. * {@link DragToInteractAnimationController#setMagnetListener(MagnetizedObject.MagnetListener)}. */ boolean maybeConsumeUpMotionEvent(MotionEvent event) { return mMagnetizedObject.maybeConsumeMotionEvent(event); Loading packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationController.java +2 −2 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ class MenuAnimationController { private final ValueAnimator mFadeOutAnimator; private final Handler mHandler; private boolean mIsFadeEffectEnabled; private DismissAnimationController.DismissCallback mDismissCallback; private DragToInteractAnimationController.DismissCallback mDismissCallback; private Runnable mSpringAnimationsEndAction; // Cache the animations state of {@link DynamicAnimation.TRANSLATION_X} and {@link Loading Loading @@ -171,7 +171,7 @@ class MenuAnimationController { } void setDismissCallback( DismissAnimationController.DismissCallback dismissCallback) { DragToInteractAnimationController.DismissCallback dismissCallback) { mDismissCallback = dismissCallback; } Loading packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandler.java +11 −9 Original line number Diff line number Diff line Loading @@ -40,13 +40,13 @@ class MenuListViewTouchHandler implements RecyclerView.OnItemTouchListener { private final PointF mMenuTranslationDown = new PointF(); private boolean mIsDragging = false; private float mTouchSlop; private final DismissAnimationController mDismissAnimationController; private final DragToInteractAnimationController mDragToInteractAnimationController; private Optional<Runnable> mOnActionDownEnd = Optional.empty(); MenuListViewTouchHandler(MenuAnimationController menuAnimationController, DismissAnimationController dismissAnimationController) { DragToInteractAnimationController dragToInteractAnimationController) { mMenuAnimationController = menuAnimationController; mDismissAnimationController = dismissAnimationController; mDragToInteractAnimationController = dragToInteractAnimationController; } @Override Loading @@ -67,7 +67,7 @@ class MenuListViewTouchHandler implements RecyclerView.OnItemTouchListener { mMenuTranslationDown.set(menuView.getTranslationX(), menuView.getTranslationY()); mMenuAnimationController.cancelAnimations(); mDismissAnimationController.maybeConsumeDownMotionEvent(motionEvent); mDragToInteractAnimationController.maybeConsumeDownMotionEvent(motionEvent); mOnActionDownEnd.ifPresent(Runnable::run); break; Loading @@ -78,9 +78,10 @@ class MenuListViewTouchHandler implements RecyclerView.OnItemTouchListener { mMenuAnimationController.onDraggingStart(); } mDismissAnimationController.showDismissView(/* show= */ true); mDragToInteractAnimationController.showDismissView(/* show= */ true); if (!mDismissAnimationController.maybeConsumeMoveMotionEvent(motionEvent)) { if (!mDragToInteractAnimationController.maybeConsumeMoveMotionEvent( motionEvent)) { mMenuAnimationController.moveToPositionX(mMenuTranslationDown.x + dx); mMenuAnimationController.moveToPositionYIfNeeded( mMenuTranslationDown.y + dy); Loading @@ -94,17 +95,18 @@ class MenuListViewTouchHandler implements RecyclerView.OnItemTouchListener { mIsDragging = false; if (mMenuAnimationController.maybeMoveToEdgeAndHide(endX)) { mDismissAnimationController.showDismissView(/* show= */ false); mDragToInteractAnimationController.showDismissView(/* show= */ false); mMenuAnimationController.fadeOutIfEnabled(); return true; } if (!mDismissAnimationController.maybeConsumeUpMotionEvent(motionEvent)) { if (!mDragToInteractAnimationController.maybeConsumeUpMotionEvent( motionEvent)) { mVelocityTracker.computeCurrentVelocity(VELOCITY_UNIT_SECONDS); mMenuAnimationController.flingMenuThenSpringToEdge(endX, mVelocityTracker.getXVelocity(), mVelocityTracker.getYVelocity()); mDismissAnimationController.showDismissView(/* show= */ false); mDragToInteractAnimationController.showDismissView(/* show= */ false); } // Avoid triggering the listener of the item. Loading packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayer.java +9 −8 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ class MenuViewLayer extends FrameLayout implements private final Handler mHandler = new Handler(Looper.getMainLooper()); private final IAccessibilityFloatingMenu mFloatingMenu; private final SecureSettings mSecureSettings; private final DismissAnimationController mDismissAnimationController; private final DragToInteractAnimationController mDragToInteractAnimationController; private final MenuViewModel mMenuViewModel; private final Observer<Boolean> mDockTooltipObserver = this::onDockTooltipVisibilityChanged; Loading Loading @@ -188,29 +188,30 @@ class MenuViewLayer extends FrameLayout implements mMenuAnimationController.setSpringAnimationsEndAction(this::onSpringAnimationsEndAction); mDismissView = new DismissView(context); DismissViewUtils.setup(mDismissView); mDismissAnimationController = new DismissAnimationController(mDismissView, mMenuView); mDismissAnimationController.setMagnetListener(new MagnetizedObject.MagnetListener() { mDragToInteractAnimationController = new DragToInteractAnimationController( mDismissView, mMenuView); mDragToInteractAnimationController.setMagnetListener(new MagnetizedObject.MagnetListener() { @Override public void onStuckToTarget(@NonNull MagnetizedObject.MagneticTarget target) { mDismissAnimationController.animateDismissMenu(/* scaleUp= */ true); mDragToInteractAnimationController.animateDismissMenu(/* scaleUp= */ true); } @Override public void onUnstuckFromTarget(@NonNull MagnetizedObject.MagneticTarget target, float velocityX, float velocityY, boolean wasFlungOut) { mDismissAnimationController.animateDismissMenu(/* scaleUp= */ false); mDragToInteractAnimationController.animateDismissMenu(/* scaleUp= */ false); } @Override public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target) { hideMenuAndShowMessage(); mDismissView.hide(); mDismissAnimationController.animateDismissMenu(/* scaleUp= */ false); mDragToInteractAnimationController.animateDismissMenu(/* scaleUp= */ false); } }); mMenuListViewTouchHandler = new MenuListViewTouchHandler(mMenuAnimationController, mDismissAnimationController); mDragToInteractAnimationController); mMenuView.addOnItemTouchListenerToList(mMenuListViewTouchHandler); mMenuView.setMoveToTuckedListener(this); Loading Loading @@ -243,7 +244,7 @@ class MenuViewLayer extends FrameLayout implements @Override public void onConfigurationChanged(@NonNull Configuration newConfig) { mDismissView.updateResources(); mDismissAnimationController.updateResources(); mDragToInteractAnimationController.updateResources(); } @Override Loading packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationControllerTest.java→packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java +7 −6 Original line number Diff line number Diff line Loading @@ -40,12 +40,12 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; /** Tests for {@link DismissAnimationController}. */ /** Tests for {@link DragToInteractAnimationController}. */ @SmallTest @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper public class DismissAnimationControllerTest extends SysuiTestCase { private DismissAnimationController mDismissAnimationController; public class DragToInteractAnimationControllerTest extends SysuiTestCase { private DragToInteractAnimationController mDragToInteractAnimationController; private DismissView mDismissView; @Rule Loading @@ -65,19 +65,20 @@ public class DismissAnimationControllerTest extends SysuiTestCase { stubMenuViewAppearance); mDismissView = spy(new DismissView(mContext)); DismissViewUtils.setup(mDismissView); mDismissAnimationController = new DismissAnimationController(mDismissView, stubMenuView); mDragToInteractAnimationController = new DragToInteractAnimationController( mDismissView, stubMenuView); } @Test public void showDismissView_success() { mDismissAnimationController.showDismissView(true); mDragToInteractAnimationController.showDismissView(true); verify(mDismissView).show(); } @Test public void hideDismissView_success() { mDismissAnimationController.showDismissView(false); mDragToInteractAnimationController.showDismissView(false); verify(mDismissView).hide(); } Loading Loading
packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationController.java→packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationController.java +4 −4 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ import com.android.wm.shell.common.magnetictarget.MagnetizedObject; * Controls the interaction between {@link MagnetizedObject} and * {@link MagnetizedObject.MagneticTarget}. */ class DismissAnimationController { class DragToInteractAnimationController { private static final boolean ENABLE_FLING_TO_DISMISS_MENU = false; private static final float COMPLETELY_OPAQUE = 1.0f; private static final float COMPLETELY_TRANSPARENT = 0.0f; Loading @@ -45,7 +45,7 @@ class DismissAnimationController { private float mMinDismissSize; private float mSizePercent; DismissAnimationController(DismissView dismissView, MenuView menuView) { DragToInteractAnimationController(DismissView dismissView, MenuView menuView) { mDismissView = dismissView; mDismissView.setPivotX(dismissView.getWidth() / 2.0f); mDismissView.setPivotY(dismissView.getHeight() / 2.0f); Loading Loading @@ -127,7 +127,7 @@ class DismissAnimationController { * @param event that move the magnetized object which is also the menu list view. * @return true if the location of the motion events moves within the magnetic field of a * target, but false if didn't set * {@link DismissAnimationController#setMagnetListener(MagnetizedObject.MagnetListener)}. * {@link DragToInteractAnimationController#setMagnetListener(MagnetizedObject.MagnetListener)}. */ boolean maybeConsumeMoveMotionEvent(MotionEvent event) { return mMagnetizedObject.maybeConsumeMotionEvent(event); Loading @@ -140,7 +140,7 @@ class DismissAnimationController { * @param event that move the magnetized object which is also the menu list view. * @return true if the location of the motion events moves within the magnetic field of a * target, but false if didn't set * {@link DismissAnimationController#setMagnetListener(MagnetizedObject.MagnetListener)}. * {@link DragToInteractAnimationController#setMagnetListener(MagnetizedObject.MagnetListener)}. */ boolean maybeConsumeUpMotionEvent(MotionEvent event) { return mMagnetizedObject.maybeConsumeMotionEvent(event); Loading
packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuAnimationController.java +2 −2 Original line number Diff line number Diff line Loading @@ -73,7 +73,7 @@ class MenuAnimationController { private final ValueAnimator mFadeOutAnimator; private final Handler mHandler; private boolean mIsFadeEffectEnabled; private DismissAnimationController.DismissCallback mDismissCallback; private DragToInteractAnimationController.DismissCallback mDismissCallback; private Runnable mSpringAnimationsEndAction; // Cache the animations state of {@link DynamicAnimation.TRANSLATION_X} and {@link Loading Loading @@ -171,7 +171,7 @@ class MenuAnimationController { } void setDismissCallback( DismissAnimationController.DismissCallback dismissCallback) { DragToInteractAnimationController.DismissCallback dismissCallback) { mDismissCallback = dismissCallback; } Loading
packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuListViewTouchHandler.java +11 −9 Original line number Diff line number Diff line Loading @@ -40,13 +40,13 @@ class MenuListViewTouchHandler implements RecyclerView.OnItemTouchListener { private final PointF mMenuTranslationDown = new PointF(); private boolean mIsDragging = false; private float mTouchSlop; private final DismissAnimationController mDismissAnimationController; private final DragToInteractAnimationController mDragToInteractAnimationController; private Optional<Runnable> mOnActionDownEnd = Optional.empty(); MenuListViewTouchHandler(MenuAnimationController menuAnimationController, DismissAnimationController dismissAnimationController) { DragToInteractAnimationController dragToInteractAnimationController) { mMenuAnimationController = menuAnimationController; mDismissAnimationController = dismissAnimationController; mDragToInteractAnimationController = dragToInteractAnimationController; } @Override Loading @@ -67,7 +67,7 @@ class MenuListViewTouchHandler implements RecyclerView.OnItemTouchListener { mMenuTranslationDown.set(menuView.getTranslationX(), menuView.getTranslationY()); mMenuAnimationController.cancelAnimations(); mDismissAnimationController.maybeConsumeDownMotionEvent(motionEvent); mDragToInteractAnimationController.maybeConsumeDownMotionEvent(motionEvent); mOnActionDownEnd.ifPresent(Runnable::run); break; Loading @@ -78,9 +78,10 @@ class MenuListViewTouchHandler implements RecyclerView.OnItemTouchListener { mMenuAnimationController.onDraggingStart(); } mDismissAnimationController.showDismissView(/* show= */ true); mDragToInteractAnimationController.showDismissView(/* show= */ true); if (!mDismissAnimationController.maybeConsumeMoveMotionEvent(motionEvent)) { if (!mDragToInteractAnimationController.maybeConsumeMoveMotionEvent( motionEvent)) { mMenuAnimationController.moveToPositionX(mMenuTranslationDown.x + dx); mMenuAnimationController.moveToPositionYIfNeeded( mMenuTranslationDown.y + dy); Loading @@ -94,17 +95,18 @@ class MenuListViewTouchHandler implements RecyclerView.OnItemTouchListener { mIsDragging = false; if (mMenuAnimationController.maybeMoveToEdgeAndHide(endX)) { mDismissAnimationController.showDismissView(/* show= */ false); mDragToInteractAnimationController.showDismissView(/* show= */ false); mMenuAnimationController.fadeOutIfEnabled(); return true; } if (!mDismissAnimationController.maybeConsumeUpMotionEvent(motionEvent)) { if (!mDragToInteractAnimationController.maybeConsumeUpMotionEvent( motionEvent)) { mVelocityTracker.computeCurrentVelocity(VELOCITY_UNIT_SECONDS); mMenuAnimationController.flingMenuThenSpringToEdge(endX, mVelocityTracker.getXVelocity(), mVelocityTracker.getYVelocity()); mDismissAnimationController.showDismissView(/* show= */ false); mDragToInteractAnimationController.showDismissView(/* show= */ false); } // Avoid triggering the listener of the item. Loading
packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayer.java +9 −8 Original line number Diff line number Diff line Loading @@ -94,7 +94,7 @@ class MenuViewLayer extends FrameLayout implements private final Handler mHandler = new Handler(Looper.getMainLooper()); private final IAccessibilityFloatingMenu mFloatingMenu; private final SecureSettings mSecureSettings; private final DismissAnimationController mDismissAnimationController; private final DragToInteractAnimationController mDragToInteractAnimationController; private final MenuViewModel mMenuViewModel; private final Observer<Boolean> mDockTooltipObserver = this::onDockTooltipVisibilityChanged; Loading Loading @@ -188,29 +188,30 @@ class MenuViewLayer extends FrameLayout implements mMenuAnimationController.setSpringAnimationsEndAction(this::onSpringAnimationsEndAction); mDismissView = new DismissView(context); DismissViewUtils.setup(mDismissView); mDismissAnimationController = new DismissAnimationController(mDismissView, mMenuView); mDismissAnimationController.setMagnetListener(new MagnetizedObject.MagnetListener() { mDragToInteractAnimationController = new DragToInteractAnimationController( mDismissView, mMenuView); mDragToInteractAnimationController.setMagnetListener(new MagnetizedObject.MagnetListener() { @Override public void onStuckToTarget(@NonNull MagnetizedObject.MagneticTarget target) { mDismissAnimationController.animateDismissMenu(/* scaleUp= */ true); mDragToInteractAnimationController.animateDismissMenu(/* scaleUp= */ true); } @Override public void onUnstuckFromTarget(@NonNull MagnetizedObject.MagneticTarget target, float velocityX, float velocityY, boolean wasFlungOut) { mDismissAnimationController.animateDismissMenu(/* scaleUp= */ false); mDragToInteractAnimationController.animateDismissMenu(/* scaleUp= */ false); } @Override public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target) { hideMenuAndShowMessage(); mDismissView.hide(); mDismissAnimationController.animateDismissMenu(/* scaleUp= */ false); mDragToInteractAnimationController.animateDismissMenu(/* scaleUp= */ false); } }); mMenuListViewTouchHandler = new MenuListViewTouchHandler(mMenuAnimationController, mDismissAnimationController); mDragToInteractAnimationController); mMenuView.addOnItemTouchListenerToList(mMenuListViewTouchHandler); mMenuView.setMoveToTuckedListener(this); Loading Loading @@ -243,7 +244,7 @@ class MenuViewLayer extends FrameLayout implements @Override public void onConfigurationChanged(@NonNull Configuration newConfig) { mDismissView.updateResources(); mDismissAnimationController.updateResources(); mDragToInteractAnimationController.updateResources(); } @Override Loading
packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DismissAnimationControllerTest.java→packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java +7 −6 Original line number Diff line number Diff line Loading @@ -40,12 +40,12 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; /** Tests for {@link DismissAnimationController}. */ /** Tests for {@link DragToInteractAnimationController}. */ @SmallTest @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper public class DismissAnimationControllerTest extends SysuiTestCase { private DismissAnimationController mDismissAnimationController; public class DragToInteractAnimationControllerTest extends SysuiTestCase { private DragToInteractAnimationController mDragToInteractAnimationController; private DismissView mDismissView; @Rule Loading @@ -65,19 +65,20 @@ public class DismissAnimationControllerTest extends SysuiTestCase { stubMenuViewAppearance); mDismissView = spy(new DismissView(mContext)); DismissViewUtils.setup(mDismissView); mDismissAnimationController = new DismissAnimationController(mDismissView, stubMenuView); mDragToInteractAnimationController = new DragToInteractAnimationController( mDismissView, stubMenuView); } @Test public void showDismissView_success() { mDismissAnimationController.showDismissView(true); mDragToInteractAnimationController.showDismissView(true); verify(mDismissView).show(); } @Test public void hideDismissView_success() { mDismissAnimationController.showDismissView(false); mDragToInteractAnimationController.showDismissView(false); verify(mDismissView).hide(); } Loading