校园网站方案,建筑行业网,wordpress给页面html后缀,企业官方网站推广一#xff09;需求-场景
Android13 实现允许桌面自动旋转 Android13 版本开始后#xff0c;支持屏幕自动旋转#xff0c;优化体验和兼容性#xff0c;适配不同屏幕 主界面可自动旋转 二#xff09;参考资料
android framework13-launcher3【06手机旋转问题】 Launcher默…一需求-场景
Android13 实现允许桌面自动旋转 Android13 版本开始后支持屏幕自动旋转优化体验和兼容性适配不同屏幕 主界面可自动旋转 二参考资料
android framework13-launcher3【06手机旋转问题】 Launcher默认支持旋转 Launcher默认支持旋转 Launcher3 布局 Launcher3 版本变化 展讯Android9.0 Launcher 简介
三遇到问题
定制化屏幕旋转遇到两个核心问题
屏幕自动旋转后最近历史任务并没有旋转方向异常。定制的好多案子比如平板产品中旋转没有问题但是好多手机方案新品来做平板产品。就遇到好多问题了当成手机了需要默认为平板。无法解决最近历史任务异常问题。在GMS 产品中是存在配置是存在覆盖问题的。
四 修改点
/packages/apps/Launcher3/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java
/packages/apps/Launcher3/src/com/android/launcher3/states/RotationHelper.java
/packages/apps/Launcher3/src/com/android/launcher3/util/window/WindowManagerProxy.java/packages/apps/Launcher3/quickstep/res/xml/indexable_launcher_prefs.xml
/packages/apps/Launcher3/res/xml/launcher_preferences.xml
/vendor/google/apps/SearchLauncher/res/xml/launcher_preferences.xm备注仅针对大多数产品各家平台需要根据自己的实际产品类型和方案类型来实际更改。思路是没问题的
五属性Launcher3 种类及构成
为什么要了解这个一方面搞清楚源码里面好多个Launcher或者 Launcher 相关的究竟是什么。特别是GMS 版本需要怎么改不然改了还是会覆盖的。【暂不分析源码配置哪个Launcher】 总之如果是GMS项目先搞清楚自己Launcher构成如何组合编译的然后配置相关的建议都修改。
六实现方案
主要解决三个问题
修改默认配置,自动旋转改为true
/packages/apps/Launcher3/res/xml/launcher_preferences.xml
/vendor/google/apps/SearchLauncher/res/xml/launcher_preferences.xm
defaultValue 默认值改为ture SwitchPreferenceandroid:keypref_allowRotationandroid:titlestring/allow_rotation_titleandroid:summarystring/allow_rotation_descandroid:defaultValuefalseandroid:persistenttruelauncher:logIdOn615launcher:logIdOff616 /SwitchPreferenceandroid:keypref_allowRotationandroid:titlestring/allow_rotation_titleandroid:summarystring/allow_rotation_descandroid:defaultValuefalseandroid:persistenttrue /RecentsOrientedState 允许桌面旋转设置
直接设置为true private void updateHomeRotationSetting() {boolean homeRotationEnabled true;//mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, true);//huanghb modifysetFlag(FLAG_HOME_ROTATION_ALLOWED_IN_PREFS, homeRotationEnabled);SystemUiProxy.INSTANCE.get(mContext).setHomeRotationEnabled(homeRotationEnabled);}手机方案适配平板方案模拟为平板方案
RotationHelper.java getAllowRotationDefaultValue 判断当前是否允许旋转不用计算直接返回 true
/*** Returns the default value of {link #ALLOW_ROTATION_PREFERENCE_KEY} preference.*/public static boolean getAllowRotationDefaultValue(DeviceProfile deviceProfile) {// If the devices 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;}
WindowManagerProxy.java 判断当前是平板的的判断。
public static final int MIN_TABLET_WIDTH 1boolean isTablet swDp MIN_TABLET_WIDTH;boolean isTablet config.smallestScreenWidthDp MIN_TABLET_WIDTH;
这样在判断的时候就直接以平板的方式来判断了就满足自动旋转要求了。
分享部分git 修改记录
diff --git a/packages/apps/Launcher3/quickstep/res/xml/indexable_launcher_prefs.xml b/packages/apps/Launcher3/quickstep/res/xml/indexable_launcher_prefs.xml
old mode 100644
new mode 100755
index b4740e5..aa1fd4d
--- a/packages/apps/Launcher3/quickstep/res/xml/indexable_launcher_prefs.xmlb/packages/apps/Launcher3/quickstep/res/xml/indexable_launcher_prefs.xml-26,7 26,7 android:keypref_allowRotationandroid:titlestring/allow_rotation_titleandroid:summarystring/allow_rotation_desc
- android:defaultValuefalseandroid:defaultValuetrueandroid:persistenttrue //PreferenceScreen
diff --git a/packages/apps/Launcher3/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java b/packages/apps/Launcher3/quickstep/src/com/android/quickstep/util/RecentsOrientedState.jav
old mode 100644
new mode 100755
index 6038a22..76dd118
--- a/packages/apps/Launcher3/quickstep/src/com/android/quickstep/util/RecentsOrientedState.javab/packages/apps/Launcher3/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java-291,7 291,7 public class RecentsOrientedState implements}private void updateHomeRotationSetting() {
- boolean homeRotationEnabled mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, false);boolean homeRotationEnabled true;//mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, true);//huanghb modifysetFlag(FLAG_HOME_ROTATION_ALLOWED_IN_PREFS, homeRotationEnabled);SystemUiProxy.INSTANCE.get(mContext).setHomeRotationEnabled(homeRotationEnabled);}
diff --git a/packages/apps/Launcher3/res/xml/launcher_preferences.xml b/packages/apps/Launcher3/res/xml/launcher_preferences.xml
old mode 100644
new mode 100755
index 8a0c909..171eeb2
--- a/packages/apps/Launcher3/res/xml/launcher_preferences.xmlb/packages/apps/Launcher3/res/xml/launcher_preferences.xml-45,7 45,7 android:keypref_allowRotationandroid:titlestring/allow_rotation_titleandroid:summarystring/allow_rotation_desc
- android:defaultValuefalseandroid:defaultValuetrueandroid:persistenttruelauncher:logIdOn615launcher:logIdOff616 /
diff --git a/packages/apps/Launcher3/src/com/android/launcher3/states/RotationHelper.java b/packages/apps/Launcher3/src/com/android/launcher3/states/RotationHelper.java
old mode 100644
new mode 100755
index 38b62d4..bf88c9d
--- a/packages/apps/Launcher3/src/com/android/launcher3/states/RotationHelper.javab/packages/apps/Launcher3/src/com/android/launcher3/states/RotationHelper.java-49,7 49,7 public class RotationHelper implements OnSharedPreferenceChangeListener,// original dimensions to determine if rotation is allowed of not.float originalSmallestWidth dpiFromPx(Math.min(deviceProfile.widthPx, deviceProfile.heightPx), DENSITY_DEVICE_STABLE);
- return originalSmallestWidth MIN_TABLET_WIDTH;return true;}public static final int REQUEST_NONE 0;
diff --git a/packages/apps/Launcher3/src/com/android/launcher3/util/window/WindowManagerProxy.java b/packages/apps/Launcher3/src/com/android/launcher3/util/window/WindowManagerProxy.java
old mode 100644
new mode 100755
index 9665bf9..d81565c
--- a/packages/apps/Launcher3/src/com/android/launcher3/util/window/WindowManagerProxy.javab/packages/apps/Launcher3/src/com/android/launcher3/util/window/WindowManagerProxy.java-61,7 61,7 import com.android.launcher3.util.WindowBounds;*/public class WindowManagerProxy implements ResourceBasedOverride {- public static final int MIN_TABLET_WIDTH 600;public static final int MIN_TABLET_WIDTH 1;//huanghb modifypublic static final MainThreadInitializedObjectWindowManagerProxy INSTANCE forOverride(WindowManagerProxy.class, R.string.window_manager_proxy_class);
diff --git a/vendor/google/apps/SearchLauncher/res/xml/launcher_preferences.xml b/vendor/google/apps/SearchLauncher/res/xml/launcher_preferences.xml
old mode 100644
new mode 100755
index a70bb30..f95219b
--- a/vendor/google/apps/SearchLauncher/res/xml/launcher_preferences.xmlb/vendor/google/apps/SearchLauncher/res/xml/launcher_preferences.xml-50,7 50,7 android:titlestring/title_show_google_app/SwitchPreference
- android:defaultValuefalseandroid:defaultValuetrueandroid:keypref_allowRotationandroid:persistenttrueandroid:summarystring/allow_rotation_desc
(END)
七总结
如需要解决的问题一样 1更改配置 2解决最近历史任务允许旋转设置 3把产品当做pad 来判断是否pad 地方判断更改逻辑判断条件实现