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

Шестой десяток: управление событием собрано целиком

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

126 / 132кадров с зелёной геометрией при пороге 0,3 %
0,000 %лучшая геометрия десятка
0,770 %худшая — слайд онбординга с кольцом аватаров
34расхождения найдено, все закрыты
1дефект исходника — обрезанный растр в .fig

Смотровая

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

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

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

Числа

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

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

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

Разбор

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

Каждая строка — расхождение из реестра docs/figma/fig/ledger.md (E1, E2 и E3): что показала нода, что делало приложение и сколько это стоило в числах. Кадры и числа на этой странице пересняты и пересчитаны 12.09.2026, после того как проверка всех 390 кадров уточнила модель прожига.

Перепроверка 12.09: девять находок в этом же десятке

Сверка всех 390 кадров прошлась и по этому десятку ещё раз — с новым измерителем tools/burnmap.py, который считает прожиг по дереву, без картинок. Нашлось: разделителя между третьей и четвёртой строкой первой группы вопросов в ноде нет (659:27792 — строки стоят встык, сообщено владельцем); кнопка-строка «Добавить вопрос» (659:23259), наоборот, прожигалась зря — в рендере её подпись (40, 42, 49); заголовки шапок всех экранов десятка и строки ролей организатора (659:23174) прожига не получали; у невыбранных строк барабана даты стоит opacity 0,35, а в фикстуре была единица — барабан правки события выходил сплошь чёрным; цифра счётчика участников (663:74257) белая только по объявлению, в рендере (245, 245, 245).

реестр E39 находок
десятка из 13

Почти весь текст раздела нарисован в режиме «линейный прожиг»

Самая дорогая находка второй проверки — и она не видна метрике. У полутора сотен узлов этих экранов стоит blendMode: LINEAR BURN, и над серой подложкой #F5F5F5 прожиг темнит объявленный цвет: #282A31 становится (30, 32, 39), #1A1A1A — (16, 16, 16), бренд #007AFF — (0, 112, 245). Действующий режим — первый не-PASS THROUGH предок снизу вверх: узел с NORMAL внутри прожигаемой группы изолирован и остаётся объявленного цвета (иконка строки «Управления»), а PASS THROUGH прожиг наследует (тумблер в строке). Заведён PdColors.burn, и правки прошли по всем экранам десятка.

~150 узловреестр E2-1
заголовки, строки, тумблеры

Метрика не видит светло-серого на белом — и целая плашка пропала незаметно

У поля «Ваш вопрос» в листе вопроса не рисовалась его собственная заливка #F5F5F5 с внутренней тенью: разница белого и #F5F5F5 — это ΔE ≈ 2,7, ниже порога 6, и кадр с пропавшей плашкой 8466 dp² честно показывал 0,016 % по геометрии. Поэтому к четырём числам добавилась структурная сверка по нодам (tools/inkcheck.py): заливка — по площади ноды за вычетом детей, тень — по полосе снаружи габарита, текст — по цвету чернил. Прогон по 134 кадрам дал 362 расхождения, которых метрика не показывала.

362 находкиреестр E2-2
новый инструмент сверки

Тени одного компонента разные в разных местах

У одной и той же кнопки удаления в листе участника Fill + Shadow — (0,2) r4 6 %, а у мастера (0,8) r40 12 %; у Button-icon на карточке участника мелкая, а у кнопки шапки большая; у плашки сегментера (0,2) r20 6 %; у чипов тегов (0,2) r4 6 %. Плюс нашлись тени, которых не было вовсе: лист несёт (0,−2) r24 12 % над верхней кромкой, аватар 64 — (0,2) r8 16 %, кольцо аватаров онбординга — по тени на каждый круг. Тень теперь всегда берётся из ноды экземпляра, а не из мастера.

реестр E2-3…E2-6, E2-9шесть классов теней

Пустой кадр, который метрика приняла за хороший

Подложку снекбара над картой рисовали три вложенных прогона всего экрана карты — и эмулятор этого не выдерживал: кадр выходил пустым (866 уникальных цветов против 187 336 у того же экрана без снекбара). Метрика молчала, потому что область живой карты у неё под маской (Р-7). Нашлось той же структурной сверкой: у неё «пустая заливка» — это расхождение в 140 уровней. Проход оставлен один.

866 → 188 063цветов в снимке
реестр E2-10

Объявленное фоновое размытие рисуется не всегда

Затемнение под системными листами (Context Menu - Dimming Overlay) объявляет BACKGROUND BLUR 30, а в рендере не размывает ничего: под вторым слоем затемнения кнопка «Сохранить» осталась резкой до пикселя. То же у полупрозрачного снимка экрана в иллюстрации онбординга: в точке (100, 122) стоит ровно белый 40 % поверх неразмытой подложки — 197 против расчётных 199. Зато два наложенных затемнения считаются дважды: 1 − 0,77² = 0,41.

99,8 → 0,029 %узел 660:67158
кадр 660:67080

Список подбора организаторов не влезал в лист — и просто не рисовался

Восемь карточек 70 с шагом 103 выше листа: последние две уходят за его нижнюю границу. Compose ужимал колонку по месту и рисовал шесть, Figma обрезает восемь. Лечится wrapContentHeight(unbounded) — тем же приёмом, что и лента приглашений.

0,979 → 0,001 %узел 684:33230
кадры 684:33213, 684:33609

Текст карточки вопроса срезан многоточием, а не перенесён

«Вы первый раз на событии от нашей компании организаторов?» в рендере идёт одной строкой и обрывается на «от на…»: у текстового узла textAutoResize: TRUNCATE при блоке в один интерлиньяж. Без этого карточка становится двухстрочной, и вниз уезжает вся страница — кнопка «Добавить вопрос» и подсказка под ней.

0,446 → 0,031 %узел 660:71382
пять кадров S63

Приглушена не заливка, а весь узел

Строка «Показать на странице события» в листе роли идёт с прозрачностью 0,3 — и в рендере выцветают вместе с фоном и метка, и тумблер. Та же история у задних карточек участников в онбординге: прозрачность 0,7 и 0,5 стоит на узле, поэтому блёкнут и фото, и подписи. Прозрачная только заливка давала карточку слишком контрастной.

1,510 → 0,737 %узлы 686:42959, 698:89163
кадры 686:42928, 696:87380

Светлая синева второго слайда — белые эллипсы, а не бренд

Иллюстрация онбординга у всех слайдов одна и та же по составу, но у второго поверх брендовых эллипсов лежат ещё два белых — 635×140 и 249×331 с прозрачностью 0,61 и размытием слоя 100. Нарисованные брендовым цветом, они давали густую синеву: 24,997 % против 3,971 с белым.

24,997 → 3,971 %узлы 696:87769, 696:87771
кадр 696:87380

Растр аватара в самом исходнике обрезан

Кольцо из девяти фотографий четвёртого слайда: у одной картинки (d53124d8) последний блок IDAT обещает больше байтов, чем лежит в архиве .fig, — снизу декодируется 40 % чёрного. Низ восстановлен из рендера кадра обратной формулой маски: avatar = (render − (1−α)·bg)/α, где α — радиальный градиент маски кольца, а bg — снимок той же подложки, снятый отдельно без кольца. Зеркальная достройка, которую я попробовал сначала, ставила вверх ногами лицо.

2,56 → 1,83 %узел 698:90941
кадр 698:89849

Уменьшенный снимок экрана — это тот же экран при другой плотности

Внутри иллюстрации онбординга стоят целые экраны в масштабе 0,664 и 0,756. Масштабировать готовый слой нельзя — кромки уходят на пиксель; вместо этого подменяется плотность (PdScaled), и текст, радиусы и иконки рисуются сразу в нужном размере. Снимок обведён белым 2 dp снаружи, а Modifier.border рисует внутрь — обводка сделана отдельной плашкой на 2 больше.

1,234 → 0,747 %узел 697:88219
кадр 695:77451

Кольцо аватара профиля — градиентная обводка

Аватар 80 в профиле участника обведён не однотонной рамкой, а вертикальным градиентом #B780E4 → #85C5CD → #91D688 → #9DE743 шириной 4 внутрь. Бейдж-галочка рядом — контур из .fig с заливкой #9CE549 и белой обводкой 2 наружу; путь идёт в единицах узла, поэтому в Canvas его надо масштабировать на плотность — иначе бейдж выходит втрое меньше.

0,621 → 0,072 %узлы 665:79865, 665:79868
кадры S62

Один и тот же по имени значок — разные мастера

Крестик удаления варианта ответа — не контурный icon-minus-circle из профиля, а залитый круг с прорезью (мастер 660:67952), и внутри слота 20 его ink занимает 16,25. С контурным значком список из десяти ответов давал 0,508 %.

0,508 → 0,040 %узел 660:67951
кадр 663:73171

Сегментер на три доли: плашка всегда шире своей доли на 8

У сегментера «Заявки / Участвуют / Отклонены» доля 114, а белая плашка выбранного 122 — она выходит под отступ контейнера. Правило то же, что у сегментера на две доли (171 и 179), поэтому в ките ширина плашки считается как 342 / n + 8 и рисуется requiredWidth.

0,042 %узел 643:69616
29 кадров S61

Границы

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

Семь кадров из 134 кадров десятка (132 в этой таблице). Два — остаток правки события, известный с прошлого десятка; один — инстанс уже закрытого мастера карты; четыре — слайды онбординга, где внутри иллюстрации стоит целый экран в масштабе 0,76: каждая строка текста внутри такого снимка мажет на доли пикселя, и допуск ±1 px её не спасает.

КадрыГеометрия %Класс остатка
698:898491,833кольцо из девяти фотографий под радиальной маской: у одной растр в .fig обрезан и низ восстановлен из рендера, у остальных расходятся доли пикселя в окне кадрирования
695:77451, 696:873800,747 и 0,737уменьшенные снимки экранов внутри иллюстрации: текст в масштабе 0,756 и шахматная текстура, просвечивающая сквозь полупрозрачные карточки (у ноды там фоновое размытие 32, которого в Compose нет)
698:894060,309то же, но снимков два: страница вопроса поверх страницы правки — ровно на пороге
642:65266, 642:655230,460 и 0,423правка события: остаток обложек ленты (40 % остатка), карта под стеклянной кнопкой (25 %) и барабан даты (24 %) — разобрано в реестре D1 прошлого десятка
691:971010,570инстанс мастера «Страницы Карта» 180:8884 со снекбаром: несёт остаток растра карты самого мастера (0,530)