Skip to content
Mikhail Artemev edited this page Oct 28, 2016 · 14 revisions

В основе Decoro лежат два понятия: слот и маска. Слот определяет как будет отформатирован один символ. Маска же содержит список слотов и отвечает за форматирование последовательности символов. Жц Маска является сердцем Decoro и может использоваться как самостоятельно для форматирования произво:wльных строк в коде, так и для форматирования текста в TextView (EditText) "на лету" с помощью FormatWatcher.

Другие сущности, используемые библиотекой:

  • FormatWatcher или форматтер - это абстрактная реализация TextWatcher’а. Он держит внутри себя маску и синхронизирует ее содержимое с содержимым TextView. Именно этот класс используется для форматирования текста "на лету", пока пользователь его вводит. В коробке имеются реализации MaskFormatWatcher и DescriptorFormatWatcher. О различиях между ними в разделе о FormatWatcher'ах.
  • Иногда нам хочется создавать маску на основе какого-нибудь DSL (вроде +1 (___) ___-__-__). SlotsParser как раз призван помогать нам это делать. Обычный String он приводит к массиву слотов, которым умеет оперировать наша маска. Подробнее об этом в разделе о способах создания маски.
  • PredefinedSlots содержит предустановленные наборы слотов (для номера телефона, паспорта и т.д.)
  • MaskDescriptor - это "заготовка" с параметрами будущей маски, которую FormatWatcherImpl использует для (пере)создания своей внутренней маски.