【问题标题】:How handle Android Device 180 degree rotation (reverseLandscape)? - onConfigurationChanged is not called如何处理 Android 设备 180 度旋转(reverseLandscape)? - 不调用 onConfigurationChanged
【发布时间】:2021-01-11 15:24:30
【问题描述】:

当手机旋转 180 度时 onConfigurationChanged 回调不被调用,仅在从纵向更改为横向旋转时有效,反之亦然,但是在横向视图旋转时旋转 180 度但不调用 onConfigurationChanged 回调。如何处理 180 度旋转。

我的清单

<activity
            android:name="com.myApp.Activity"
            android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"/>

我的活动

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Toast.makeText(this, "rotated", Toast.LENGTH_SHORT).show();
    }

【问题讨论】:

  • 要以更好和优雅的方式处理生命周期事件,请使用viewmodels,查看official docs 了解更多信息
  • @rcs 如果您的意思是删除清单中的 android:configChanges 并使用生命周期,则问题是从横向旋转 180 度到反向横向时不会调用相同的生命周期事件

标签: java android android-layout android-activity onconfigurationchanged


【解决方案1】:

默认screenOrientation 模式行为是特定于供应商和设备的。对于手机,通常只支持 -90°、0° 和 90°。

要支持所有方向,请将android:screenOrientation="fullSensor" 添加到您的活动清单条目中。

文档:https://developer.android.com/guide/topics/manifest/activity-element#screen

【讨论】:

  • 这没有解决我的问题,onConfigurationChanged 没有被调用,布局/视图自动旋转。但是我无法处理事件,我只能处理从纵向到横向的旋转 180 度旋转不调用回调
猜你喜欢
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多