android横竖屏切换不重启activity解决方案


在Android开发中,实现横竖屏切换而不重启Activity的常见方法是通过在AndroidManifest.xml中配置Activity的`configChanges`属性。通过指定`configChanges`来告知系统,当这些配置变化时,Activity不会重启,而是调用`onConfigurationChanged`方法,让开发者有机会处理这些变化。

对于横竖屏切换,你需要确保在`AndroidManifest.xml`中为你的Activity添加了`orientation`变化的配置。示例如下:


<activity
    android:name=".YourActivity"
    android:configChanges="keyboardHidden|orientation|screenSize">
    <!-- 其他配置 -->
</activity>

这里,`android:configChanges`属性包含了`orientation`(方向变化)、`screenSize`(屏幕尺寸变化,Android 3.2及以上版本需要添加此项以正确处理横竖屏切换时屏幕尺寸的细微变化)和`keyboardHidden`(键盘隐藏状态变化,虽然这与横竖屏直接关联不大,但通常也会一并处理)。

然后,在你的Activity中重写`onConfigurationChanged`方法来处理横竖屏切换的逻辑:


@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // 检查当前屏幕方向
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        // 横屏时的处理逻辑
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
        // 竖屏时的处理逻辑
    }

    // 其他可能的配置变化处理
}

这样,当设备横竖屏切换时,你的Activity就不会重启了,而是会调用`onConfigurationChanged`方法,你可以在其中处理UI布局的调整等逻辑。