Joe Birch сделал Pixelate для своего приложения Sleevd. Там данные портфеля доступны только на платном плане, но вместо заглушки бесплатные пользователи видят тот же UI, только значения закрыты мозаикой.
Text(price, modifier = Modifier.pixelate())
Для целого поддерева есть обёртка
Pixelate { }.Как работает:
👉 Через
drawWithCache контент рисуется в крошечный ImageBitmap, один пиксель на блок, и растягивается обратно с FilterQuality.None👉 Размер блока считается от высоты контента, поэтому текст одного кегля пикселизуется одинаково, будь то «$12» или «$134,502.88»
👉 Всё происходит на этапе отрисовки, размер и позиция в layout не меняются
⚠️ Важно: это не защита. Значение остаётся в composition и semantics tree, его увидит screen reader или дебаггер. И это один offscreen-рендер на кадр, так что не вешайте на каждую строку длинного списка.
🐱 GitHub
🔗 Статья Joe Birch
#Compose #CMP


