Библиотеки макетов для двухэкранных устройств

Важно!

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

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

Если за создание и обработку всех режимов экрана будут отвечать наши компоненты, основное внимание вы сможете уделять созданию своего приложения.

Модули

  • Bottom navigation. Содержит пользовательский класс BottomNavigationView для режима двойного экрана.

    • BottomNavigationView позволяет перемещать BottomNavigationView между правым и левым экранами.
  • FragmentsHandler. Содержит код для управления фрагментами в различных режимах экрана.

    • FragmentManagerStateHandler позволяет восстанавливать фрагменты, которые могут быть затронуты при переходе в режим двойного или одинарного экрана.
  • Layouts. Содержит макеты, помогающие создать пользовательский интерфейс для устройств с двойным экраном.

    • FoldableLayout создаст контейнеры SingleScreen или DualScreen для хранения пользовательского интерфейса.
    • FoldableFrameLayout позволяет работать с дочерними представлениями или перемещать их между правым и левым экранами.
  • RecyclerView — содержит пользовательский класс RecyclerView.ItemDecoration и класс LayoutManager для режима двойного экрана.

    • FoldableItemDecoration добавляет в ячейки интервалы на месте петли, если приложение полностью развернуто. Используется вместе с FoldableLayoutManager.
    • FoldableLayoutManager предоставляет LinearLayoutManager, если устройство работает в режиме одинарного экрана, и GridLayoutManager — в развернутом режиме.
    • FoldableStaggeredItemDecoration добавляет в ячейки интервалы на месте петли, если приложение полностью развернуто. Используется вместе с FoldableStaggeredLayoutManager.
    • FoldableStaggeredLayoutManager предоставляет LinearLayoutManager, если устройство работает в режиме одинарного экрана, и StaggeredGridLayoutManager — в развернутом режиме.
  • Tabs. Содержит пользовательский класс TabLayout для режима двойного экрана.

    • TabLayout позволяет обнаружить функцию с поддержкой складывания устройства и предоставляет возможность упорядочить вкладки справа или слева.
  • Компонент навигации складного устройства. Основан на компоненте навигации Google и содержит набор библиотек, внедряющий шаблон навигации для двойного экрана.

  • Snackbar — пользовательский элемент FrameLayout, который может использоваться в качестве контейнера для Snackbar для его размещения на складных устройствах.

Объявление зависимостей

  1. Убедитесь, что у вас есть репозиторий mavenCentral() в файле build.gradle верхнего уровня:

    allprojects {
        repositories {
            google()
            mavenCentral()
         }
    }
    
  2. Добавьте требуемые зависимости в файл build.gradle на уровне модуля (текущая версия может отличаться от указанной здесь):

    Нижнее представление навигации

    implementation "com.microsoft.device.dualscreen:bottomnavigation:1.0.0-beta4"
    

    Обработчик фрагментов

    implementation "com.microsoft.device.dualscreen:fragmentshandler:1.0.0-beta5"
    

    Макеты

    implementation "com.microsoft.device.dualscreen:layouts:1.0.0-beta8"
    

    Вкладки

    implementation "com.microsoft.device.dualscreen:tabs:1.0.0-beta4"
    

    RecyclerView

    implementation "com.microsoft.device.dualscreen:recyclerview:1.0.0-beta6"
    

    SnackbarContainer

    implementation "com.microsoft.device.dualscreen:snackbar:1.0.0-alpha2"
    

    Компонент навигации складного устройства

    def nav_version = "1.0.0-alpha3"
    
    // Java language implementation
    implementation "com.microsoft.device.dualscreen:navigation-fragment:$nav_version"
    implementation "com.microsoft.device.dualscreen:navigation-ui:$nav_version" 
    
    // Kotlin
    implementation "com.microsoft.device.dualscreen:navigation-fragment-ktx:$nav_version"
    implementation "com.microsoft.device.dualscreen:navigation-ui-ktx:$nav_version"
    

Устаревшие модули

Важно!

Первоначальный выпуск этих макетов был упакован в одну библиотеку com.microsoft.device:dualscreen-layout.

Эта библиотека устарела. Мы рекомендуем использовать указанные выше отдельные библиотеки для требуемых элементов управления.

  • ScreenManager (устарел). Содержит основные классы, требуемые для работы компонентов при разработке для устройств с двойным экраном. Их также можно использовать непосредственно в коде.

    • Используйте ScreenManagerProvider, чтобы получить отдельный экземпляр SurfaceDuoScreenManager.
    • Используйте SurfaceDuoScreenManager, чтобы зарегистрировать прослушивателей для оповещения об изменении режима экрана.
    • Используйте ScreenInfoProvider, чтобы получить экземпляр ScreenInfo.
    • Используйте ScreenInfo, чтобы получать информацию о разных экранах в зависимости от режима экрана.

    Если вы хотите выбрать версию, которая использует API маски экрана, добавьте следующую строку в файл gradle.

    implementation "com.microsoft.device.dualscreen:screenmanager-displaymask:1.0.0-beta4"
    

    Если же вы хотите выбрать версию, которая использует API диспетчера окон, добавьте следующую строку.

    implementation "com.microsoft.device.dualscreen:screenmanager-windowmanager:1.0.0-beta4"