По душе · Android × Figma · 12.09.2026 · участие в событии
Семьдесят девять кадров одной страницы макета: стандартные кейсы регистрации, переход в чат и просмотр вложений, регистрация с вопросами и одобрением, приглашение в организаторы и приглашение участвовать в событии. Целая подсекция — двадцать «стандартных кейсов регистрации» — собралась из уже готовых «Афиши», «Страницы события» и «Пожаловаться», а двенадцать кадров и вовсе оказались точными копиями уже снятых, узел в узел. Один экран написан с нуля: лист «Вопросы при регистрации» поверх страницы события.
Смотровая
Тяните шторку, чтобы совместить макет и приложение. «Карта» показывает, где остаётся расхождение: синим закрыт системный статус‑бар, клавиатура и системные листы iOS — их рисует система, в сравнении они не участвуют (спека 6.4).
Числа
Полное — доля пикселей, где цвет разошёлся заметно для глаза. Без текста — то же без текстовых блоков. ±1 px — с допуском на полпикселя. Геометрия — два последних вместе, то есть чистая форма, положение и материал; по ней и выносится вердикт. Подсвечены строки выше порога — у каждой измеренная причина в разделе «Границы».
| Экран | Кадр | Состояние | Полное % | Без текста % | ±1 px % | Геометрия % | Шкала до порога 0,3 % |
|---|
Разбор
Каждая строка — расхождение из реестра docs/figma/fig/ledger.md
(H1‑1…H1‑10). Первое — не про этот десяток, а про сам измеритель: он врал одинаково на
78 кадрах файла.
Экспорт Figma отдаёт непрозрачные кадры с альфой 254 по всей площади. Маска «прозрачный рендер», заведённая ради одного кадра без заливки, строилась по условию «меньше 255» и выбрасывала из знаменателя четверть кадра — доля расхождения росла на ту же четверть. Поймано на паре «кадр и его точная копия»: один и тот же экран давал 0,165 на своей странице и 0,198 на этой. Порог поднят до 128; копии сошлись до четвёртого знака, а кадр с настоящей прозрачностью остался 0,051.
Страница созданного события встречается и в кадре 1234, и в кадре 844. Окно растра подложки одно и то же, но растягивается на разную высоту — значит и вырезка нужна своя. С растром от высокого кадра геометрия шла 1,847, с верным — 0,203.
У страницы события заливка шапки и нижней панели идёт с непрозрачностью 0,2 — а на одном кадре 0,4. Там же два организатора лежат в разных контейнерах, и зазор между строками 12, а не 8. Обе правки — из ноды, обе уходят дизайнеру как пара «нода → нода».
В шапке события появляется плашка «Андрей К. приглашает вас» 358×74 — и всё, что ниже, уезжает на 90 dp. Подложка под снекбаром считалась по старому месту карточки карты, и снекбар выходил светло‑коричневым вместо тёмного. Заодно: дети плашки прижаты к верху, а не по центру — с центрированием аватар уезжал на 9 dp вниз.
Первая карточка списка уведомлений на шести кадрах своя: непрочитанная (точка 12 и текст уже на 24 dp), без значка одобрения у третьей строки и с кнопкой «Прочитать всё» внизу. Обложка у неё тоже своя — с обложкой мастера геометрия шла 1,954.
Шапка страницы события бывает с одной кнопкой вместо сдвоенной (рамка «назад» 48 и заголовок 238); на кнопке уведомлений «Страницы Карта» показан значок непрочитанного, скрытый у мастера; «Управление» у приглашённого организатора теряет «Детали события» и нижнюю кнопку, а «Организаторы» — «•••» и «Добавить организатора».
Лист регистрации занимает весь кадр. В знаменателе «без текста» после этого остаются одни поля по краям — и за одним числом «остаток фонового размытия» пряталось шесть расхождений вёрстки. Шапка листа 390×125 рисовалась без своей заливки (вертикальный градиент #232B48), и заголовок «Мои данные» светился под ней насквозь. Полосок-граберов в ноде две — в шапке на 60 и в самом листе на 70; видна всегда первая, вторая скрыта родителем, а рисовали мы вторую. Строка согласия оказалась последним пунктом группы вопросов с зазором 16, а не отдельным блоком с зазором 24 — восемь пикселей вниз. У кружка выбора штрих 2 внутрь белым 24 %, а у выбранного — белая заливка и штрих 5 брендом, то есть кольцо, а не точка. На кадре с множественным выбором это вообще не кружки, а квадраты со скруглением 6 и галочкой. И панель «Зарегистрироваться» у листа идёт с пустой заливкой — градиента под кнопкой нет, в отличие от панели самой страницы.
Кадр «Страницы События» целиком — 390×1730, и снимать его нужно с явной высотой. В папке снимков лежал кадр 844, и пакетный прогон намерил по нему 28,3 % на ровном месте. Сплошная проверка «размер снимка против размера рендера» по всем 570 кадрам нашла ровно один такой; сверка размеров добавлена в ритуал перед выводом чисел.
Границы
Двадцать шесть кадров, и худший из них теперь 12,5 % вместо 15,0 %. Одиннадцать — копии уже закрытых кадров со своим известным остатком; пятнадцать — лист регистрации, где остаток измерен и назван.
| Кадры | Геометрия % | Класс остатка |
|---|---|---|
| тринадцать кадров «Вопросов при регистрации» | 0,313…1,675 | ядро фонового размытия (BACKGROUND_BLUR 200 над страницей события). Модель снята с рендера: три прохода бокса ширины 130…160 dp с продлением кромки и чёрный 33 % сходятся с рендером по боковым полям до 0,18 % пикселей выше порога цвета — то есть σ ≈ R/2,9, а не R/2. В Compose это ядро точно не повторяется: один проход с продлением кромки даёт на полях 27,8 %, связка «кламп + два безграничных прохода» — 5,5 %. Остаток открыт, реестр H1-10 |
792:145273, 792:90605 | 12,49 и 11,52 | тот же остаток, но у кадров другой высоты (вырезка 390×261 и кадр 1059) поля составляют почти весь знаменатель |
794:159262 | 3,509 | преломление стекла снекбара над неоднородной подложкой — тот же класс, что у уже закрытого 293:28243 (0,918): в рендере интерьер снекбара идёт 43…97 по строке при ровной подложке 121, у нас ровные 89 |
792:81769, 792:81896 | обе 0,808 | копии кадра с тремя рядами вложений со своим остатком |
792:81941, 792:81955, 792:81974 | 0,370…0,423 | копии кадров просмотрщика фото — остаток окна растра миниатюр |
793:152405, 794:156745 | обе 0,530 | копии мастера «Страницы Карта» с её растром карты (B1-10) |
792:67208, 792:67293, 792:67310, 792:147919 | 0,357…0,458 | кадры «Страницы События» и её копия со своими известными остатками |