launcher界面默认开启旋转
1、默认情况
launcher默认没有开启旋转,长按桌面–》home Settings中有开关可以打开是否允许旋转
<SwitchPreference android:key="pref_allowRotation" android:title="@string/allow_rotation_title" android:summary="@string/allow_rotation_desc" android:defaultValue="@bool/allow_rotation" android:persistent="true" />
如果要默认打开可以修改allow_rotation值为true(无效)。
2、recent UI界面旋转异常
当默认打开旋转后,home Settings里面的选项会消失。主界面可以正常旋转;但是近期任务界面旋转显示异常。
packages/apps/Launcher3/src/com/android/launcher3/states/RotationHelper.java中
直接返回true
public static boolean getAllowRotationDefaultValue(DeviceProfile deviceProfile) { // If the device's pixel density was scaled (usually via settings for A11y), use the // original dimensions to determine if rotation is allowed of not. float originalSmallestWidth = dpiFromPx( Math.min(deviceProfile.widthPx, deviceProfile.heightPx), DENSITY_DEVICE_STABLE); return true; }
public static final String ALLOW_ROTATION_PREFERENCE_KEY = "pref_allowRotation"; ... public static boolean getAllowRotationDefaultValue(Context context) { //默认支持旋转,这里直接return true if (context != null && context.getResources().getBoolean(R.bool.allow_rotation)){ return true; } // If the device's pixel density was scaled (usually via settings for A11y), use the // original dimensions to determine if rotation is allowed of not. Resources res = Resources.getSystem(); int originalSmallestWidth = res.getConfiguration().smallestScreenWidthDp * res.getDisplayMetrics().densityDpi / DENSITY_DEVICE_STABLE; return originalSmallestWidth >= 600; }
packages/apps/Launcher3/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java中
private void initFlags() { SysUINavigationMode.Mode currentMode = SysUINavigationMode.getMode(mContext); boolean rotationWatcherSupported = mOrientationListener.canDetectOrientation() && currentMode != TWO_BUTTONS; setFlag(FLAG_ROTATION_WATCHER_SUPPORTED, rotationWatcherSupported); // initialize external flags updateAutoRotateSetting(); updateHomeRotationSetting(); } ... private void updateHomeRotationSetting() { setFlag(FLAG_HOME_ROTATION_ALLOWED_IN_PREFS, mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, getAllowRotationDefaultValue(mContext)));//这里默认是false }
保持旋转设置一致即可