Как прочитать текущую ориентацию экрана на Android?
Я хотел бы прочитать текущую ориентацию экрана на Android с помощью Jetpack Compose.
Я уже пытался следовать в
@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")
Каждый раз, когда я меняю ориентацию, выходные данные журнала остаются прежними. Так они вроде не меняются.
Как я могу прочитать ориентацию экрана?
3 ответа
androidx.compose.ui.platform.LocalConfiguration.current.orientation
решил это для меня.
Вы можете переопределить
onConfigurationChanged(Configuration)
метод вашей деятельности.
Чтобы вызвать этот метод, вам также необходимо указать изменение атрибута android:configChanges в файле манифеста.
Посмотрите, что и как указать, пожалуйста, проверьте эту документацию .
Вы можете получить его от
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")
}
}
}
}