Читаем Разработка Android приложении с Jetpack Compose полностью

Еще одной полезной фичей в Preview является группирование. Внутри аннотации укажите group и присвойте ей любое название. Так вы сможете быстро отыскать определенную группу элементов в Preview.

Стиль написания кода

JetpackCompose обязывает писать название функций с заглавной буквы, далее все как в camel case стиле. У всех Composable, функций есть набор параметров, именованные параметры должны идти в верном порядке во избежание ошибок. Прочие названия ресурсов, таких как цвет, шрифт и т.п, должны следовать той же логике.

Структура проекта

В отличии от проектов, где используется XML, вы не встретите пакета layout. Теперь весь интерфейс расположен внутри самого проекта. Помимо этого, Jetpack Compose предоставляет дополнительные файлы для стилей, шрифтов, тем. Первый файл в пакете ui.themeColor. Внутри располагаются цвета, которые можно вызвать внутри интерфейса по их имени.



Сперва указывается 0x, после прозрачность FF и сам хэш код цвета.

Второй файл – Shape. Для XML приложений часто приходилось создавать множество файлов с различными формами для элементов. В Jetpack Compose это располагается в одном месте и вам при этом необходимо передать внутрь только параметр, на сколько нужно закруглить View.



Для указания размера шрифта или другого элемента, используют следующий синтаксис: число.dp, число.sp.

Третий файл отвечает за цветовую схему в приложение, background, цвет текста и так далее. DarkColorPalette содержит в себе цвета для темной темы, можно дополнительно переопределить другие цвета, если это необходимо. LightColorPalette содержит цвета для светлой темы.

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



Файл Type содержит настройки для шрифтов, внутри функции TextStyle можно задать название шрифта, вес, размер и т.д.



Жизненный цикл и рекомпозиция

Отрисовка элементов в Jetpack Compose разделяется на три этапа. Composition, Layout, Drawing.

1. Composition: какой UI показывать. Compose запускает Composable функции и создает описание вашего UI.

2. Layout: где размещать UI. Этот шаг состоит из двух: измерение и размещение. Элементы верстки измеряют и помещают самих себя и все дочерние элементы.

3. Drawing: как рендерить. UI-элементы отрисовываются в Canvas, обычно на экране устройства.

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

Внутри каждого из состояний происходит считывание состояния, опишем, что происходит внутри каждого из них.

Этап 1: Composition.

Чтение состояния в Composable функции или лямбда-блоке влияет на Composition и потенциально на следующие этапы. Когда значение состояния меняется, recomposer планирует перезапуск всех Composable функций, которые его считывали. Обратите внимание, что среда выполнения может решить пропустить некоторые или все Composable функции, если входные данные не изменились.

В зависимости от результата Composition, Compose UI запускает этапы Layout и Drawing. Эти этапы могут быть пропущены, если контент не изменился, и, следовательно, общий размер элементов не изменится.



Этап 2: Layout.

Этап Layout включает два шага: измерение и размещение. Шаг измерения запускает лямбда-функции измерения, переданные в Layout-composable, метод MeasureScope.measure интерфейса LayoutModifier. Размещение запускает блок функции layout, лямбду из Modifier.offset {…} и т.д.

Считывание состояний во время каждого шага затрагивает этапы Layout и, потенциально, Drawing. Когда значение состояния меняется, Compose UI планирует выполнение этапа Layout. Это также запускает этап Drawing, если размер или расположение изменились.

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



Этап 3: Drawing.

Перейти на страницу:

Похожие книги

Павел I
Павел I

Библиотека проекта «История Российского государства» – это рекомендованные Борисом Акуниным лучшие памятники исторической литературы, в которых отражена биография нашей страны от самых ее истоков.Павел I, самый неоднозначный российский самодержец, фигура оклеветанная и трагическая, взошел на трон только в 42 года и царствовал всего пять лет. Его правление, бурное и яркое, стало важной вехой истории России. Магистр Мальтийского ордена, поклонник прусского императора Фридриха, он трагически погиб в результате заговора, в котором был замешан его сын. Одни называли Павла I тираном, самодуром и «увенчанным злодеем», другие же отмечали его обостренное чувство справедливости и величали «единственным романтиком на троне» и «русским Гамлетом». Каким же на самом деле был самый непредсказуемый российский император?

Казимир Феликсович Валишевский

История / Учебная и научная литература / Образование и наука
За степным фронтиром. История российско-китайской границы
За степным фронтиром. История российско-китайской границы

Российско-китайская граница – одна из самых протяженных сухопутных границ в мире, однако в современной историографии ей уделяется незаслуженно мало внимания. Пытаясь восполнить этот пробел, Сёрен Урбански в своей книге рассматривает формирование и изменение контуров границы в длительной хронологической перспективе, начиная с XVII столетия – времени существования фронтирной территории без четко установленного размежевания – и заканчивая XX веком, когда линия границы обрела геополитическое значение и превратилась в плотно патрулируемый барьер. Повествуя о повседневной жизни общин на российско-китайском пограничье, автор демонстрирует, как государствам удалось навязать контроль над родственными, культурными, экономическими и религиозными связями по обе стороны границы посредством законодательных мер, депортаций, принудительной ассимиляции и пропаганды. Сёрен Урбански – историк, научный сотрудник Германского исторического института в Вашингтоне и директор его филиала в Калифорнийском университете в Беркли.

Сёрен Урбански

История / Учебная и научная литература / Образование и наука
Поэзия как волшебство
Поэзия как волшебство

Трактат К. Д. Бальмонта «Поэзия как волшебство» (1915) – первая в русской литературе авторская поэтика: попытка описать поэтическое слово как конструирующее реальность, переопределив эстетику как науку о всеобщей чувствительности живого. Некоторые из положений трактата, такие как значение отдельных звуков, магические сюжеты в основе разных поэтических жанров, общечеловеческие истоки лиризма, нашли продолжение в других авторских поэтиках. Работа Бальмонта, отличающаяся торжественным и образным изложением, публикуется с подробнейшим комментарием. В приложении приводится работа К. Д. Бальмонта о музыкальных экспериментах Скрябина, развивающая основную мысль поэта о связи звука, поэзии и устройства мироздания.

Александр Викторович Марков , Константин Дмитриевич Бальмонт

Языкознание, иностранные языки / Учебная и научная литература / Образование и наука
Эстетика
Эстетика

В данный сборник вошли самые яркие эстетические произведения Вольтера (Франсуа-Мари Аруэ, 1694–1778), сделавшие эпоху в европейской мысли и европейском искусстве. Радикализм критики Вольтера, остроумие и изощренность аргументации, обобщение понятий о вкусе и индивидуальном таланте делают эти произведения понятными современному читателю, пытающемуся разобраться в текущих художественных процессах. Благодаря своей общительности Вольтер стал первым художественным критиком современного типа, вскрывающим внутренние недочеты отдельных произведений и их действительное влияние на публику, а не просто оценивающим отвлеченные достоинства или недостатки. Чтение выступлений Вольтера поможет достичь в критике основательности, а в восприятии искусства – компанейской легкости.

Виктор Васильевич Бычков , Виктор Николаевич Кульбижеков , Вольтер , Теодор Липпс , Франсуа-Мари Аруэ Вольтер

Детская образовательная литература / Зарубежная классическая проза / Прочее / Зарубежная классика / Учебная и научная литература