Android 平台的小说阅读器应用,支持 TXT 格式文件的阅读、书架管理、分页翻页等功能。
本项目是一个基于 Jetpack Compose 和 Room 数据库的 Android TXT 小说阅读器,支持分页阅读、主题切换、进度持久化等核心功能。
- 语言: Kotlin
- UI 框架: Jetpack Compose + Material3
- 数据库: Room (SQLite)
- 导航: Navigation Compose
- 架构: MVVM + Clean Architecture
- 构建工具: Gradle (Kotlin DSL)
- 📚 书架管理 - 书籍导入、删除、封面展示
- 📖 阅读功能 - TXT 文件解析与分页显示
- 🔢 分页模式 - HorizontalPager 实现的滑动翻页
- 💾 进度持久化 - 阅读进度自动保存到本地数据库
- 🎨 主题切换 - 米黄、白色、护眼、夜间四种阅读主题
- 🔤 字体设置 - 字号、行间距、加粗等样式调整
- 👆 触摸手势 - 左/中/右三区点击区分(上一页/菜单/下一页)
- 🔊 音量键翻页 - 支持使用音量键控制翻页
- 🌙 沉浸模式 - 隐藏状态栏和导航栏的沉浸式阅读
- 📑 目录导航 - 目录定位当前章节、章节搜索
app/src/main/java/com/example/txtreader/
├── MainActivity.kt # 主入口 Activity
├── TxtReaderApp.kt # Application 类,初始化数据库
├── TxtParser.kt # TXT 文件解析器(章节分割)
├── CharsetDetect.kt # 字符编码检测
├── ReaderFocusHolder.kt # 阅读器焦点管理单例
├── ReaderViewModel.kt # 阅读器 ViewModel
├── data/
│ ├── AppDatabase.kt # Room 数据库
│ ├── Book.kt # Book Entity
│ └── BookDao.kt # Book DAO
└── ui/
├── AppNav.kt # 导航配置
├── ReaderScreen.kt # 阅读页面
├── Pager.kt # 分页核心逻辑
└── bookshelf/
├── BookshelfScreen.kt # 书架页面
└── BookshelfViewModel.kt
| 字段 | 类型 | 说明 |
|---|---|---|
| id | Long | 主键(自增) |
| title | String | 书名 |
| filePath | String | 文件路径 |
| originalUri | String? | 原始 URI |
| fileSize | Long | 文件大小 |
| charset | String | 字符编码 |
| totalChapters | Int | 总章节数 |
| currentChapter | Int | 当前章节 |
| currentPage | Int | 当前页码 |
| addedAt | Long | 添加时间 |
| lastReadAt | Long? | 最后阅读时间 |
- Android Studio Arctic Fox 或更高版本
- JDK 17+
- Gradle 8.0+
- Android SDK 34
# 克隆项目
git clone <repository-url>
# 进入项目目录
cd star-ink_-reading
# 同步 Gradle 依赖
./gradlew assembleDebug
# 运行应用
# 在 Android Studio 中选择 Run 'app'- 打开应用进入书架页面
- 点击导入按钮,选择 TXT 文件
- 系统自动复制文件到应用私有目录并解析
- 书籍显示在书架中,点击即可阅读
本项目遵循以下开发规范,详见 .trellis/spec/ 目录:
- 数据库规范 - Room 使用单例模式,避免在主线程调用 DAO
- 错误处理 - 三类错误来源:文件 I/O、Room 错误、SAF/ContentResolver 错误
- 线程约束 - 文件 I/O 必须在 IO 调度器执行,禁止主线程文件操作
- UI 状态 - ViewModel 错误字段需及时清空,避免永久残留
项目使用 Trellis 工作流系统管理开发任务:
# 创建新任务
python .trellis/scripts/task.py create <task-name>
# 启动任务
python .trellis/scripts/task.py start
# 查看任务列表
python .trellis/scripts/task.py list
# 完成当前任务
python .trellis/scripts/task.py finish- 阶段一: 书架与数据持久化
- 阶段二: 分页模式(HorizontalPager + 分页)
- 阶段三: AC-17 修复 + 阅读体验增强
- 阶段四: 手势控制 + 沉浸模式 + 音量键翻页
本项目仅供学习交流使用。