DragController
Контроллер жеста перетаскивания, подключаемый к любому виджету через композицию для инициации drag-and-drop с ghost-предпросмотром, порогом смещения и автопрокруткой.
Обзор
DragController добавляет функционал инициатора перетаскивания любому виджету посредством композиции.
Пример использования
DragController.attach(headerWidget)
.dragged(entireCardWidget)
.payload(() -> DragPayload.of("card-1", "cards/item", "Card 1"))
.threshold(4.0f)
.ghostWidget(entireCardWidget, 0.75f)
.onDragEnd(end -> System.out.println("Результат: " + end.outcome()));
Параметры настройки
| Параметр | Метод | Назначение |
|---|---|---|
| Ручка | attach(widget) |
Виджет, перехватывающий нажатие мыши для старта перетаскивания. |
| Перемещаемый виджет | dragged(widget) |
Логический компонент, который фактически перемещается. |
| Ленивый payload | payload(Supplier) |
Вычисляет данные только при фактическом превышении порога смещения. |
| Порог смещения | threshold(px) |
Мертвая зона в пикселях до начала перетаскивания. |
| Фиксация оси | lockGhostAxis(Orientation) |
Ограничивает движение ghost-виджета только по горизонтали или вертикали. |
| Автопрокрутка | autoScroll(edge, speed) |
Прокручивает родительские контейнеры при поднесении к краю. |
Подключение DragController к виджету
DragController.attach(header)
.dragged(card)
.payload(() -> DragPayload.of("card-1", "card", "Card #1", data))
.threshold(4.0f)
.onDragEnd(end -> System.out.println("Outcome: " + end.outcome()));
Связанные ссылки
- DragSession: Состояние и контроллер активного жеста перетаскивания, управляющий координатами указателя, активной целью сброса, позиционированием ghost, индикаторами вставки и автопрокруткой.
- DropController: Контроллер цели сброса, подключаемый к любому виджету через композицию для фильтрации payload и обработки событий drag enter, over, leave и drop.
API
DragController::attach(Widget)
Подключает новый DragController к указанному виджету-ручке.
| Параметр | Тип | Описание |
|---|---|---|
handle |
Widget |
Виджет, выступающий в роли ручки для инициации перетаскивания. |
Возвращает DragController: Вновь подключенный экземпляр DragController..
DragController::autoScroll(boolean)
Включает или отключает поведение автопрокрутки.
| Параметр | Тип | Описание |
|---|---|---|
autoScroll |
boolean |
Включена ли автоматическая прокрутка. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::autoScroll(float, float)
Настраивает параметры автоматической прокрутки контейнера при поднесении к краю.
| Параметр | Тип | Описание |
|---|---|---|
edge |
float |
Отступ от края в пикселях для срабатывания автопрокрутки. |
pixelsPerSecond |
float |
Скорость автоматической прокрутки в пикселях в секунду. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::cancel()
Программно отменяет активный жест перетаскивания.
DragController::detach()
Отключает контроллер перетаскивания от виджета-ручки и удаляет зарегистрированные слушатели.
DragController::dragged(Widget)
Задает логический виджет, перемещаемый операцией перетаскивания (например, всю карточку при перетаскивании за заголовок).
| Параметр | Тип | Описание |
|---|---|---|
dragged |
Widget |
Логический виджет, перемещаемый операцией перетаскивания. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::dragging()
Проверяет, находится ли жест перетаскивания в активном состоянии с перемещением.
Возвращает boolean: True, если жест перетаскивания активен в данный момент..
DragController::enabled(boolean)
Включает или выключает данный контроллер перетаскивания.
| Параметр | Тип | Описание |
|---|---|---|
enabled |
boolean |
Включен ли контроллер перетаскивания. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::filter(Predicate)
Задает предикат-фильтр для выборочного отклонения событий нажатия указателя.
| Параметр | Тип | Описание |
|---|---|---|
filter |
Predicate |
Предикат-фильтр для событий нажатия указателя. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::ghost(DragGhost)
Настраивает пользовательский отрисовщик ghost-представления перетаскиваемого элемента.
| Параметр | Тип | Описание |
|---|---|---|
ghost |
DragGhost |
Отрисовщик ghost-представления перетаскиваемого элемента. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::ghost(Widget)
Настраивает ghost-отображение, дублирующее визуальный облик указанного виджета.
| Параметр | Тип | Описание |
|---|---|---|
widget |
Widget |
Виджет, визуальный облик которого клонируется для ghost-отображения. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::ghostOpacity(float)
Задает уровень непрозрачности для предпросмотра ghost-виджета.
| Параметр | Тип | Описание |
|---|---|---|
opacity |
float |
Непрозрачность ghost-отображения перетаскивания. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::handle()
Возвращает виджет-ручку, к которому подключен данный контроллер.
Возвращает Widget: Виджет, настроенный как ручка перетаскивания..
DragController::lockGhostAxis(Orientation)
Ограничивает перемещение ghost-отображения только по горизонтали или вертикали.
| Параметр | Тип | Описание |
|---|---|---|
axis |
Orientation |
Ограничение оси перемещения ghost-отображения. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::onDragEnd(Consumer)
Регистрирует коллбэк, вызываемый при завершении перетаскивания с указанием финального результата.
| Параметр | Тип | Описание |
|---|---|---|
listener |
Consumer |
Коллбэк, вызываемый при завершении перетаскивания. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::onDragMove(Consumer)
Регистрирует коллбэк, вызываемый при каждом перемещении указателя во время перетаскивания.
| Параметр | Тип | Описание |
|---|---|---|
listener |
Consumer |
Коллбэк, вызываемый при перемещении указателя во время перетаскивания. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::onDragStart(Consumer)
Регистрирует коллбэк, вызываемый в момент фактического начала перетаскивания.
| Параметр | Тип | Описание |
|---|---|---|
listener |
Consumer |
Коллбэк, вызываемый при старте сессии перетаскивания. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::payload(DragPayload)
Настраивает статический константный payload для жеста перетаскивания.
| Параметр | Тип | Описание |
|---|---|---|
payload |
DragPayload |
Статический payload для передачи. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::payload(Supplier)
Настраивает ленивый поставщик payload, вызываемый при превышении порога смещения перетаскивания.
| Параметр | Тип | Описание |
|---|---|---|
payload |
Supplier |
Ленивый поставщик payload, вызываемый в момент начала перетаскивания. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::session()
Возвращает активную сессию DragSession или null, если перетаскивание неактивно.
Возвращает DragSession: Активная сессия перетаскивания DragSession или null..
DragController::sourceOpacity(float)
Задает прозрачность исходного виджета во время активного перетаскивания.
| Параметр | Тип | Описание |
|---|---|---|
opacity |
float |
Непрозрачность ghost-отображения перетаскивания. |
Возвращает DragController: Данный DragController для цепочки вызовов..
DragController::threshold(float)
Задает минимальный порог смещения в пикселях до начала сессии перетаскивания.
| Параметр | Тип | Описание |
|---|---|---|
threshold |
float |
Порог смещения в пикселях до активации перетаскивания. |
Возвращает DragController: Данный DragController для цепочки вызовов..