android - 使用 Android SDK 30 将 Android 应用程序锁定为横向模式
问题描述
对于以前版本的 SDK,AndroidManifest.xml 文件中的这些行足以避免方向更改和活动重置:
android:launchMode="singleInstance"
android:screenOrientation="landscape"
android:configChanges="mcc|mnc|locale|touchscreen|orientation|fontScale|orientation|uiMode|screenLayout|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
现在我使用的是 Android Studio V 4.1.1。
安卓 SDK 30。
安卓 NDK 21.1.6352462。NDK APP_PLATFORM:16。
Android Gradle 插件 V 4.1.1 和 Gradle 版本 6.5。
SDL V2.0.12。
OpenGL ES 2.0。
而且我无法在旋转到纵向模式时阻止布局更改。屏幕总是分成两半并将图像的多余部分切到右侧。
现在还有什么需要考虑的吗?
除此之外,我知道要实现全屏沉浸式模式,必须进行一些更改,因为通常用于它的标志已被 SDK 30 弃用。示例:https ://developer.android.com/reference/android/view/View .html#SYSTEM_UI_FLAG_FULLSCREEN
SDL Activity 处理了以前版本覆盖 Handler 方法并设置标志的问题:
Window window = ((Activity) context).getWindow();
if (window != null) {
if ((msg.obj instanceof Integer) && (((Integer) msg.obj).intValue() != 0)) {
int flags = View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.INVISIBLE;
window.getDecorView().setSystemUiVisibility(flags);
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
SDLActivity.mFullscreenModeActive = true;
} else {
int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_VISIBLE;
window.getDecorView().setSystemUiVisibility(flags);
window.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
SDLActivity.mFullscreenModeActive = false;
}
}
我现在将使用 WindowInsetsController 选项为 SDK 30 添加正确的设置,以防万一。
解决方案
推荐阅读
- node.js - Async/Await In NodeJS
- swift - 更新数据源并调用reloadData后,cellForItem中的数据源不变
- scylla - 是否有用于 scylla nodetool 的 API?
- android - Capacitor LocalNotifications - Android 上没有 toast 弹出窗口?
- c - 写入通过结构传递给线程的 mmap 输出 (C)
- c# - SQLite 选项未出现在从模型生成数据库中
- python - 为什么当我运行 series.replace 时 np.nan 会将我的列转换为浮点数
- python-3.x - 将 boto 客户端参数作为变量传递
- python - 如何从一个文件夹中读取多个txt文件
- angular - Angular 生命周期钩子中的数据流