Jetpack Compose 如何处理屏幕方向变更

62 阅读1分钟

首先你需要有一定的CompositionLocal的知识,如果想不起来的话可以看这里。示例代码在这里。如果有帮助别忘了给个星。

这里简单提一下CompositionLocal需要和CompositionLocalProvider一起使用。在Activity里已经继承了ComponentActivity,在这个类的setContent方法里已经有了这个实现。所以可以直接使用LocalConfiguration

使用LocalConfiguration就是解决屏幕转向的关键所在了,代码很简单,如:

when (config.orientation) {
    Configuration.ORIENTATION_LANDSCAPE -> {
        Text("Landscape")
    }

    else -> {
        Text("Portrait")
    }
}

这段代码会根据屏幕的方向显示不同的Text composable。