
Статья описывает UI-паттерн компактного отображения множества кнопок действий.
Ниже приведено описание, досточно строгое чтобы было понятно и человеку и AI. Сначала даются понятия, затем общее описание, и есть видео-демо. Название s800s ничего не означает, но оно должно быть — пусть будет таким 🙂
Видео-демо:

разворачиваемая панель с кнопками ~ s800s
понятия
-
COMPONENT: текущий компонент в целом -
TIMER: таймер обратного отсчёта длиной 20 секунд; сбрасывается каждый раз когда пользователь взаимодействует (нажатие, прокрутка) сCOMPONENTи при каждой инициализации состоянияSTATE_2иSTATE_3; по истечении отсчётаCOMPONENTавтоматически переходит в состояниеSTATE_1; таймер запускается только в состоянияхSTATE_2иSTATE_3 -
STATE_1: начальное состояние; в этом состоянии отображается толькоBTN_INIиL_AREA -
STATE_2:-
отображается
BTN_CLOSEна месте где до этого отображаласьBTN_INI -
отображается
BTN_Q -
отображается
IN_AREAс кнопкамиBTN_IN_COMPACTвнутри
-
-
STATE_3: то же чтоSTATE_2только вместоBTN_IN_COMPACTотображаютсяBTN_IN_EXTRA -
BTN_INI: кнопка-иконка; при нажатии выполняется переход вSTATE_2 -
L_AREA: область для отображенияBTN_IN_COMPACTпоследней нажатойBTN_IN; в видеBTN_IN_COMPACT; пока ещё нажатий не было это должна быть перваяBTN_INиз списка этихBTN_IN -
BTN_CLOSE: кнопка-иконка; иконка в виде крестика; при нажатии выполняется переход вSTATE_1 -
BTN_IN: кнопка действия, отображающаяся вIN_AREA; при нажатии наBTN_INвыполняется переход вSTATE_1-
BTN_IN_COMPACT: кнопка отображается как кнопка-иконка -
BTN_IN_EXTRA: кнопка отображается как кнопка-иконка плюс справа от неё отображаетсяBTN_TEXT
-
-
BTN_TEXT: поясняющий кнопку текст -
IN_AREA: скроллируемая по горизонтали область; она занимает всё доступное пространство по ширине (речь о пространстве за вычетом пространства под кнопкамиBTN_CLOSEиBTN_Q); если слева или справа есть контент который не виден, так как ушёл за видимую область, то должна отображаться стрелочкаP_ARROW(просто индикатор), которая дает понять, что есть еще контент в скрытой области -
P_ARROW: стрелочка-индикатор переполнения видимой областиIN_AREA -
BTN_Q: кнопка-иконка с иконкой в виде знака вопроса; при нажатии выполняется переход вSTATE_3; при повторном нажатии выполняется переход вSTATE_2
описание
-
способ компактного отображения большого количества кнопок действия
-
изначально это просто кнопка, по нажатию на которую отображаются дополнительные кнопки
-
есть специальная кнопка (
BTN_Q) чтобы не догадываться по иконке кнопки что она значит, то есть при нажатии наBTN_Qрядом с кнопками появляется поясняющий текст -
компонент автоматически (через время
TIMER) либо вручную (по кнопкеBTN_CLOSE) возвращается в компактный вид -
есть область под отображение последней использовавшейся кнопки (
L_AREA), зачастую это удобно -
схематичный пример, вариант при изначальном расположении
BTN_INIсправа на экране
// STATE_1[пустое пространство] [L_AREA] [BTN_INI]// STATE_2[IN_AREA] [BTN_Q] [BTN_CLOSE]
заключение
-
имхо было бы круто в своих приложениях более широко использовать такой паттерн, либо аналогичный — он компактный, универсальный и юзер-френдли
ссылка на оригинал статьи https://habr.com/ru/articles/1098984/