1

我想使用 Jetpack Compose 在 Android 上读取当前屏幕方向。

我已经尝试过以下@Composable

val o = LocalActivity.current.requestedOrientation

val o = LocalContext.current.display.rotation

val o = LocalActivity.current.resources.configuration.orientation

但徒劳无功。

Log.d("Orientation", "The Orientation $o")

每次,我旋转方向,这些上的日志输出保持不变。所以他们似乎没有改变。

如何读取屏幕方向?

4

3 回答 3

0

您可以覆盖onConfigurationChanged(Configuration)您的活动的方法。

要调用此方法,您还需要在清单文件中指定 android:configChanges 属性的更改。

查看指定内容和方法,请查看此文档

于 2021-11-29T01:27:14.860 回答
0

您可以从中获取它BoxWithConstraints并将宽度高度进行比较。

一个简单的例子:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
          //Our composable that gets the screen orientation
            BoxWithConstraints {
                val mode = remember { mutableStateOf("") }
                mode.value = if (maxWidth < maxHeight) "Portrait" else "Landscape"
                Text(text = "Now it is in ${mode.value} mode")
            }
        }
    }
}
于 2021-11-29T10:36:29.103 回答
0
androidx.compose.ui.platform.LocalConfiguration.current.orientation

为我解决了。

于 2021-12-01T12:53:09.270 回答