По душе · Android × Figma · 11.09.2026 · создание и управление событием

Пятый десяток собран: страница создания события закрыта целиком

Сорок семь кадров секции «Создание события» — от пустой формы до созданного события. Форма с лентой обложек и барабаном даты, выбранное место с картой внутри карточки, теги чипами, блок «Доступ к событию» в пролистанном и полном виде со всплывающими списками и состояниями ошибки, два листа-модалки (поиск места на карте и списком, ввод тега со всеми исходами), страница созданного события с QR-кодом и экран «Управление». Каждый кадр собран из данных ноды и сведён с рендером Figma в масштабе ×3. По пути поправлена модель размытия, которая полтора десятка кадров назад была записана вдвое меньшей, чем надо.

47 / 48кадров с зелёной геометрией при пороге 0,3 %
0,001 %лучшая геометрия среди измеряемых кадров
0,530 %худшая — копия мастера карты
12расхождений найдено, все закрыты
4дефекта макета — дизайнеру

Смотровая

Кадр рядом с рендером

Тяните шторку, чтобы совместить макет и приложение. «Карта» показывает, где остаётся расхождение: синим закрыт системный статус-бар — его рисует система, в сравнении он не участвует (спека 6.4). Кадры формы выше экрана: от 1234 до 1723 dp, снимаются полосами по 844 и склеиваются.

Рендер кадра из Figma Снимок экрана приложения

Числа

Четыре измерения на кадр

Полное — доля пикселей, отличающихся сильнее ΔE 6 вне масок. Без текста — то же с исключёнными текстовыми блоками. ±1 px — пиксель считается расхождением, только если не совпал ни с одним пикселем рендера в окне ±1: сдвиг растра на долю пикселя не есть ошибка вёрстки. Геометрия — два последних вместе, то есть чистая форма, положение и материал; по ней и выносится вердикт. Подсвечены строки выше порога — у каждой измеренная причина в разделе «Границы».

ЭкранКадрСостояние Полное %Без текста % ±1 px %Геометрия % Шкала до порога 0,3 %

Разбор

Что оказалось не так

Каждая строка — расхождение из реестра docs/figma/fig/ledger.md: что показала нода, что делало приложение и сколько это стоило в числах.

Объявленный радиус размытия слоя — это и есть радиус, а не его половина

Самая дорогая находка десятка, и она задним числом чинит метод. У обложки-заглушки нового события три размытых эллипса бренда с LAYER BLUR 400, 400 и 200. Я нарисовал их с половиной радиуса — так было записано в заметках — и получил в левом верхнем углу насыщенный синий там, где в рендере бледно-голубой. С полным радиусом профили по столбцу x = 60 и по строке y = 200 сходятся с рендером до 1…6 уровней канала. Проверка по уже закрытому свечению карты: узел 229:18754 объявляет 112,2257 — ровно то число, что стоит в коде с самого начала. Значит половина была ошибкой записи, а не модели.

35,7 → 0,210 %узлы 736:92285, 92286, 92295
кадр 736:92276

Форма, пролистанная вниз, — это не прокрутка, а выравнивание по низу

На пяти кадрах блок «Доступ к событию» показан у нижнего края экрана. В ноде это не скролл: у Main Content стоит primaryAxisAlignItems: MAX, и содержимое, которое выше кадра, уходит за верхний край и обрезается самим узлом — первая плитка обложки стоит на y = −752 при 156 у непролистанной формы. В Compose это сдвиг колонки на разницу и clipToBounds у подложки; фиксированная высота контейнера, наоборот, ужимает детей, и форма уезжала на 70 dp вверх.

0,058…0,089 %узел 688:47958
пять кадров S46

У карты внутри карточки места нет ни тени, ни обводки

Карточка карты — тот же узел, что на «Странице События», и там у него белая обводка 1 INSIDE и две тени. Внутри карточки места effects и strokes пусты. Разница заметна только снизу, где карта лежит на собственной подсветке: обводка давала полосу 312×3 dp у нижнего края (замер столбца x = 100: рендер 185, 247, 228 против снимка 225, 252, 242), тень — градиент 217 → 232 под карточкой. Пара «нода → нода» ушла дизайнеру.

0,579 → 0,250 %узел 688:47593
против 229:18750

Растр карты в листе лучше не сглаживать

Карта во весь лист — окно исходника 717×1213 на 406×687 dp, то есть увеличение почти втрое. Любое сглаживающее увеличение размазывает тонкие линии дорог на два пикселя, и метрика, которая прощает сдвиг ровно на один, считает их расхождением. Перебор фильтров: Lanczos 0,421 %, Bicubic 0,394, Hamming 0,345 и 0,295 без сглаживания. Сам сдвиг растра (−8 dp, узел висит левее кадра) нашёлся перебором совмещений — для этого появился tools/shift.py.

0,421 → 0,295 %узел 688:50279
FilterQuality.None

Белая заливка в режиме MULTIPLY — не подложка

У группы кнопок масштаба на карте объявлена сплошная белая заливка, и по рендеру кнопки выглядят почти непрозрачными. Но режим наложения у этой заливки — MULTIPLY: умножение на белое не меняет ничего. Со сплошной подложкой «геометрия» кадра пошла 0,424 → 1,098 %; видимая плотность даётся только стеклом кита.

1,098 → 0,424 %узел 688:50303
заливка убрана

Ряды тегов идут после строки «Добавить теги», а не перед ней

Порядок читается только из дерева: строка-поле стоит на y = 1042, ряды чипов — на 1102. Собранный «как кажется» экран давал решётку тёмной там, где в рендере она светло-серая, и наоборот. Заодно нашлось, что у решётки и крестика внутри чипа обводка text-secondary 40 %, а не цвет метки.

0,543 → 0,238 %узлы 688:47884 и 688:47891
кадр 688:47811

Подложка страницы события печётся под свою высоту и без затемнения

Фон «Страницы События» — фотография под BACKGROUND BLUR 500; такой радиус Compose не тянет, поэтому подложка печётся растром заранее. У кадра ростом 1234 то же окно растра растянуто иначе, чем у 844, — нужен свой файл. И печь его надо без затемнения: чёрный 32 % рисует сам экран отдельным слоем, а с двойным затемнением «геометрия» кадра шла 49,9 %.

49,9 → 0,235 %узел 688:59350
кадр 688:59349

QR-код взят контуром из исходника, а не срисован

Код в листе — булева операция без растра. Контур вынут из .fig тем же инструментом, что и иконки, и лёг в векторный ресурс; цвет #342D35 задаётся на месте применения. Логотип в середине — окно imageTransform 100×100 под белым квадратом 126×125.

0,218 %узел 688:61307
кадр 688:61155

Обложка-заглушка нарисована по нодам, а не вырезана из рендера

Белый лист, альфа-маска градиентом, три размытых эллипса бренда, шахматная текстура под маской из двух кругов на прозрачности 0,4, «фотография» из четырёх контуров и три звезды — всё из дерева кадра. Маска здесь отдельная находка: прямоугольник Rectangle 1925 помечен isMask и гасит всё, что ниже него, вертикальным градиентом от 0,7308 до 1,0 своей высоты.

0,210 %узлы 736:92281…92443
кадр 736:92276

Четыре дефекта макета — дизайнеру

Карточка одной строки в форме высотой 48 при самой строке 52 — строка выходит за карточку на 2 dp сверху и снизу; у карты внутри карточки места нет теней и обводки, хотя на «Странице События» тот же узел их имеет; кнопки листа тегов Disabled на двух кадрах и Default на двух других при одинаковом состоянии ввода; кадры «Управление» 688:61525 и 688:61644 — полные копии, различие только в долях пикселя в положении меток. Все кадры воспроизведены как есть (К-14).

4 парыР-9
каждый кадр как он есть

Границы

Что осталось выше порога и почему

Единственный кадр десятка выше 0,3 % — не новый экран, а инстанс уже закрытого мастера: он несёт его остаток слово в слово.

КадрыГеометрия %Класс остатка
688:464810,530точная копия мастера «Страницы Карта» 180:8884 — тот же остаток растра карты, что и у самого мастера (0,530), и те же четыре числа до третьего знака