Макеты Flow, Layer и Motion

Вступление

ConstraintLayout - одна из мощных библиотек Jetpack, которая позволяет разработчикам быстро создавать сложный и отзывчивый пользовательский интерфейс с помощью интерактивных инструментов, встроенных в Android Studio, для предварительного просмотра вашего XML.

Одним из значительных преимуществ ConstraintLayout является то, что мы можем создавать сложный пользовательский интерфейс с плоской иерархией представлений (без вложенных групп представлений). В результате отображается меньшее количество слоев, что увеличивает производительность.

Несколько ключевых особенностей ConstraintLayout

  1. Мы можем расположить взгляды относительно друг друга.
  2. Мы можем центрировать взгляды, используя предвзятость или другие взгляды.
  3. Мы можем указать соотношение сторон изображения.
  4. Мы можем группировать и связывать просмотры.

Несколько вспомогательных объектов

Вспомогательные объекты - это объекты, которые не видны пользователю, но полезны для согласования взглядов разработчиков.

  • Guideline
  • Barrier
  • Placeholder

Чтобы узнать больше о ConstraintLayout v1.0, прочтите эту статью.

ConstraintLayout 2.0

Хватит уроков истории. Пришло время интегрировать v2.0 из ConstraintLayout в ваш проект. Для этого добавьте следующую строку под тегом зависимостей в build.gradle файле.

implementation “androidx.constraintlayout:constraintlayout:2.0.1”

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

Поток

Flow - это новый виртуальный макет, добавленный в v2, аналогичный группе в v1. Это комбинация Chain и Group с особыми полномочиями. Проще говоря, Flow связывает представления с динамическим размером во время выполнения.

Подобно Group, Flow также принимает идентификаторы эталонных представлений и создает поведение Chain. Одним из жизненно важных преимуществ, которые предлагает Flow, является wrapMode (способ настройки представлений при их переполнении). По умолчанию у нас есть три режима на выбор: none, aligned и chain.

  • wrap none : Создает цепочку из указанных представлений
  • wrap chain: Создает несколько цепочек (одну за другой), только если указанные представления не подходят
  • wrap aligned: аналогично wrap chain, но выравнивает представления, создавая строки и столбцы.

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

До ConstraintLayout 2.0 нам приходилось вычислять оставшееся пространство после рендеринга каждого вида, чтобы убедиться, что следующий вид умещается туда, иначе мы должны выровнять его в следующей строке. Но теперь нам нужно использовать Flow.

Чтобы узнать больше о Flow, прочтите официальную документацию.

Слой

Layer - новый помощник в ConstraintLayout 2.0, похожий на Guidelines и Barriers. Мы можем создать виртуальный слой, например группу, с несколькими видами, на которые есть ссылки. После ссылки на представления мы можем применить преобразования к этим представлениям, используя Layer.

Он похож на помощник Group, в котором мы можем связать несколько представлений и выполнять базовые действия, такие как видимость (видимая и скрытая). С Layer мы можем перейти на новый уровень. Мы можем применять анимацию к rotate, translate или scale множественным представлениям вместе.

MotionLayout

MotionLayout - это подкласс ConstraintLayout, который включает в себя все его выдающиеся функции и полностью декларативный, с возможностью реализации сложных переходов в XML. Он обратно совместим с API уровня 14, что означает, что он охватывает 99% случаев использования.

Новый редактор MotionLayout в Android Studio 4.0 упрощает работу с MotionLayout. Он предоставляет причудливую среду для реализации переходов, MotionScenes и т. Д.

Чтобы узнать больше о MotionLayout, прочтите эту статью.

На этом пока все, надеюсь, вы узнали что-то полезное, спасибо за чтение.