Блокировка приложения Android Compose в портретном режиме: методы и примеры кода

В этой статье блога мы рассмотрим различные способы блокировки приложения Android Compose в портретном режиме. По умолчанию приложения Android могут поворачиваться в альбомный режим при наклоне устройства. Однако существуют сценарии, в которых вы можете ограничить свое приложение только портретным режимом. Мы обсудим различные подходы и предоставим примеры кода для реализации этой функциональности.

Метод 1. Конфигурация файла манифеста
Один из способов заблокировать приложение Android Compose в портретном режиме — настроить файл AndroidManifest.xml. Откройте файл манифеста и найдите тег действия для действия Compose. Добавьте атрибут android:screenOrientationи установите для него значение «портрет», как показано ниже:

<activity
    android:name=".MainActivity"
    android:screenOrientation="portrait">
    <!-- ... additional activity configuration -->
</activity>

Метод 2: программная блокировка ориентации.
Другой метод — программная блокировка ориентации внутри действия Compose. В метод onCreateвашей активности добавьте следующий код:

requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT

Чтобы разблокировать ориентацию, вы можете установить ее на SCREEN_ORIENTATION_UNSPECIFIED.

Метод 3: использование изменений конфигурации
Вы также можете обрабатывать изменения конфигурации, чтобы обеспечить портретный режим в вашем приложении Compose. Переопределите метод onConfigurationChangedв своей активности и добавьте следующий код:

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}

Это гарантирует, что ориентация будет установлена ​​в портретный режим при каждом изменении конфигурации.

Метод 4. Рекомендации по ConstraintLayout
Если вы используете ConstraintLayout в своем приложении Android Compose, вы можете использовать рекомендации для обеспечения соблюдения портретного режима. Поместите в XML-файл макета две направляющие: одну в начале и одну в конце, и ограничьте ими содержимое Compose. Это ограничивает содержимое портретным режимом и предотвращает поворот в альбомный режим.

<androidx.constraintlayout.widget.ConstraintLayout>
    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/startGuideline"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0" />

    <!-- Your Compose content here -->

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/endGuideline"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="1" />
</androidx.constraintlayout.widget.ConstraintLayout>

В этой статье мы рассмотрели несколько способов блокировки приложения Android Compose в портретном режиме. Эти методы включают настройку файла манифеста, программную блокировку ориентации, обработку изменений конфигурации и использование рекомендаций ConstraintLayout. В зависимости от ваших конкретных требований вы можете выбрать наиболее подходящий подход для вашего приложения. Используя эти методы, вы можете гарантировать, что ваше приложение останется заблокированным в портретном режиме, обеспечивая единообразный пользовательский интерфейс.