Всем привет! Я хочу поделиться историей о том, как обычная пользовательская боль заставила меня открыть Android Studio и сделать свой первый серьезный проект.
Я очень люблю читать с телефона (особенно ранобэ, новеллы и книги в оригинале). Но в последнее время индустрия мобильных читалок свернула куда-то не туда. Открывая популярные приложения, я чувствовал себя пилотом Боинга: десятки перегруженных меню, всплывающие баннеры, просьбы купить Premium-подписку и интерфейсы прямиком из 2012 года.
Но моей главной болью был перевод. Когда ты читаешь книгу на английском и встречаешь незнакомое слово, тебе приходится выделять его, копировать, открывать Google Переводчик, вставлять, читать, возвращаться в книгу… Погружение в историю рушится моментально.
Есть, конечно, Circle to Search или читалки с функцией перевода, но мне они показались максимально неудобными
Я искал минималистичную читалку со встроенным удобным переводчиком. Не нашел. И решил написать её сам.
Как я изобретал велосипед (и почему отказался от WebView)
Поначалу казалось, что написать читалку легко: просто закидываешь HTML-текст книги в стандартный компонент браузера (WebView) и готово.
Но оказалось, что WebView жрет батарею, тормозит при перелистывании и не дает нормально кастомизировать текст. Поэтому я пошел по хардкору: написал свой собственный кастомный движок рендеринга текста. Он берет сырой текст из EPUB/FB2, сам измеряет каждую букву, нарезает текст на страницы прямо под размер вашего экрана и плавно их листает. Никаких подтормаживаний.
Так как я отказался от стандартных системных компонентов, мне пришлось писать логику выделения текста с нуля. Пришлось вручную высчитывать координаты пальца на экране, сопоставлять их с конкретной буквой в отрисованном абзаце и рисовать кастомные ползунки-«капельки» по краям.
Но самая главная проблема — это сохранение цитат. Если вы меняете размер шрифта или отступы, текст перестраивается. Чтобы выделения не съезжали и не ломались, я привязал их к абсолютному индексу символа (железобетонному якорю) от начала главы. Теперь вы можете как угодно крутить настройки дизайна — ваши цитаты и закладки всегда останутся ровно на том самом слове.
Что получилось в итоге? MRead
Я назвал приложение MRead (Minimal Reader). Это полностью локальная, бесплатная читалка без рекламы, созданная для того, чтобы вы оставались наедине с книгой.
Что внутри:
-
Умные онлайн-инструменты, то, ради чего всё затевалось. Выделяете слово или абзац — и прямо в книге всплывает окно с переводом на ваш язык. А если нужно узнать значение английского слова — там же работает толковый словарь (через API Wiktionary).
-
Поддержка форматов EPUB, FB2, FB2.ZIP, TXT. Движок сам вытаскивает обложки и иллюстрации из недр файлов.
-
Никакого визуального мусора. Светлая, темная и кремовая (моя любимая) темы.
-
Можно загружать свои любимые шрифты (.ttf / .otf), менять отступы, межстрочный интервал.
-
Приложение работает локально. У меня нет бэкенда, нет серверов, никто не собирает вашу статистику чтения.



Планы на будущее
Проект полностью бесплатный, писался на чистом энтузиазме. Если вам нравится концепция чистого чтения без компромиссов — буду рад, если вы его попробуете.
Скачать MRead можно здесь:
Я буду мониторить комментарии. Если найдете баги (а они наверняка есть, это же первый релиз) или у вас есть крутые идеи, что можно добавить — пишите, всё читаю, всё беру на карандаш!
Спасибо за внимание, и приятного чтения! 📖
ссылка на оригинал статьи https://habr.com/ru/articles/1044792/