Как прочитать текущую ориентацию экрана на 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")
            }
        }
    }
}
Другие вопросы по тегам