java - 180 度和 270 度不调用 onConfigurationChanged

标签 java android kotlin screen-orientation

我在我的 Android 设备上遇到了一个奇怪的问题(或者可能是意外行为)。

问题是我正在监听 DialogFragment 中的配置更改,如下所示:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Do something secret here :)
}

我将 android:configChanges 添加到负责显示对话框 fragment 的 Activity 中

<activity
    android:name=".SecretActivity" 
    android:configChanges="orientation|screenSize"
    android:windowSoftInputMode="adjustResize" />

确实,当我旋转设备时,我会收到来自系统的回调,但并非在所有情况下都如此。正如您在图片中看到的那样,onConfigurationChanged() 仅在我旋转 90 度和 360 度时调用,在其他情况下不调用。

这是预期的行为吗? 如果是,我如何检测所有旋转(90、180、270、360)?

enter image description here

最佳答案

如果您的 Activity 具有未指定的屏幕方向,设备通常会忽略 180° 旋转并且仅支持一个横向方向。

要支持所有方向,请添加显式 screenOrientation Activity list 条目的属性:usersensor,具体取决于您是否要支持用户锁定设备方向。

关于java - 180 度和 270 度不调用 onConfigurationChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54219366/

相关文章:

java - 如何为以下 json 创建 POJO?

java - 创建没有实例的枚举有什么用?

android - 未打开列表自动图文集完整 View

android - 找不到 android.arch.navigation :navigation-safe-args-gradle-plugin:2. 3.5.?

java - 如何将类型保存为变量并在 cast 中使用它

android - 在Android中同时发送文本和图像

带有 EventBus 和启动服务的 Android MVP

ternary-operator - 为什么 Kotlin 不支持 "ternary operator"

sqlite - 无法使用JOOQ更新SQLITE中的表行

java - 优先队列与链表java