WidgetBase
Общая основа виджетов для layout, StylePack, состояния, рендера, событий и анимаций.
Обзор
WidgetBase — базовый абстрактный класс для всех виджетов UniGUI. Он объединяет границы макета, визуальные стили, обработку ввода, отслеживание инвалидации, навигацию фокуса, трансформации, анимации и отрисовку в единый fluent-API.
| Основная подсистема | Ключевые методы | Назначение и архитектура |
|---|---|---|
| Иерархия | parent(), children(), uiContext() |
Управляет отношениями дерева предков и потомков, передачей инвалидации и доступом к контексту окна. |
| Геометрия и макет | layout(), layoutStyle(), desiredSize() |
Измеряет и размещает виджет через LayoutStyle (flexbox, CSS Grid, отступы margin/padding, ограничения размеров). |
| Визуальные стили | style(), styleId(), styleClass() |
Обрабатывает инлайновые CSS-декларации, поиск правил в StylePack, классы-селекторы и изоляцию скоупов. |
| Состояние и ввод | visibility(), enabled(), mouseCursor() |
Управляет участием в макете, проверкой наведения hover, курсором мыши и клавиатурным фокусом. |
| Трансформации и анимации | animate(), opacity(), rotationDegrees() |
Интерполирует свойства, выполняет FLIP-переходы макета, пружинную физику и раскадровки Storyboard. |
| Рендеринг и кэш | renderer(), renderCached(), invalidate() |
Формирует команды отрисовки, поддерживает retained-кэш команд для листовых виджетов и управляет dirty-флагами. |
| События | on(), emit(), handle() |
Строго типизированная подписка на события и всплытие по иерархии виджетов. |
Абстрактный базовый класс
WidgetBase предоставляет инфраструктуру и является абстрактным. Используйте готовые виджеты (Label, Button, VBox, ScrollView и др.) либо наследуйте его для создания собственных компонентов.
Стили и layout
UniGUI строго разделяет Layout (геометрию, позиционирование и размеры) и Style (цвета, рамки, тени, текстуры).
| Механизм стилизации | Метод / Синтаксис | Описание и поведение |
|---|---|---|
| Инлайновые CSS-декларации | style("color: #fff; padding: 8px;") |
Парсит пары свойство-значение в инлайновый стиль. Предупреждения парсера доступны в styleDiagnostics(). |
| Ссылка на StylePack | styleId("card-primary") |
Применяет готовое правило темы из активного набора StylePack. |
| Классы стилей | styleClass("btn primary") / addStyleClass("active") |
Назначает классы для условных селекторов (:hover, :focused, :disabled). |
| Изоляция стилей (Scope) | styleScope(true) |
Изолирует поддерево виджета, предотвращая наследование локальных стилей за пределы этой границы. |
| Локальные переопределения | localStyle("Button", buttonStyle) |
Переопределяет стиль по умолчанию для всех дочерних виджетов указанного типа в данном поддереве. |
| Конфигурация макета | layout(style -> style.width(100).fill()) |
Настраивает геометрию через батчинг LayoutStyle, исключая лишние пересчёты. |
Разделение геометрии и визуала
Изменение визуальных стилей (например, color или opacity) вызывает только перерисовку (VISUAL invalidation). Изменение геометрии через layout(...) запускает пересчёт макета (LAYOUT invalidation). Их разделение обеспечивает стабильные 60+ FPS.
Видимость, фокус и взаимодействие
Видимость виджета, доступность взаимодействия и навигация фокуса управляются явными флагами состояния.
| Режим видимости | Участие в Layout | Отрисовка | События мыши и ввода | Фокус с клавиатуры |
|---|---|---|---|---|
Visibility.VISIBLE |
Измеряется и размещается | Рисуется | Принимает события | Да |
Visibility.HIDDEN |
Измеряется (сохраняет место) | Скрыт | Игнорирует | Нет |
Visibility.COLLAPSED |
Полностью исключён (размер 0) | Скрыт | Игнорирует | Нет |
| Возможность взаимодействия | Метод | Назначение и эффект |
|---|---|---|
| Доступность (Enabled) | enabled(boolean) |
Включает/выключает интерактивность; неактивный виджет получает псевдокласс :disabled и игнорирует события. |
| Проверка наведения | hovered() |
Возвращает true, если курсор мыши в данный момент находится над виджетом. |
| Курсор мыши | mouseCursor(MouseCursor) |
Задаёт форму курсора (HAND, TEXT, CROSSHAIR и др.) при наведении на включённый видимый виджет. |
| Фокусируемость | focusable(boolean) |
Разрешает виджету участвовать в таб-навигации и получать клавиатурный фокус. |
| Граница фокуса (Scope) | focusScope(true) |
Замыкает переключение Tab внутри поддерева виджета (необходимо для модальных окон и диалогов). |
| Порядок табуляции | focusOrder(int) |
Явный относительный индекс последовательности клавиши Tab. |
Выбор между HIDDEN и COLLAPSED
Используйте Visibility.HIDDEN, когда элемент должен временно исчезнуть без смещения соседних виджетов. Используйте Visibility.COLLAPSED, когда элемент должен полностью освободить своё пространство.
Трансформации и анимации
UniGUI включает единый движок анимаций, поддерживающий прямые трансформации, интерполяцию, физику пружин, перемещение макета и сложные раскадровки.
| Техника анимации | Метод | Описание |
|---|---|---|
| Прямая трансформация | opacity(val), rotationDegrees(deg), transformPivot(x, y) |
Мгновенно обновляет визуальные параметры без затрат на анимацию. |
| Интерполированный переход | animate(property, target, spec), animateOpacity(...), animatePosition(...), animateScale(...) |
Плавно анимирует свойство по кривой плавности (TransitionSpec). Активные анимации плавно перенаправляются к новой цели. |
| Физика пружины (Spring) | animateSpring(property, target, stiffness, damping) |
Физически смоделированное затухающее гармоническое колебание с естественным отскоком. |
| Движение макета (FLIP) | layoutTransition(duration, easing) |
Плавно анимирует смещение координат при пересчёте макета по технологии First-Last-Invert-Play (FLIP). |
| Обратная связь (Shake) | shake(amplitude, duration) |
Покачивает виджет горизонтально/вертикально для индикации ошибок или недопустимых действий. |
| Сложные раскадровки | playStoryboard(storyboard) |
Многодорожечные таймлайны анимации множества параметров под управлением StoryboardPlayer. |
Переходы макета vs. Анимация размеров
layoutTransition(...) анимирует позиционное смещение (координаты X и Y), возникающее при пересчёте макета. Он не растягивает и не анимирует ширину/высоту.
Рендер, invalidation и события
Конвейер рендеринга разделяет расчёт геометрии, запись команд отрисовки и инвалидацию поддеревьев.
| Флаг инвалидации | Подсистема | Когда вызывается |
|---|---|---|
InvalidationFlags.LAYOUT |
Движок макета | Изменились размеры, отступы или правила flex. Флаг всплывает к корню дерева. |
InvalidationFlags.VISUAL |
Рендеринг | Изменились цвета, текст, границы или прозрачность без изменения размеров. Запускает перерисовку. |
InvalidationFlags.RETAINED_RENDER |
Кэш отрисовки | Помечает буфер записанных команд устаревшим. |
| Компонент конвейера | Метод | Назначение и использование |
|---|---|---|
| Пользовательский рендерер | renderer(WidgetRender) |
Заменяет стандартное рисование виджета на процедурный рендерер. |
| Кэш команд (Retained Cache) | renderCachingEnabled(boolean) |
Кэширует команды отрисовки статичных листовых виджетов в буфер, снижая нагрузку на GPU. |
| Подписка на события | on(EventType, listener) |
Регистрирует строго типизированный слушатель событий ввода или жизненного цикла. Возвращает EventSubscription. |
| Отправка событий | emit(Event) |
Отправляет событие непосредственно виджету и вызывает зарегистрированных слушателей. |
Обход дочерних виджетов при кастомном рендерере
Назначение пользовательского renderer(...) заменяет отрисовку фона и содержимого самого виджета. Дочерние виджеты контейнера продолжают автоматически обходиться и отрисовываться фреймворком.
Настройка виджета
Label greeting = new Label("Hello")
.id("greeting")
.styleId("card")
.addStyleClass("interactive");
greeting.layout(style -> style
.padding(12.0f)
.width(240.0f)
.flexNone());
Анимация визуального свойства
API
Идентификация и стили
| Метод | Описание |
|---|---|
id(String) |
Назначает уникальный строковый идентификатор рантайма/редактора для поиска и code-behind. |
id() |
Возвращает строковый идентификатор этого виджета или пустую строку, если он не задан. |
styleId(String) |
Выбирает явное именованное правило оформления из активного StylePack. |
styleId() |
Возвращает идентификатор стиля StylePack, назначенный этому виджету. |
style(String) |
Применяет inline-объявления или считает голый токен id стиля StylePack. |
style(Consumer) |
Применяет типизированные декларации стилей через callback-билдер MutableStyle. |
styleClear() |
Удаляет все инлайновые декларации стилей и очищает диагностику парсера. |
styleDiagnostics() |
Возвращает список предупреждений и ошибок, собранных при парсинге инлайновых строк стилей. |
styleClass(String) |
Заменяет классы стилей виджета списком классов, разделённых пробелами. |
addStyleClass(String) |
Добавляет один нормализованный класс стиля без удаления уже существующих. |
removeStyleClass(String) |
Удаляет указанный класс стиля, если он был назначен виджету. |
hasStyleClass(String) |
Проверяет, назначен ли указанный класс стиля данному виджету. |
styleClasses() |
Возвращает неизменяемый список всех классов стилей, назначенных этому виджету. |
styleScope(boolean) |
Ограничивает наследование локальных стилей поддеревом этого виджета. |
styleScope() |
Проверяет, образует ли этот виджет границу локальной области стилей. |
localStyle(String, Style) |
Назначает или сбрасывает локальное переопределение стиля для указанного типа виджетов в этом поддереве. |
localStyle(String) |
Возвращает локальное переопределение стиля для указанного типа виджетов. |
WidgetBase::id(String)
Задать ID виджета
Назначает уникальный строковый идентификатор рантайма/редактора для поиска и code-behind.
| Параметр | Тип | Описание |
|---|---|---|
id |
String |
Уникальный строковый идентификатор. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::id()
Получить ID виджета
Возвращает строковый идентификатор этого виджета или пустую строку, если он не задан.
Возвращает String: строковый идентификатор виджета.
WidgetBase::styleId(String)
Задать ID стиля
Выбирает явное именованное правило оформления из активного StylePack.
| Параметр | Тип | Описание |
|---|---|---|
styleId |
String |
Идентификатор стиля StylePack. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::styleId()
Получить ID стиля
Возвращает идентификатор стиля StylePack, назначенный этому виджету.
Возвращает String: активный идентификатор стиля StylePack или пустая строка.
WidgetBase::style(String)
Встроенный стиль
Применяет inline-объявления или считает голый токен id стиля StylePack.
Строка без : и ; уходит в styleId. Иначе она разбирается как объявления property: value; и сливается с inline-стилем. Диагностики парсера остаются в styleDiagnostics().
| Параметр | Тип | Описание |
|---|---|---|
declarations |
String |
Inline-объявления или id StylePack, если в строке нет : и ;. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::style(Consumer)
Настроить инлайновый стиль
Применяет типизированные декларации стилей через callback-билдер MutableStyle.
| Параметр | Тип | Описание |
|---|---|---|
update |
Consumer |
Callback, изменяющий свойства в MutableStyle. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::styleClear()
Очистить инлайновый стиль
Удаляет все инлайновые декларации стилей и очищает диагностику парсера.
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::styleDiagnostics()
Диагностика стилей
Возвращает список предупреждений и ошибок, собранных при парсинге инлайновых строк стилей.
Возвращает List: список диагностических сообщений парсера.
WidgetBase::styleClass(String)
Задать классы стилей
Заменяет классы стилей виджета списком классов, разделённых пробелами.
| Параметр | Тип | Описание |
|---|---|---|
styleClasses |
String |
Строка с именами классов, разделёнными пробелами. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::addStyleClass(String)
Добавить класс стиля
Добавляет один нормализованный класс стиля без удаления уже существующих.
| Параметр | Тип | Описание |
|---|---|---|
styleClass |
String |
Имя добавляемого класса стиля. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::removeStyleClass(String)
Удалить класс стиля
Удаляет указанный класс стиля, если он был назначен виджету.
| Параметр | Тип | Описание |
|---|---|---|
styleClass |
String |
Имя удаляемого класса стиля. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::hasStyleClass(String)
Проверить наличие класса стиля
Проверяет, назначен ли указанный класс стиля данному виджету.
| Параметр | Тип | Описание |
|---|---|---|
styleClass |
String |
Имя проверяемого класса стиля. |
Возвращает boolean: true, если класс назначен; иначе false.
WidgetBase::styleClasses()
Получить классы стилей
Возвращает неизменяемый список всех классов стилей, назначенных этому виджету.
Возвращает List: список классов стилей.
WidgetBase::styleScope(boolean)
Задать область стилей (Scope)
Ограничивает наследование локальных стилей поддеревом этого виджета.
| Параметр | Тип | Описание |
|---|---|---|
styleScope |
boolean |
True для изоляции поиска локальных стилей внутри этого поддерева. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::styleScope()
Проверить область стилей (Scope)
Проверяет, образует ли этот виджет границу локальной области стилей.
Возвращает boolean: true, если изоляция стилей включена.
WidgetBase::localStyle(String, Style)
Задать локальный стиль
Назначает или сбрасывает локальное переопределение стиля для указанного типа виджетов в этом поддереве.
| Параметр | Тип | Описание |
|---|---|---|
widgetType |
String |
Имя целевого типа виджетов. |
style |
Style |
Переопределение стиля или null для сброса. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::localStyle(String)
Получить локальный стиль
Возвращает локальное переопределение стиля для указанного типа виджетов.
| Параметр | Тип | Описание |
|---|---|---|
widgetType |
String |
Имя целевого типа виджетов. |
Возвращает Style: локальное переопределение стиля или null.
Макет и геометрия
| Метод | Описание |
|---|---|
layout(Consumer) |
Обновляет живой LayoutStyle и группирует связанную инвалидацию layout. |
layoutStyle() |
Возвращает активный экземпляр LayoutStyle, определяющий геометрию виджета. |
layoutBounds() |
Возвращает текущие размещённые координаты и размеры виджета в системе координат родителя. |
desiredSize() |
Возвращает размеры, рассчитанные на последнем проходе измерения (measure). |
layoutTransition(float) |
Включает FLIP-анимацию для последующих изменений позиций при пересчёте макета. |
layoutTransition(float, Easing) |
Включает FLIP-анимацию смещения с настраиваемой длительностью и функцией плавности. |
layoutTransitionsEnabled(boolean) |
Включает или выключает автоматические FLIP-переходы при изменении координат макета. |
layoutTransitionsEnabled() |
Проверяет, включены ли FLIP-переходы координат макета. |
WidgetBase::layout(Consumer)
Применить layout
Обновляет живой LayoutStyle и группирует связанную инвалидацию layout.
| Параметр | Тип | Описание |
|---|---|---|
update |
Consumer |
Callback, который меняет размер, отступы, flex, grid или позицию. Null ничего не делает. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::layoutStyle()
Получить LayoutStyle
Возвращает активный экземпляр LayoutStyle, определяющий геометрию виджета.
Возвращает LayoutStyle: активный экземпляр LayoutStyle.
WidgetBase::layoutBounds()
Получить границы макета
Возвращает текущие размещённые координаты и размеры виджета в системе координат родителя.
Возвращает RectView: текущие границы размещения виджета.
WidgetBase::desiredSize()
Получить желаемый размер
Возвращает размеры, рассчитанные на последнем проходе измерения (measure).
Возвращает LayoutSize: последний измеренный желаемый размер.
WidgetBase::layoutTransition(float)
Включить переход макета
Включает FLIP-анимацию для последующих изменений позиций при пересчёте макета.
| Параметр | Тип | Описание |
|---|---|---|
durationSeconds |
float |
Длительность перехода в секундах. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::layoutTransition(float, Easing)
Включить переход макета с кривой плавности
Включает FLIP-анимацию смещения с настраиваемой длительностью и функцией плавности.
| Параметр | Тип | Описание |
|---|---|---|
durationSeconds |
float |
Длительность перехода в секундах. |
easing |
Easing |
Кривая плавности перехода. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::layoutTransitionsEnabled(boolean)
Переключить переходы макета
Включает или выключает автоматические FLIP-переходы при изменении координат макета.
| Параметр | Тип | Описание |
|---|---|---|
enabled |
boolean |
True для включения анимации макета. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::layoutTransitionsEnabled()
Переходы макета активны
Проверяет, включены ли FLIP-переходы координат макета.
Возвращает boolean: true, если переходы макета активны.
Состояние и интерактивность
| Метод | Описание |
|---|---|
visibility(Visibility) |
Задаёт, рисуется ли виджет, скрыт на месте или исключён из layout. |
visibility() |
Возвращает текущий режим видимости (VISIBLE, HIDDEN или COLLAPSED). |
visible(boolean) |
Удобный переключатель: устанавливает VISIBLE при true или HIDDEN при false. |
visible() |
Проверяет, установлен ли режим видимости строго в VISIBLE. |
enabled(boolean) |
Включает или отключает интерактивность и выставляет CSS-псевдокласс :disabled. |
enabled() |
Проверяет, принимает ли виджет взаимодействие пользователя. |
hovered() |
Проверяет, находится ли курсор мыши в данный момент в границах этого виджета. |
mouseCursor(MouseCursor) |
Устанавливает форму курсора при наведении на включённый видимый виджет. |
mouseCursor() |
Возвращает форму курсора, настроенную для этого виджета. |
mouseCursorAt(float, float) |
Определяет форму курсора для конкретных локальных координат внутри виджета. |
focusable(boolean) |
Разрешает или запрещает виджету получать клавиатурный фокус и участвовать в Tab-навигации. |
focusable() |
Проверяет, может ли виджет получать клавиатурный фокус. |
focusScope(boolean) |
Делает этот виджет границей, замыкающей переключение Tab внутри его детей. |
focusScope() |
Проверяет, действует ли этот виджет как изолированная область фокуса. |
focusOrder(int) |
Устанавливает явный относительный индекс последовательности клавиши Tab. |
focusOrder() |
Возвращает относительный индекс табуляции, назначенный этому виджету. |
WidgetBase::visibility(Visibility)
Видимость
Задаёт, рисуется ли виджет, скрыт на месте или исключён из layout.
VISIBLE участвует в layout, отрисовке, вводе и фокусе. HIDDEN сохраняет место, но пропускает отрисовку и ввод. COLLAPSED уходит из layout и инвалидирует и layout, и visual. Null становится VISIBLE.
| Параметр | Тип | Описание |
|---|---|---|
visibility |
Visibility |
VISIBLE, HIDDEN или COLLAPSED. Null означает VISIBLE. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::visibility()
Получить режим видимости
Возвращает текущий режим видимости (VISIBLE, HIDDEN или COLLAPSED).
Возвращает Visibility: текущий режим видимости.
WidgetBase::visible(boolean)
Задать видимость (булево)
Удобный переключатель: устанавливает VISIBLE при true или HIDDEN при false.
| Параметр | Тип | Описание |
|---|---|---|
visible |
boolean |
True для VISIBLE; false для HIDDEN. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::visible()
Видим ли виджет
Проверяет, установлен ли режим видимости строго в VISIBLE.
Возвращает boolean: true, если виджет в режиме VISIBLE.
WidgetBase::enabled(boolean)
Задать доступность (Enabled)
Включает или отключает интерактивность и выставляет CSS-псевдокласс :disabled.
| Параметр | Тип | Описание |
|---|---|---|
enabled |
boolean |
True для включения взаимодействия, false для отключения. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::enabled()
Доступен ли виджет
Проверяет, принимает ли виджет взаимодействие пользователя.
Возвращает boolean: true, если виджет включён.
WidgetBase::hovered()
Наведён ли курсор
Проверяет, находится ли курсор мыши в данный момент в границах этого виджета.
Возвращает boolean: true, если курсор над виджетом.
WidgetBase::mouseCursor(MouseCursor)
Задать курсор мыши
Устанавливает форму курсора при наведении на включённый видимый виджет.
| Параметр | Тип | Описание |
|---|---|---|
mouseCursor |
MouseCursor |
Желаемая форма курсора мыши. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::mouseCursor()
Получить курсор мыши
Возвращает форму курсора, настроенную для этого виджета.
Возвращает MouseCursor: настроенный курсор мыши.
WidgetBase::mouseCursorAt(float, float)
Получить курсор по координатам
Определяет форму курсора для конкретных локальных координат внутри виджета.
| Параметр | Тип | Описание |
|---|---|---|
localX |
float |
Локальная координата X. |
localY |
float |
Локальная координата Y. |
Возвращает MouseCursor: форма курсора в указанной точке.
WidgetBase::focusable(boolean)
Задать фокусируемость
Разрешает или запрещает виджету получать клавиатурный фокус и участвовать в Tab-навигации.
| Параметр | Тип | Описание |
|---|---|---|
focusable |
boolean |
True для участия в фокусе с клавиатуры. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::focusable()
Фокусируем ли виджет
Проверяет, может ли виджет получать клавиатурный фокус.
Возвращает boolean: true, если виджет фокусируемый.
WidgetBase::focusScope(boolean)
Задать границу фокуса (Scope)
Делает этот виджет границей, замыкающей переключение Tab внутри его детей.
| Параметр | Тип | Описание |
|---|---|---|
focusScope |
boolean |
True для замыкания клавиатурного фокуса внутри этого поддерева. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::focusScope()
Является ли границей фокуса
Проверяет, действует ли этот виджет как изолированная область фокуса.
Возвращает boolean: true, если область фокуса активна.
WidgetBase::focusOrder(int)
Задать порядок фокуса
Устанавливает явный относительный индекс последовательности клавиши Tab.
| Параметр | Тип | Описание |
|---|---|---|
focusOrder |
int |
Относительный индекс порядка табуляции. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::focusOrder()
Получить порядок фокуса
Возвращает относительный индекс табуляции, назначенный этому виджету.
Возвращает int: относительный индекс порядка фокуса.
Трансформации и анимация
| Метод | Описание |
|---|---|
opacity(float) |
Мгновенно устанавливает непрозрачность виджета (от 0.0 до 1.0) и запрашивает перерисовку. |
opacity() |
Возвращает текущую визуальную непрозрачность виджета. |
rotationDegrees(float) |
Мгновенно задаёт угол поворота в градусах вокруг активной опорной точки (pivot). |
transformOrigin(TransformOrigin) |
Выбирает именованный пресет опорной точки (CENTER, TOP_LEFT и др.) для вращения и масштабирования. |
transformPivot(float, float) |
Задаёт пользовательские координаты опорной точки в локальных пикселях виджета. |
transform() |
Возвращает активную модель Transform, управляющую смещениями, вращением, масштабом и pivot. |
animate(AnimatedProperty, float, float) |
Плавно анимирует встроенное свойство к целевому значению за указанное количество секунд. |
animate(AnimatedProperty, float, TransitionSpec) |
Плавно меняет встроенное свойство или применяет его сразу, если длительность неположительная. |
animateOpacity(float, float) |
Плавно переводит прозрачность к целевому значению с использованием кривой плавности. |
animatePosition(float, float, float) |
Анимирует смещение визуальной позиции виджета по осям X и Y. |
animatePositionFrom(float, float, float, float, float) |
Анимирует визуальную позицию строго из точки (startX, startY) в точку (endX, endY). |
animateScale(float, float, float) |
Плавно изменяет визуальные коэффициенты масштабирования по обеим осям. |
shake(float, float) |
Вызывает быстрое покачивание виджета для визуальной обратной связи об ошибке. |
stopShakeAnimations() |
Прерывает активные анимации покачивания и возвращает виджет в исходное положение. |
animateSpring(AnimatedProperty, float, float, float) |
Запускает симуляцию гармонического осциллятора с реалистичным отскоком и затуханием. |
animateColor(MutableColor, ColorView, float) |
Плавно интерполирует цветовые компоненты RGBA к новому целевому цвету. |
stopColorAnimations() |
Прерывает все активные переходы цвета на этом виджете. |
playStoryboard(Storyboard) |
Воспроизводит многодорожечный таймлайн Storyboard по дереву этого виджета. |
playStoryboard(Object, Storyboard) |
Воспроизводит раскадровку под уникальным ключом, останавливая предыдущую с тем же ключом. |
stopStoryboard(Object) |
Останавливает и удаляет активную раскадровку с указанным ключом. |
stopAnimation(AnimatedProperty) |
Прерывает активные анимации, нацеленные на указанное свойство. |
stopAnimations() |
Останавливает все переходы, пружины, shake и раскадровки на этом виджете. |
animationRunning(AnimatedProperty) |
Проверяет, проигрывается ли в данный момент анимация для указанного свойства. |
animationsRunning() |
Проверяет, проигрывается ли какая-либо анимация на этом виджете. |
WidgetBase::opacity(float)
Задать непрозрачность
Мгновенно устанавливает непрозрачность виджета (от 0.0 до 1.0) и запрашивает перерисовку.
| Параметр | Тип | Описание |
|---|---|---|
opacity |
float |
Значение непрозрачности от 0.0 (прозрачный) до 1.0 (полная видимость). |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::opacity()
Получить непрозрачность
Возвращает текущую визуальную непрозрачность виджета.
Возвращает float: значение непрозрачности от 0.0 до 1.0.
WidgetBase::rotationDegrees(float)
Задать угол вращения
Мгновенно задаёт угол поворота в градусах вокруг активной опорной точки (pivot).
| Параметр | Тип | Описание |
|---|---|---|
degrees |
float |
Угол поворота в градусах. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::transformOrigin(TransformOrigin)
Задать опорную точку (Origin)
Выбирает именованный пресет опорной точки (CENTER, TOP_LEFT и др.) для вращения и масштабирования.
| Параметр | Тип | Описание |
|---|---|---|
origin |
TransformOrigin |
Именованный пресет опорной точки. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::transformPivot(float, float)
Задать координаты точки вращения (Pivot)
Задаёт пользовательские координаты опорной точки в локальных пикселях виджета.
| Параметр | Тип | Описание |
|---|---|---|
x |
float |
Координата X опорной точки в пикселях. |
y |
float |
Координата Y опорной точки в пикселях. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::transform()
Получить модель трансформации
Возвращает активную модель Transform, управляющую смещениями, вращением, масштабом и pivot.
Возвращает Transform: активный экземпляр Transform.
WidgetBase::animate(AnimatedProperty, float, float)
Анимировать свойство по длительности
Плавно анимирует встроенное свойство к целевому значению за указанное количество секунд.
| Параметр | Тип | Описание |
|---|---|---|
property |
AnimatedProperty |
Встроенное свойство: opacity, position, scale, rotation или pivot. |
targetValue |
float |
Целевое значение. Opacity ограничивается диапазоном 0..1; нечисловые значения нормализуются. |
durationSeconds |
float |
Длительность перехода в секундах. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::animate(AnimatedProperty, float, TransitionSpec)
Анимировать свойство
Плавно меняет встроенное свойство или применяет его сразу, если длительность неположительная.
Уже идущий переход с теми же параметрами перенацеливается, а не перезапускается. Поворот идёт по кратчайшему углу. Null-свойство игнорируется; null-spec заменяется на TransitionSpec.DEFAULT.
| Параметр | Тип | Описание |
|---|---|---|
property |
AnimatedProperty |
Встроенное свойство: opacity, position, scale, rotation или pivot. |
targetValue |
float |
Целевое значение. Opacity ограничивается диапазоном 0..1; нечисловые значения нормализуются. |
spec |
TransitionSpec |
Длительность и easing. Null использует spec по умолчанию; неположительная длительность ставит значение сразу. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::animateOpacity(float, float)
Анимировать непрозрачность
Плавно переводит прозрачность к целевому значению с использованием кривой плавности.
| Параметр | Тип | Описание |
|---|---|---|
targetOpacity |
float |
Целевая непрозрачность от 0.0 до 1.0. |
durationSeconds |
float |
Длительность перехода в секундах. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::animatePosition(float, float, float)
Анимировать позицию
Анимирует смещение визуальной позиции виджета по осям X и Y.
| Параметр | Тип | Описание |
|---|---|---|
x |
float |
Целевое смещение X в пикселях. |
y |
float |
Целевое смещение Y в пикселях. |
durationSeconds |
float |
Длительность перехода в секундах. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::animatePositionFrom(float, float, float, float, float)
Анимировать позицию от начальной точки
Анимирует визуальную позицию строго из точки (startX, startY) в точку (endX, endY).
| Параметр | Тип | Описание |
|---|---|---|
startX |
float |
Начальное смещение X. |
startY |
float |
Начальное смещение Y. |
endX |
float |
Конечное смещение X. |
endY |
float |
Конечное смещение Y. |
durationSeconds |
float |
Длительность перехода в секундах. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::animateScale(float, float, float)
Анимировать масштаб
Плавно изменяет визуальные коэффициенты масштабирования по обеим осям.
| Параметр | Тип | Описание |
|---|---|---|
x |
float |
Целевой масштаб по оси X. |
y |
float |
Целевой масштаб по оси Y. |
durationSeconds |
float |
Длительность перехода в секундах. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::shake(float, float)
Запустить покачивание (Shake)
Вызывает быстрое покачивание виджета для визуальной обратной связи об ошибке.
| Параметр | Тип | Описание |
|---|---|---|
amplitude |
float |
Амплитуда отклонения покачивания в пикселях. |
durationSeconds |
float |
Длительность перехода в секундах. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::stopShakeAnimations()
Остановить покачивание
Прерывает активные анимации покачивания и возвращает виджет в исходное положение.
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::animateSpring(AnimatedProperty, float, float, float)
Анимировать с физикой пружины
Запускает симуляцию гармонического осциллятора с реалистичным отскоком и затуханием.
| Параметр | Тип | Описание |
|---|---|---|
property |
AnimatedProperty |
Встроенное свойство: opacity, position, scale, rotation или pivot. |
targetValue |
float |
Целевое значение. Opacity ограничивается диапазоном 0..1; нечисловые значения нормализуются. |
stiffness |
float |
Коэффициент жёсткости пружины. |
damping |
float |
Коэффициент демпфирования (затухания). |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::animateColor(MutableColor, ColorView, float)
Анимировать цвет
Плавно интерполирует цветовые компоненты RGBA к новому целевому цвету.
| Параметр | Тип | Описание |
|---|---|---|
color |
MutableColor |
Целевой изменяемый цвет MutableColor. |
targetColor |
ColorView |
Конечное значение цвета. |
durationSeconds |
float |
Длительность перехода в секундах. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::stopColorAnimations()
Остановить анимации цвета
Прерывает все активные переходы цвета на этом виджете.
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::playStoryboard(Storyboard)
Запустить раскадровку (Storyboard)
Воспроизводит многодорожечный таймлайн Storyboard по дереву этого виджета.
| Параметр | Тип | Описание |
|---|---|---|
storyboard |
Storyboard |
Объект раскадровки Storyboard для воспроизведения. |
Возвращает StoryboardPlayer: StoryboardPlayer, управляющий воспроизведением.
WidgetBase::playStoryboard(Object, Storyboard)
Запустить именованную раскадровку
Воспроизводит раскадровку под уникальным ключом, останавливая предыдущую с тем же ключом.
| Параметр | Тип | Описание |
|---|---|---|
key |
Object |
Уникальный ключ раскадровки. |
storyboard |
Storyboard |
Объект раскадровки Storyboard для воспроизведения. |
Возвращает StoryboardPlayer: StoryboardPlayer, управляющий воспроизведением.
WidgetBase::stopStoryboard(Object)
Остановить раскадровку
Останавливает и удаляет активную раскадровку с указанным ключом.
| Параметр | Тип | Описание |
|---|---|---|
key |
Object |
Уникальный ключ раскадровки. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::stopAnimation(AnimatedProperty)
Остановить анимацию свойства
Прерывает активные анимации, нацеленные на указанное свойство.
| Параметр | Тип | Описание |
|---|---|---|
property |
AnimatedProperty |
Встроенное свойство: opacity, position, scale, rotation или pivot. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::stopAnimations()
Остановить все анимации
Останавливает все переходы, пружины, shake и раскадровки на этом виджете.
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::animationRunning(AnimatedProperty)
Анимируется ли свойство
Проверяет, проигрывается ли в данный момент анимация для указанного свойства.
| Параметр | Тип | Описание |
|---|---|---|
property |
AnimatedProperty |
Встроенное свойство: opacity, position, scale, rotation или pivot. |
Возвращает boolean: true, если свойство анимируется.
WidgetBase::animationsRunning()
Воспроизводятся ли анимации
Проверяет, проигрывается ли какая-либо анимация на этом виджете.
Возвращает boolean: true, если активна хотя бы одна анимация.
Привязки
| Метод | Описание |
|---|---|
bind(BindingData, Object) |
Связывает поддерживаемый ключ свойства с сигналом и возвращает этот виджет. |
WidgetBase::bind(BindingData, Object)
Привязать свойство к сигналу
Связывает поддерживаемый ключ свойства с сигналом и возвращает этот виджет.
| Параметр | Тип | Описание |
|---|---|---|
key |
BindingData |
Ключ-идентификатор свойства виджета и ожидаемого типа сигнала. |
signal |
Object |
Сигнал, который задаёт значение свойства и получает изменения виджета. |
Возвращает WidgetBase: Этот виджет для дальнейшей fluent-настройки.
Отрисовка и кэширование
| Метод | Описание |
|---|---|
renderer(WidgetRender) |
Заменяет стандартный visual виджета одним экземпляром renderer. |
renderer() |
Возвращает пользовательский процедурный рендерер или null при стандартной отрисовке. |
renderCachingEnabled(boolean) |
Включает или выключает retained-кэширование записанных команд рисования. |
renderCachingEnabled() |
Проверяет, активно ли retained-кэширование команд отрисовки. |
invalidateRenderCache() |
Помечает буфер команд устаревшим, вызывая повторную запись на следующем кадре. |
render(RenderContext) |
Выполняет отрисовку виджета: вызывает кастомный рендерер или стандартное содержимое, затем обходит детей. |
renderCached(RenderContext) |
Воспроизводит сохранённый буфер команд рисования или перезаписывает его при устаревании. |
measure(LayoutContext) |
Вычисляет желаемый размер desiredSize на основе содержимого и ограничений LayoutContext. |
measureCached(LayoutContext) |
Повторно использует измеренный desiredSize, если ограничения совпадают и поддерево не dirty. |
arrange(RectView) |
Устанавливает окончательные границы виджета в координатах экрана и размещает дочерние элементы. |
WidgetBase::renderer(WidgetRender)
Свой renderer
Заменяет стандартный visual виджета одним экземпляром renderer.
Renderer рисует фон и содержимое. Обход детей по-прежнему делает фреймворк. Null возвращает стандартный visual. Renderer из стилей применяется только если этот слот пуст.
| Параметр | Тип | Описание |
|---|---|---|
renderer |
WidgetRender |
Экземпляр WidgetRender или null для стандартного visual. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::renderer()
Получить рендерер
Возвращает пользовательский процедурный рендерер или null при стандартной отрисовке.
Возвращает WidgetRender: активный экземпляр WidgetRender или null.
WidgetBase::renderCachingEnabled(boolean)
Переключить кэш рендеринга
Включает или выключает retained-кэширование записанных команд рисования.
| Параметр | Тип | Описание |
|---|---|---|
enabled |
boolean |
True для включения кэширования команд рисования. |
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::renderCachingEnabled()
Включён ли кэш рендеринга
Проверяет, активно ли retained-кэширование команд отрисовки.
Возвращает boolean: true, если кэширование включено.
WidgetBase::invalidateRenderCache()
Инвалидировать кэш отрисовки
Помечает буфер команд устаревшим, вызывая повторную запись на следующем кадре.
Возвращает WidgetBase: этот виджет для fluent-настройки.
WidgetBase::render(RenderContext)
Отрисовать виджет
Выполняет отрисовку виджета: вызывает кастомный рендерер или стандартное содержимое, затем обходит детей.
| Параметр | Тип | Описание |
|---|---|---|
context |
RenderContext |
RenderContext, предоставляющий канвас и состояние графики. |
WidgetBase::renderCached(RenderContext)
Отрисовать с кэшированием
Воспроизводит сохранённый буфер команд рисования или перезаписывает его при устаревании.
| Параметр | Тип | Описание |
|---|---|---|
context |
RenderContext |
RenderContext, предоставляющий канвас и состояние графики. |
WidgetBase::measure(LayoutContext)
Измерить размеры
Вычисляет желаемый размер desiredSize на основе содержимого и ограничений LayoutContext.
| Параметр | Тип | Описание |
|---|---|---|
context |
LayoutContext |
LayoutContext с доступным пространством и контекстом родителя. |
WidgetBase::measureCached(LayoutContext)
Измерить с кэшированием
Повторно использует измеренный desiredSize, если ограничения совпадают и поддерево не dirty.
| Параметр | Тип | Описание |
|---|---|---|
context |
LayoutContext |
LayoutContext с доступным пространством и контекстом родителя. |
WidgetBase::arrange(RectView)
Разместить границы (Arrange)
Устанавливает окончательные границы виджета в координатах экрана и размещает дочерние элементы.
| Параметр | Тип | Описание |
|---|---|---|
bounds |
RectView |
Финальный прямоугольник границ размещения. |
События и жизненный цикл
| Метод | Описание |
|---|---|
on(EventType, EventListener) |
Регистрирует строго типизированный слушатель событий и возвращает дескриптор подписки. |
on(EventType, boolean, EventListener) |
Регистрирует типизированный слушатель с контролем получения событий, помеченных как cancelled. |
emit(Event) |
Отправляет событие слушателям, зарегистрированным непосредственно на этом виджете. |
handle(Event) |
Диспетчеризирует событие и выполняет стандартную маршрутизацию ввода. |
invalidate(int) |
Помечает layout или visual устаревшими и поднимает флаги к родителям. |
clearInvalidation(int) |
Очищает обработанные dirty-флаги после завершения прохода layout или отрисовки. |
invalidationFlags() |
Возвращает битовую маску ожидающих флагов инвалидации на этом виджете. |
subtreeInvalidationFlags() |
Возвращает объединённую битовую маску флагов инвалидации всего поддерева этого виджета. |
tick(FrameContext) |
Продвигает таймлайны анимаций, переходов и временное состояние виджета на текущем кадре. |
dispose() |
Освобождает занятые ресурсы, останавливает активные анимации и отписывает слушателей. |
parent() |
Возвращает родительский контейнер или null, если виджет корневой либо отсоединён. |
children() |
Возвращает неизменяемый список дочерних виджетов, входящих в состав этого контейнера. |
uiContext() |
Возвращает активный UIContext, предоставляющий доступ к окну, коэффициенту масштаба и фокусу. |
WidgetBase::on(EventType, EventListener)
Подписаться на событие
Регистрирует строго типизированный слушатель событий и возвращает дескриптор подписки.
| Параметр | Тип | Описание |
|---|---|---|
type |
EventType |
Маркер EventType, идентифицирующий тип события. |
listener |
EventListener |
Callback-слушатель события. |
Возвращает EventSubscription: дескриптор EventSubscription для отписки.
WidgetBase::on(EventType, boolean, EventListener)
Подписаться с отменёнными событиями
Регистрирует типизированный слушатель с контролем получения событий, помеченных как cancelled.
| Параметр | Тип | Описание |
|---|---|---|
type |
EventType |
Маркер EventType, идентифицирующий тип события. |
receiveCancelled |
boolean |
True для получения отменённых событий. |
listener |
EventListener |
Callback-слушатель события. |
Возвращает EventSubscription: дескриптор EventSubscription для отписки.
WidgetBase::emit(Event)
Отправить событие (Emit)
Отправляет событие слушателям, зарегистрированным непосредственно на этом виджете.
| Параметр | Тип | Описание |
|---|---|---|
event |
Event |
Экземпляр отправляемого события. |
WidgetBase::handle(Event)
Обработать событие (Handle)
Диспетчеризирует событие и выполняет стандартную маршрутизацию ввода.
| Параметр | Тип | Описание |
|---|---|---|
event |
Event |
Экземпляр отправляемого события. |
WidgetBase::invalidate(int)
Инвалидация
Помечает layout или visual устаревшими и поднимает флаги к родителям.
InvalidationFlags.LAYOUT — если меняются измерение или размещение, VISUAL — если только отрисовка. Вызов также сбрасывает retained render cache. NONE ничего не делает.
| Параметр | Тип | Описание |
|---|---|---|
flags |
int |
Битовые флаги InvalidationFlags, обычно LAYOUT, VISUAL или оба. |
WidgetBase::clearInvalidation(int)
Сбросить флаги инвалидации
Очищает обработанные dirty-флаги после завершения прохода layout или отрисовки.
| Параметр | Тип | Описание |
|---|---|---|
flags |
int |
Битовые флаги InvalidationFlags, обычно LAYOUT, VISUAL или оба. |
WidgetBase::invalidationFlags()
Получить флаги инвалидации
Возвращает битовую маску ожидающих флагов инвалидации на этом виджете.
Возвращает int: битовая маска dirty-флагов.
WidgetBase::subtreeInvalidationFlags()
Получить флаги инвалидации поддерева
Возвращает объединённую битовую маску флагов инвалидации всего поддерева этого виджета.
Возвращает int: битовая маска флагов инвалидации поддерева.
WidgetBase::tick(FrameContext)
Тик кадра (Tick)
Продвигает таймлайны анимаций, переходов и временное состояние виджета на текущем кадре.
| Параметр | Тип | Описание |
|---|---|---|
frame |
FrameContext |
FrameContext, предоставляющий delta-время и часы кадра. |
WidgetBase::dispose()
Освободить ресурсы (Dispose)
Освобождает занятые ресурсы, останавливает активные анимации и отписывает слушателей.
WidgetBase::parent()
Получить родительский виджет
Возвращает родительский контейнер или null, если виджет корневой либо отсоединён.
Возвращает Widget: родительский виджет или null.
WidgetBase::children()
Получить дочерние виджеты
Возвращает неизменяемый список дочерних виджетов, входящих в состав этого контейнера.
Возвращает List: список дочерних виджетов.
WidgetBase::uiContext()
Получить контекст UI
Возвращает активный UIContext, предоставляющий доступ к окну, коэффициенту масштаба и фокусу.
Возвращает UIContext: активный контекст UIContext.