Merge "Set allowTouches after the fling animation end" into rvc-dev

This commit is contained in:
Tony Huang
2020-05-14 06:17:21 +00:00
committed by Android (Google) Code Review

View File

@@ -815,6 +815,7 @@ public class PipTouchHandler {
private class DefaultPipTouchGesture extends PipTouchGesture {
private final Point mStartPosition = new Point();
private final PointF mDelta = new PointF();
private boolean mShouldHideMenuAfterFling;
@Override
public void onDown(PipTouchState touchState) {
@@ -892,21 +893,17 @@ public class PipTouchHandler {
final float velocity = PointF.length(vel.x, vel.y);
if (touchState.isDragging()) {
Runnable endAction = null;
if (mMenuState != MENU_STATE_NONE) {
// If the menu is still visible, then just poke the menu so that
// it will timeout after the user stops touching it
mMenuController.showMenu(mMenuState, mMotionHelper.getBounds(),
true /* allowMenuTimeout */, willResizeMenu());
} else {
// If the menu is not visible, then we can still be showing the activity for the
// dismiss overlay, so just finish it after the animation completes
endAction = mMenuController::hideMenu;
}
mShouldHideMenuAfterFling = mMenuState == MENU_STATE_NONE;
mMotionHelper.flingToSnapTarget(vel.x, vel.y,
PipTouchHandler.this::updateDismissFraction /* updateAction */,
endAction /* endAction */);
this::flingEndAction /* endAction */);
} else if (mTouchState.isDoubleTap()) {
// Expand to fullscreen if this is a double tap
// the PiP should be frozen until the transition ends
@@ -927,6 +924,15 @@ public class PipTouchHandler {
}
return true;
}
private void flingEndAction() {
mTouchState.setAllowTouches(true);
if (mShouldHideMenuAfterFling) {
// If the menu is not visible, then we can still be showing the activity for the
// dismiss overlay, so just finish it after the animation completes
mMenuController.hideMenu();
}
}
};
/**