Prevent rotation during quickscrub gesture.

Bug: 73486148
Change-Id: Ia435608484e49daf93ff4aa675da11ea4f0fd421
This commit is contained in:
Winson Chung
2018-02-15 11:33:53 -08:00
parent c36d6eefae
commit 9004912eaa
2 changed files with 16 additions and 5 deletions
@@ -33,6 +33,7 @@ import android.animation.RectEvaluator;
import android.annotation.TargetApi;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Resources;
import android.graphics.Matrix;
import android.graphics.Point;
@@ -280,6 +281,10 @@ public class WindowTransformSwipeHandler extends BaseSwipeInteractionHandler {
mWasLauncherAlreadyVisible = alreadyOnHome;
mLauncher = launcher;
// For the duration of the gesture, set the screen orientation to BEHIND to ensure that we
// do not rotate mid-quickscrub
mLauncher.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_BEHIND);
LauncherState startState = mLauncher.getStateManager().getState();
if (startState.disableRestore) {
startState = mLauncher.getStateManager().getRestState();
@@ -616,6 +621,9 @@ public class WindowTransformSwipeHandler extends BaseSwipeInteractionHandler {
mLauncherTransitionController = null;
mLauncherLayoutListener.setHandler(null);
mLauncherLayoutListener.close(false);
// Restore the requested orientation to the user preference after the gesture has ended
mLauncher.updateRequestedOrientation();
}
public void layoutListenerClosed() {
+8 -5
View File
@@ -371,11 +371,7 @@ public class Launcher extends BaseActivity
// For handling default keys
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
// On large interfaces, or on devices that a user has specifically enabled screen rotation,
// we want the screen to auto-rotate based on the current orientation
setRequestedOrientation(mRotationEnabled
? SCREEN_ORIENTATION_UNSPECIFIED : SCREEN_ORIENTATION_NOSENSOR);
updateRequestedOrientation();
setContentView(mLauncherView);
getRootView().dispatchInsets();
@@ -398,6 +394,13 @@ public class Launcher extends BaseActivity
TraceHelper.endSection("Launcher-onCreate");
}
public void updateRequestedOrientation() {
// On large interfaces, or on devices that a user has specifically enabled screen rotation,
// we want the screen to auto-rotate based on the current orientation
setRequestedOrientation(mRotationEnabled
? SCREEN_ORIENTATION_UNSPECIFIED : SCREEN_ORIENTATION_NOSENSOR);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
int diff = newConfig.diff(mOldConfig);