Делаю в MRead тап-зоны: теперь экран можно разметить под себя
Делаю для MRead настраиваемые тап-зоны
Это настройка, где можно самому разметить экран чтения: какая область листает вперёд, какая назад, где открывается меню, где меняется яркость, а где вообще ничего не происходит.
Сначала думал, что это будет небольшая фича. Ну что там: прямоугольник, действие, сохранить.
Но дальше началось интересное.
Нужно было сделать так, чтобы зоны можно было двигать, растягивать, удалять, пересекать друг с другом и при этом не превратить настройку в панель управления космическим кораблём.
В текущем виде задумано так:
можно создать несколько зон;
перетащить зону куда удобно;
растянуть за угол;
выбрать действие;
поставить пресет;
очистить всё и вернуться к обычной схеме.
Из действий есть листание вперёд/назад, меню, закладки, оглавление, яркость плюс/минус, TTS, выход из приложения и “ничего”.
“Ничего” оказалось не шуткой. Иногда реально нужна область экрана, которая не делает ничего. Например, если туда часто случайно попадаешь при чтении.
Отдельно пришлось решать пересечения.
Например, можно сделать большую зону “вперёд” почти на весь правый край, а поверх неё маленькую зону “меню” в углу. Тогда возникает вопрос: если тап попал сразу в обе зоны, кто победил?
Я сделал правило простым: побеждает меньшая зона. Обычно маленькую область ставишь специально, а большая работает как фон.
Самая неприятная часть была не в математике прямоугольников, а в жестах.
В Compose зона могла начать перетаскиваться, потом интерфейс пересобирался, pointerInput перезапускался, и drag срывался прямо во время движения. Визуально это выглядело так, будто блок просто отлип от пальца.
Починилось через стабильные ключи для зон. Без key Compose начинал путать элементы при изменении порядка отрисовки, особенно когда выбранная зона поднималась поверх остальных.
В итоге фича получается больше, чем я ожидал. Не просто «тап слева/справа», а маленький редактор управления чтением. Выйдет в следующем обновлении.
Параллельно в последних версиях уже завезено: полка «Читаю», дробные проценты прогресса, PDF-фильтры, кроп, контраст, настройка карточек в библиотеке и фиксы для больших библиотек.
Но тап-зоны сейчас, наверное, самая заметная штука именно в интерфейсе чтения.
MRead бесплатный, без рекламы. GitHub использую как страницу релизов: APK, changelog и контрольные суммы.
Скачать, посмотреть changelog и закинуть баг/идею удобнее всего через канал - там же все ссылки на сторы в закрепе:
Отдельное спасибо всем, кто пишет баги, предлагает фичи и просто рассказывает, где неудобно. Большая часть правок появилась именно из такого фидбека.










































































