Loading src/com/android/launcher3/CellLayout.java +2 −1 Original line number Diff line number Diff line Loading @@ -845,7 +845,8 @@ public class CellLayout extends ViewGroup implements Transposable { * width in {@link DeviceProfile#calculateCellWidth(int, int)}. */ public int getUnusedHorizontalSpace() { return getMeasuredWidth() - getPaddingLeft() - getPaddingRight() - (mCountX * mCellWidth); return (mRotationMode.isTransposed ? getMeasuredHeight() : getMeasuredWidth()) - getPaddingLeft() - getPaddingRight() - (mCountX * mCellWidth); } public Drawable getScrimBackground() { Loading src/com/android/launcher3/Launcher.java +9 −10 Original line number Diff line number Diff line Loading @@ -303,6 +303,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, LauncherAppState app = LauncherAppState.getInstance(this); mOldConfig = new Configuration(getResources().getConfiguration()); mModel = app.setLauncher(this); mRotationHelper = new RotationHelper(this); InvariantDeviceProfile idp = app.getInvariantDeviceProfile(); initDeviceProfile(idp); idp.addOnChangeListener(this); Loading @@ -325,7 +326,6 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, setupViews(); mPopupDataProvider = new PopupDataProvider(this); mRotationHelper = new RotationHelper(this); mAppTransitionManager = LauncherAppTransitionManager.newInstance(this); boolean internalStateHandled = InternalStateHandler.handleCreate(this, getIntent()); Loading Loading @@ -396,12 +396,6 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, } } }); if (FeatureFlags.FAKE_LANDSCAPE_UI.get()) { WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.rotationAnimation = WindowManager.LayoutParams.ROTATION_ANIMATION_SEAMLESS; getWindow().setAttributes(lp); } } @Override Loading @@ -428,9 +422,13 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, super.onConfigurationChanged(newConfig); } private boolean supportsFakeLandscapeUI() { return FeatureFlags.FAKE_LANDSCAPE_UI.get() && !mRotationHelper.homeScreenCanRotate(); } @Override protected void reapplyUi() { if (FeatureFlags.FAKE_LANDSCAPE_UI.get()) { public void reapplyUi() { if (supportsFakeLandscapeUI()) { mRotationMode = mStableDeviceProfile == null ? RotationMode.NORMAL : UiFactory.getRotationMode(mDeviceProfile); } Loading Loading @@ -486,7 +484,8 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, mDeviceProfile = mDeviceProfile.getMultiWindowProfile(this, mwSize); } if (FeatureFlags.FAKE_LANDSCAPE_UI.get() && mDeviceProfile.isVerticalBarLayout() if (supportsFakeLandscapeUI() && mDeviceProfile.isVerticalBarLayout() && !mDeviceProfile.isMultiWindowMode) { mStableDeviceProfile = mDeviceProfile.inv.portraitProfile; mRotationMode = UiFactory.getRotationMode(mDeviceProfile); Loading src/com/android/launcher3/config/BaseFlags.java +1 −1 Original line number Diff line number Diff line Loading @@ -111,7 +111,7 @@ abstract class BaseFlags { "Show chip hints and gleams on the overview screen"); public static final TogglableFlag FAKE_LANDSCAPE_UI = new TogglableFlag( "FAKE_LANDSCAPE_UI", false, "FAKE_LANDSCAPE_UI", true, "Rotate launcher UI instead of using transposed layout"); public static void initialize(Context context) { Loading src/com/android/launcher3/states/RotationHelper.java +34 −9 Original line number Diff line number Diff line Loading @@ -20,13 +20,16 @@ import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_NOSENSOR; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; import static android.util.DisplayMetrics.DENSITY_DEVICE_STABLE; import android.app.Activity; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.content.res.Resources; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.util.UiThreadHelper; /** Loading @@ -49,7 +52,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener { public static final int REQUEST_ROTATE = 1; public static final int REQUEST_LOCK = 2; private final Activity mActivity; private final Launcher mLauncher; private final SharedPreferences mPrefs; private boolean mIgnoreAutoRotateSettings; Loading @@ -70,13 +73,13 @@ public class RotationHelper implements OnSharedPreferenceChangeListener { private int mLastActivityFlags = -1; public RotationHelper(Activity activity) { mActivity = activity; public RotationHelper(Launcher launcher) { mLauncher = launcher; // On large devices we do not handle auto-rotate differently. mIgnoreAutoRotateSettings = mActivity.getResources().getBoolean(R.bool.allow_rotation); mIgnoreAutoRotateSettings = mLauncher.getResources().getBoolean(R.bool.allow_rotation); if (!mIgnoreAutoRotateSettings) { mPrefs = Utilities.getPrefs(mActivity); mPrefs = Utilities.getPrefs(mLauncher); mPrefs.registerOnSharedPreferenceChangeListener(this); mAutoRotateEnabled = mPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, getAllowRotationDefaultValue()); Loading @@ -85,11 +88,32 @@ public class RotationHelper implements OnSharedPreferenceChangeListener { } } public boolean homeScreenCanRotate() { return mIgnoreAutoRotateSettings || mAutoRotateEnabled || mStateHandlerRequest != REQUEST_NONE; } private void updateRotationAnimation() { if (FeatureFlags.FAKE_LANDSCAPE_UI.get()) { WindowManager.LayoutParams lp = mLauncher.getWindow().getAttributes(); lp.rotationAnimation = homeScreenCanRotate() ? WindowManager.LayoutParams.ROTATION_ANIMATION_ROTATE : WindowManager.LayoutParams.ROTATION_ANIMATION_SEAMLESS; mLauncher.getWindow().setAttributes(lp); } } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { boolean wasRotationEnabled = mAutoRotateEnabled; mAutoRotateEnabled = mPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, getAllowRotationDefaultValue()); if (mAutoRotateEnabled != wasRotationEnabled) { notifyChange(); updateRotationAnimation(); mLauncher.reapplyUi(); } } public void setStateHandlerRequest(int request) { Loading @@ -109,7 +133,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener { // Used by tests only. public void forceAllowRotationForTesting(boolean allowRotation) { mIgnoreAutoRotateSettings = allowRotation || mActivity.getResources().getBoolean(R.bool.allow_rotation); allowRotation || mLauncher.getResources().getBoolean(R.bool.allow_rotation); notifyChange(); } Loading @@ -117,6 +141,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener { if (!mInitialized) { mInitialized = true; notifyChange(); updateRotationAnimation(); } } Loading Loading @@ -150,7 +175,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener { } if (activityFlags != mLastActivityFlags) { mLastActivityFlags = activityFlags; UiThreadHelper.setOrientationAsync(mActivity, activityFlags); UiThreadHelper.setOrientationAsync(mLauncher, activityFlags); } } Loading Loading
src/com/android/launcher3/CellLayout.java +2 −1 Original line number Diff line number Diff line Loading @@ -845,7 +845,8 @@ public class CellLayout extends ViewGroup implements Transposable { * width in {@link DeviceProfile#calculateCellWidth(int, int)}. */ public int getUnusedHorizontalSpace() { return getMeasuredWidth() - getPaddingLeft() - getPaddingRight() - (mCountX * mCellWidth); return (mRotationMode.isTransposed ? getMeasuredHeight() : getMeasuredWidth()) - getPaddingLeft() - getPaddingRight() - (mCountX * mCellWidth); } public Drawable getScrimBackground() { Loading
src/com/android/launcher3/Launcher.java +9 −10 Original line number Diff line number Diff line Loading @@ -303,6 +303,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, LauncherAppState app = LauncherAppState.getInstance(this); mOldConfig = new Configuration(getResources().getConfiguration()); mModel = app.setLauncher(this); mRotationHelper = new RotationHelper(this); InvariantDeviceProfile idp = app.getInvariantDeviceProfile(); initDeviceProfile(idp); idp.addOnChangeListener(this); Loading @@ -325,7 +326,6 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, setupViews(); mPopupDataProvider = new PopupDataProvider(this); mRotationHelper = new RotationHelper(this); mAppTransitionManager = LauncherAppTransitionManager.newInstance(this); boolean internalStateHandled = InternalStateHandler.handleCreate(this, getIntent()); Loading Loading @@ -396,12 +396,6 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, } } }); if (FeatureFlags.FAKE_LANDSCAPE_UI.get()) { WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.rotationAnimation = WindowManager.LayoutParams.ROTATION_ANIMATION_SEAMLESS; getWindow().setAttributes(lp); } } @Override Loading @@ -428,9 +422,13 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, super.onConfigurationChanged(newConfig); } private boolean supportsFakeLandscapeUI() { return FeatureFlags.FAKE_LANDSCAPE_UI.get() && !mRotationHelper.homeScreenCanRotate(); } @Override protected void reapplyUi() { if (FeatureFlags.FAKE_LANDSCAPE_UI.get()) { public void reapplyUi() { if (supportsFakeLandscapeUI()) { mRotationMode = mStableDeviceProfile == null ? RotationMode.NORMAL : UiFactory.getRotationMode(mDeviceProfile); } Loading Loading @@ -486,7 +484,8 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, mDeviceProfile = mDeviceProfile.getMultiWindowProfile(this, mwSize); } if (FeatureFlags.FAKE_LANDSCAPE_UI.get() && mDeviceProfile.isVerticalBarLayout() if (supportsFakeLandscapeUI() && mDeviceProfile.isVerticalBarLayout() && !mDeviceProfile.isMultiWindowMode) { mStableDeviceProfile = mDeviceProfile.inv.portraitProfile; mRotationMode = UiFactory.getRotationMode(mDeviceProfile); Loading
src/com/android/launcher3/config/BaseFlags.java +1 −1 Original line number Diff line number Diff line Loading @@ -111,7 +111,7 @@ abstract class BaseFlags { "Show chip hints and gleams on the overview screen"); public static final TogglableFlag FAKE_LANDSCAPE_UI = new TogglableFlag( "FAKE_LANDSCAPE_UI", false, "FAKE_LANDSCAPE_UI", true, "Rotate launcher UI instead of using transposed layout"); public static void initialize(Context context) { Loading
src/com/android/launcher3/states/RotationHelper.java +34 −9 Original line number Diff line number Diff line Loading @@ -20,13 +20,16 @@ import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_NOSENSOR; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; import static android.util.DisplayMetrics.DENSITY_DEVICE_STABLE; import android.app.Activity; import android.content.SharedPreferences; import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.content.res.Resources; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.util.UiThreadHelper; /** Loading @@ -49,7 +52,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener { public static final int REQUEST_ROTATE = 1; public static final int REQUEST_LOCK = 2; private final Activity mActivity; private final Launcher mLauncher; private final SharedPreferences mPrefs; private boolean mIgnoreAutoRotateSettings; Loading @@ -70,13 +73,13 @@ public class RotationHelper implements OnSharedPreferenceChangeListener { private int mLastActivityFlags = -1; public RotationHelper(Activity activity) { mActivity = activity; public RotationHelper(Launcher launcher) { mLauncher = launcher; // On large devices we do not handle auto-rotate differently. mIgnoreAutoRotateSettings = mActivity.getResources().getBoolean(R.bool.allow_rotation); mIgnoreAutoRotateSettings = mLauncher.getResources().getBoolean(R.bool.allow_rotation); if (!mIgnoreAutoRotateSettings) { mPrefs = Utilities.getPrefs(mActivity); mPrefs = Utilities.getPrefs(mLauncher); mPrefs.registerOnSharedPreferenceChangeListener(this); mAutoRotateEnabled = mPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, getAllowRotationDefaultValue()); Loading @@ -85,11 +88,32 @@ public class RotationHelper implements OnSharedPreferenceChangeListener { } } public boolean homeScreenCanRotate() { return mIgnoreAutoRotateSettings || mAutoRotateEnabled || mStateHandlerRequest != REQUEST_NONE; } private void updateRotationAnimation() { if (FeatureFlags.FAKE_LANDSCAPE_UI.get()) { WindowManager.LayoutParams lp = mLauncher.getWindow().getAttributes(); lp.rotationAnimation = homeScreenCanRotate() ? WindowManager.LayoutParams.ROTATION_ANIMATION_ROTATE : WindowManager.LayoutParams.ROTATION_ANIMATION_SEAMLESS; mLauncher.getWindow().setAttributes(lp); } } @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { boolean wasRotationEnabled = mAutoRotateEnabled; mAutoRotateEnabled = mPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, getAllowRotationDefaultValue()); if (mAutoRotateEnabled != wasRotationEnabled) { notifyChange(); updateRotationAnimation(); mLauncher.reapplyUi(); } } public void setStateHandlerRequest(int request) { Loading @@ -109,7 +133,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener { // Used by tests only. public void forceAllowRotationForTesting(boolean allowRotation) { mIgnoreAutoRotateSettings = allowRotation || mActivity.getResources().getBoolean(R.bool.allow_rotation); allowRotation || mLauncher.getResources().getBoolean(R.bool.allow_rotation); notifyChange(); } Loading @@ -117,6 +141,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener { if (!mInitialized) { mInitialized = true; notifyChange(); updateRotationAnimation(); } } Loading Loading @@ -150,7 +175,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener { } if (activityFlags != mLastActivityFlags) { mLastActivityFlags = activityFlags; UiThreadHelper.setOrientationAsync(mActivity, activityFlags); UiThreadHelper.setOrientationAsync(mLauncher, activityFlags); } } Loading