Material Design
Базовые узлы
Для конструирования сложных объектов используются базовые примитивы:
Sprite
- узел, закрытый текстурой. Базовый узел для всех отображаемых узлов.Layer
- узел со сплошной или градиентной заливкойLabel
- узел для отображения текста (в том числе, со сложным форматированием)VectorSprite
- узел для векторных изображений и иконокScrollView
- узел с горизонтальной или вертикальной прокруткой содержимого
Основы реализации Material Design
SDK использует концепцию Material Design 3. Модуль xenolith_renderer_material2d
Основа определения дизайна - цветовая схема material2d::ColorScheme
. На основе этой цветовой схемы динамически определяются другие цвета.
Цветовую схему сегента дерева узлов определяет компонент material2d::StyleContainer
. Компонент material2d::StyleMonitor
позволяет отслеживать изменения цветовой схемы, например, при переходе в ночной режим.
Одна из ключевых концепций MD3 - поверхность. Она представлена узлом вида Surface
или LayerSurface
. В зависимсоти от параметров поверхности изменяются параметры узлов в ней. Параметры поверхности доступны через компонент SurfaceInterior
. Его наличие в стеке компонентов показывает, что узел находится на поверхности, и необходимо адаптировать его параметры под поверхность. Таким образом, большинство узлов стилизуются автоматически.
Основные визуальные параметры определяются дискретными значениями Elevation
, ShapeFamily
, ShapeStyle
, NodeStyle
, ActivityState
. Эти параметры задаются в структуре SurfaceStyle
. Но для применения ноду необходимы непрерывные параметры, кроме того, это нужно для гладкости переходных анимаций. За компиляцию дискретных параметров в непрерывные отвечает SurfaceStyleData
, из которой и читаются финальные значения для отображения.
Класс TypescaleLabel
реализует тексовое поле, способное динамически менять свой основной стиль для соотвествия поверхности. Также, для него предусмотрен ряд пресетов из документации MD3.
Класс IconSprite
реализует векторную иконку, аналогично, относящуюся к поверхности.
Цвет теста и иконки составной, состав определяется значением смешивания blendValue
. Чем оно больше, тем больше
влияния заданного цвета и меньше - цвета, требуемого поверхностью.
Компоненты
Реализованы следующие компоненты:
AppBar
Button
TabBar
InputField
Menu
Sidebar
NavigationDrawer
Укладки
Внешние укладки представляют то, как приложение в целом размещается на экране.
Базовая укладка DecoratedLayout
реализует простую укладку одного элемента с возможностью получить доступ к закрашиванию декораций окна там, где это возможно.
Укладка FlexibleLayout
заполняет экран двумя узлами. Верхний узел представляет аголовок окна и может растягиваться и сжиматься вплоть до исчезновения с экрана.
Укладка MultiViewLayout
реализует листаемое влево-вправо постранично содержимое.
Укладка OverlayLayout
предназначена для оверлеев, затемняющих основной контент.