Как один разработчик переписал читалку ранобэ на Material Design и зачем нам это изучать

05 Apr, 2026

Знаете это чувство, когда открываешь старое приложение на Android, а там интерфейс из времён Gingerbread? В 2014 году один разработчик под ником MewX решил, что популярный ресурс Wenku8 достоин лучшего, и начал «для себя» пилить сторонний клиент. В итоге получился проект light-novel-library_Wenku8_Android, который сегодня выглядит как отличный учебник по истории развития Android-разработки.

О чем этот проект

По сути, это читалка легких новелл (ранобэ) с крупнейшего китайского агрегатора Wenku8. Но для нас интереснее не контент, а то, как автор прошел путь от новичка до крепкого разработчика. Проект охватывает эпоху перехода от Eclipse к Android Studio и внедрения Material Design.

В репозитории лежат сразу две версии: старая «классическая» (ветка 0.5.x) и новая на MD (ветка 1.x). Если вам интересно посмотреть, как переписать проект с нуля, сохранив логику работы с данными, — вам сюда.

Что внутри под капотом

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

Система кеширования и сохранения

В папке saves реализована самобытная система хранения прогресса. Вместо тяжелых баз данных SQLite здесь используются простые текстовые файлы с кастомными разделителями. Например, прогресс чтения в горизонтальном режиме записывается строкой вида aid:cid:vid:paraid:wordid.

Реклама

Интересно реализовано хранение учетных данных. Автор не стал использовать стандартный AccountManager, а написал свой велосипед cert.wk8. Пароли там шифруются в несколько этапов: Base64 -> инверсия регистра -> Base64 -> перестановка символов -> Base64. Конечно, это не спасёт от серьезного взлома, но как пример «домашней криптографии» выглядит забавно.

Архитектура и библиотеки

Проект — настоящий музей популярного софта середины 2010-х. Здесь можно найти:

  • Universal Image Loader (UIL) для работы с картинками (до того, как Glide и Coil захватили мир).
  • Volley для сетевых запросов.
  • Material Dialogs от afollestad (классика, которая жива до сих пор).
  • Кастомные View для «умного» деления текста на страницы в ридере.

Скриншот интерфейса

Чему тут можно поучиться

Во-первых, работе с текстом. В ранобэ много иллюстраций, которые вставлены прямо в текст. Автор реализовал парсер, который выцепляет теги картинок и динамически вставляет их в поток чтения, не допуская OutOfMemory. Для этого используется subsampling-scale-image-view, который умеет отображать куски огромных изображений без загрузки всего файла в RAM.

Во-вторых, здесь круто прописана логика синхронизации. Приложение умеет проверять обновления новелл, скачивать только новые главы и докачивать картинки, если они появились позже.

// Пример логики парсера из исходников
public class OldNovelContentParser {
    // Разбирает текст и картинки, превращая их в список объектов для адаптера
    // Код написан во времена, когда AsyncTask был основным инструментом
}

Почему проект заброшен

Автор честно признается в README: он ушел готовиться к экзаменам в магистратуру, а китайские медиагиганты вроде Tencent начали активно скупать права на ранобэ, закрывая сторонние API. Это грустная, но поучительная история о том, как авторский проект может столкнуться с юридическими и техническими ограничениями больших платформ.

Кстати, в репозитории есть раздел «碎碎念» (мысли вслух), где разработчик делится факапами. Например, он жалуется, что пользователи не находят функцию поиска, если она спрятана в меню, или не понимают, как пользоваться кастомными шрифтами. Это отличный фидбек по UX, который полезно почитать любому мобильному разработчику.

Кому стоит заглянуть в репозиторий

  1. Новичкам в Java/Android: чтобы увидеть, как устроено реальное приложение «средней руки» со сложной навигацией.
  2. Тем, кто пишет ридеры: логика разбиения текста на страницы и работа с отступами (line_distance, paragraph_distance) здесь прописана очень подробно.
  3. Любителям копаться в архивах: чтобы сравнить подходы Eclipse и Android Studio в рамках одного проекта.

Проект не претендует на звание «лучшего архитектурного решения 2024 года», но он живой, честный и содержит массу практических хаков по работе с файловой системой и UI.

Статистика использования

Если решите запустить проект сегодня, готовьтесь к долгой пляске с Gradle — зависимости восьмилетней давности могут потребовать старую версию JDK. Но даже простое чтение кода в браузере даст пару идей о том, как организовать локальный кеш данных без лишней мороки с БД.