Как я, не программист, написал свою читалку для Android. Знакомьтесь, MRead

Программирование 13 июнь 2026 admin

Как я, не программист, написал свою читалку для Android. Знакомьтесь, MRead

Я обычный пользователь, далёкий от профессионального программирования. Но каждый раз, открывая очередную читалку на Android, я испытывал раздражение: то реклама всплывает посреди абзаца, то интерфейс перегружен функциями, которыми не пользуешься, то приложение тормозит на старых книгах. В какой-то момент я понял: хватит. И решил написать свою читалку. Ниже — история о том, как человек без опыта разработки создал приложение MRead, которое теперь использую сам и делюсь с вами.

Почему готовые читалки бесят?

Перепробовав с десяток приложений, я выделил три основные проблемы. Во-первых, реклама. Даже в платных версиях иногда проскакивают баннеры. Во-вторых, раздутый функционал: синхронизация с облаком, магазины, социальные кнопки — мне нужно просто читать. В-третьих, скорость. Открытие большого файла EPUB может занимать секунды, а скролл страниц сопровождается микро-лагами.

Я хотел минималистичную читалку, которая делает только одно — показывает текст книги. Без лишнего. И чтобы управление было интуитивным: тап по левой части — назад, по правой — вперёд, свайп для быстрой прокрутки.

«Когда готовые инструменты не решают твоих проблем, единственный выход — создать свой. Даже если ты не программист.»

Как я решил написать свою (и не бросил)

Изначально я думал, что программирование — это сложно. Но оказалось, что для простого приложения достаточно базовых знаний Java и Android Studio. Я прошёл несколько туториалов на YouTube и прочитал документацию. Через неделю у меня был прототип, который открывал EPUB-файл и отображал текст. Энтузиазм подогревал тот факт, что я сам контролирую каждую строчку.

Главная трудность — работа с EPUB. Этот формат представляет собой ZIP-архив с XHTML. Пришлось разобраться с парсингом. Я использовал библиотеку epublib — она с открытым исходным кодом и проста в интеграции. Весь процесс сборки выглядел так:

// Пример загрузки книги в MRead
EpubReader reader = new EpubReader();
Book book;
try {
    book = reader.readEpub(new FileInputStream(epubFile));
    Resource resource = book.getCoverImage(); // работа с обложкой
} catch (IOException e) {
    e.printStackTrace();
}

Архитектура MRead: минимализм и производительность

Приложение состоит из трёх экранов: библиотека, чтение и настройки. Для отображения текста я использовал WebView — он легко справляется с HTML-разметкой EPUB. Но стандартный WebView потребляет много памяти, поэтому я отключил JavaScript и кэширование. Результат: книга открывается за 200 мс, листание мгновенное.

Одна из фишек — кастомные жесты. Я реализовал детектор свайпов: взмах влево-вправо для перелистывания, вверх-вниз для изменения яркости. Вот код обработчика:

gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        float dx = e2.getX() - e1.getX();
        if (Math.abs(dx) > SWIPE_THRESHOLD) {
            if (dx > 0) {
                // предыдущая страница
            } else {
                // следующая страница
            }
            return true;
        }
        return false;
    }
});

Сравнение MRead с популярными читалками

ПараметрMReadFBReaderMoon+ Reader
РекламаНетЕсть (в бесплатной версии)Есть (в бесплатной)
Размер APK2.5 МБ8 МБ15 МБ
Поддержка жестовДа (свайпы, тапы)ЧастичноДа
СинхронизацияНет (локально)Google ДискDropbox, Google
Скорость открытия EPUB (10 МБ)0.2 с1.5 с1.0 с
ПодсветкаДа (ручная)Да (авто)Да (сложные режимы)

Ключевые фишки, которые не дают перейти на другие

Во-первых, отсутствие рекламы — это база. Во-вторых, настраиваемые зоны тапа: я могу назначить, что тап по левому верхнему углу открывает оглавление, а по нижнему — выключает подсветку. В-третьих, полная оффлайн-работа: никаких запросов сети, только файлы.

Кстати, MRead поддерживает пакетное добавление книг из папки. Просто кидаешь EPUB в нужную директорию — приложение само обновляет библиотеку. И никаких переиндексаций.

«Когда делаешь продукт для себя, не нужно гадать, чего хотят пользователи. Ты и есть пользователь.»

Как собрать MRead самому

Исходный код я выложил на GitHub. Для сборки потребуется Android Studio и JDK 11. Клонируете репозиторий, открываете проект, жмёте Build. Приложение поддерживает API 21+ (Android 5.0). Учитывайте, что я не профессиональный разработчик, поэтому код может быть неидеальным. Но он работает.

git clone https://github.com/yourname/mread.git

После сборки вы получите APK, который можно установить на телефон. Я рекомендую отключить в телефоне оптимизацию батареи для MRead, чтобы фоновая подсветка всегда работала стабильно.

Часто задаваемые вопросы

Поддерживает ли MRead PDF? Пока нет, только EPUB. PDF планирую добавить в следующей версии.

Можно ли менять шрифты? Да, в настройках можно выбрать любой TTF-файл из памяти устройства.

Будет ли версия для iOS? В планах нет, я использую Android.

Личное наблюдение автора

Написание этого приложения заняло у меня около месяца по вечерам. Сейчас я читаю исключительно в MRead, и меня перестало бесить то, что раньше казалось неизбежным. Если вы тоже устали от «тяжёлых» читалок — попробуйте написать свою. Это не так страшно, как кажется, а результат приносит настоящее удовлетворение.

Редакция «ИТ Фишки»
Качественные материалы о софте, технологиях и гаджетах
Ссылка на материал
Поделиться:
Похожие публикации
Комментарии (0)

© Copyright © 2026. Все права защищены.