如何读取 Android 上的当前屏幕方向?
How to read current screen orientation on Android?
我想使用 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")
每次我旋转方向,这些日志输出都保持不变。所以他们似乎没有改变。
如何读取屏幕方向?
您可以覆盖 activity 的 onConfigurationChanged(Configuration)
方法。
要调用此方法,您还需要在清单文件中指定更改 android:configChanges 属性。
查看指定的内容和方式,请检查 this docs。
您可以从 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")
}
}
}
}
androidx.compose.ui.platform.LocalConfiguration.current.orientation
帮我解决了。
我想使用 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")
每次我旋转方向,这些日志输出都保持不变。所以他们似乎没有改变。
如何读取屏幕方向?
您可以覆盖 activity 的 onConfigurationChanged(Configuration)
方法。
要调用此方法,您还需要在清单文件中指定更改 android:configChanges 属性。
查看指定的内容和方式,请检查 this docs。
您可以从 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")
}
}
}
}
androidx.compose.ui.platform.LocalConfiguration.current.orientation
帮我解决了。