## File: README.md

# Legado with MD3


  [简体中文](https://github.com/HapeLee/legado-with-MD3) ｜ 
  [English](https://github.com/HapeLee/legado-with-MD3/blob/main/English.md)


## 📖 介绍

**Legado with MD3** 是基于开源项目 [阅读 (Legado)](https://github.com/gedoor/legado) 开发的 Material
Design 3 风格重构版本。

本项目在对 UI 进行重绘的基础上，加入了多项分支独有功能，并正在逐步从传统 View 迁移至 Jetpack Compose
框架，目标是提供更加现代、流畅且一致的阅读体验。

> [!CAUTION]
> **注意事项：**
> 由于使用 Monet 引擎重构了主题系统，官方版本的主题在此版本中不再可用。
>
> **Android 12 以下设备：**
> 暂时无法使用自定义主题与动态取色功能。此限制将在 Jetpack Compose
> 迁移完成后得到解决（由于开发者精力有限，迁移过程将持续较长时间）。

---

## ✨ 分支特性

相比于官方版本，本项目具有以下独有特性：

* **全新主题：** 全新 Material Design 3 设计界面，支持 **预测性返回手势** 与 **共享元素动画**。
* **阅读界面：** 更加个性化的阅读界面与菜单配置。
* **阅读记录：** 提供详尽的阅读记录，支持 **时间轴** 与 **章节维度** 统计。
* **体验增强：** 更健全的 **漫画阅读** 、 **有声书** 与 **发现** 等界面体验。
* **书架布局：** 更多的书架布局选择，针对 **平板端** 进行了专门的界面优化。
* **实用功能：** 新增书籍备注、智能伴生分组（自动归类已读/未读），支持**手柄**上下**翻页**。

---

## 🛠️ 核心功能

1. **多格式支持：** 支持本地 TXT、EPUB 阅读，智能扫描本地文件。
2. **高度自定义：** 切换字体、背景、行距、段距、加粗、简繁转换等。
3. **净化替换：** 强力去除广告，替换正文内容。
4. **翻页模式：** 覆盖、仿真、滑动、滚动等多种模式随心切换。
5. **完全开源：** 无广告，持续迭代优化。

---

## 💬 交流

* **Telegram 群组：** [Legado with MD3](https://t.me/materado)
* **版本发布：**
  最新版本会自动发布至群组，也可在 [GitHub Releases](https://github.com/HapeLee/legado-with-MD3/releases)
  下载。

---

## ❤️ 致谢

感谢以下优秀开源项目提供的灵感与技术支持：

* [gedoor/legado](https://github.com/gedoor/legado) (这个项目最吊的老爹)
* [Luoyacheng/legado](https://github.com/Luoyacheng/legado) (提供了更多的扩展功能)
* [komikku-app/komikku](https://github.com/komikku-app/komikku) (提供了界面灵感与一些 Compose
  的优秀控件)
* [FoedusProgramme/Gramophone](https://github.com/FoedusProgramme/Gramophone) (提供了界面灵感与 View
  系统的封面取色方法)
* [jordond/MaterialKolor](https://github.com/jordond/MaterialKolor) (基于 Jetpack Compose
  优秀的取色实现)
* [Calvin-LL/Reorderable](https://github.com/Calvin-LL/Reorderable) (基于 Jetpack Compose
  优秀的拖动排序实现)
* 以及更多开源项目...

## ⚠️ 用户协议与免责声明

> **【特别提示】**
> 在下载、安装或使用本软件前，请您务必仔细阅读并充分理解本协议及免责声明的全部内容。您一旦下载、安装或使用本软件，即视为已阅读、理解并同意接受本声明的全部内容。

### 一、软件性质说明

1. 本软件是一款用户可配置的本地化网页内容浏览工具，提供网页访问、内容解析、文本提取、阅读排版与数据管理等技术功能。
2. 本软件默认状态下不预置、不内置、不提供任何第三方网站内容、数据资源或解析规则。
3. 本软件开发者不提供任何内容运营、内容存储、内容发布或内容传播服务。
4. 用户可基于自身需求，自行配置或导入第三方规则，以实现对公开网页内容的个性化浏览与处理。

### 二、用户行为与规则说明

1. 用户可自行创建、编辑、导入或使用第三方分享的解析规则（以下简称"规则"）。
2. 相关规则仅用于定义网页内容的获取、提取与显示方式，其来源、合法性、准确性与适用性均由用户自行判断并承担责任。
3. 用户使用规则访问第三方网站时，相关网络请求由用户设备直接向目标网站发起并接收数据。本软件仅提供本地解析与展示能力，不对第三方网站内容进行修改、编辑或再分发。
4. 用户应遵守所在地法律法规、网络安全要求以及相关网站的服务协议与版权规范，不得利用本软件从事侵犯知识产权、非法传播、未授权数据获取、破坏网络服务或其他违法违规行为。

### 三、第三方内容与社区说明

1. 任何由第三方建立或维护的规则分享平台、论坛、交流群组、网站或其他社区，均属于独立运营的第三方平台，与本软件开发者无隶属关系。
2. 开发者不参与第三方规则、内容或社区的制作、发布、运营、维护与传播行为，亦不对相关内容承担主动审查义务。
3. 用户因使用第三方规则或访问第三方网站而产生的风险，包括但不限于版权纠纷、数据安全风险、网络访问风险或其他法律风险，应由相关行为主体依法承担相应责任。

### 四、隐私与数据说明

1. 本软件主要功能运行于用户本地设备，不设立用于提供网页内容服务的自有内容服务器。
2. 本软件不会主动收集、上传或存储用户的阅读内容、规则列表、浏览记录或其他个人隐私数据。
3. 为提升软件稳定性与兼容性，本软件可能集成第三方统计或崩溃分析服务（如 Firebase Crashlytics
   等），用于收集匿名化的崩溃日志、性能信息及基础设备信息。
4. 部分网络、存储或同步权限，仅用于实现用户主动启用的本地备份、WebDAV 同步或跨设备数据同步等功能。

### 五、知识产权保护

1. 开发者尊重并保护知识产权权利人的合法权益，并反对任何侵犯著作权、商标权或其他合法权益的行为。
2. 用户应确保其使用本软件获取、处理或访问相关内容的行为符合适用法律法规及权利要求。
3. 若权利人认为某些第三方规则存在涉嫌侵权情形，可依法向相关内容实际托管方主张权利。
4. 权利人亦可向开发者提交包含身份证明、权属证明、具体规则信息及相关说明的有效通知。开发者将在合理技术能力范围内，对涉嫌违规规则采取必要处理措施。

---

## File: app/src/main/assets/web/help/md/readMenuHelp.md

# 阅读界面帮助文档

## 阅读界面主菜单
* 顶部操作
  * 章节名称:点击可编辑书源
  * 章节url:点击可打开浏览器浏览
  * 菜单:**不同类型的书籍显示的菜单不同**。详情请查看菜单文字,长按菜单图标可显示文字
* 中间左侧-亮度调节
  * 亮度调节的顶端有跟随系统亮度的开关,打开后亮度跟随系统,关闭后才可以调节亮度条
* 底部操作
  * 4个圆形按钮依次为 全文搜索✧自动翻页✧替换净化✧切换夜间模式
  * 上一章✧下一章中间的进度条为页数进度,要快速跳转章节点击目录按钮进入目录快速跳转
  * 目录->目录和书签界面
  * 朗读->单击开始朗读,长按进入朗读设置界面
  * 界面->所有排版设置都在里面
  * 设置->其它一些设置,找不到的设置去这里看看,可滚动

## 全文搜索
搜索本地缓存或者本地文件，不能搜索在线内容  
书籍字数、净化规则数量、简繁转化、文章分段都会影响到搜索速度，请酌情启用

## 朗读设置界面
* 后台->进入后台朗读,可以做一些其它事
* 设置->朗读引擎设置,可以切换本地TTS和在线朗读,在线朗读可自定义

## 排版设置界面
* 白天模式和夜间模式背景不同布局相同
* 共用布局->启用共用布局时所有背景使用同一布局,关闭共用布局则每个背景单独布局
* 长按背景可进入文字颜色和背景设置界面

## 其它设置界面
* 屏幕方向
* 屏幕超时
* 隐藏状态栏
* 扩展到刘海
* 隐藏导航栏
* 文字两端对齐
* 文字底部对齐
* 音量键翻页
* 点击翻页
* 朗读时音量键翻页
* 自动换源->书源被删除时自动切换到其它书源
* 长按选择文本
* 显示亮度调节控件
* 点击区域设置
* 自定义翻页按键

---

## File: app/src/main/java/io/legado/app/data/README.md

# 存储数据用

* dao 数据操作
* entities 数据模型
* \Book 书籍信息
* \BookChapter 目录信息
* \BookGroup 书籍分组
* \Bookmark 书签
* \BookSource 书源
* \Cookie http cookie
* \ReplaceRule 替换规则
* \RssArticle rss条目
* \RssReadRecord rss阅读记录
* \RssSource rss源
* \RssStar rss收藏
* \SearchBook 搜索结果
* \SearchKeyword 搜索关键字
* \TxtTocRule txt文件目录规则

---

## File: app/src/main/java/io/legado/app/help/crypto/README.md

https://github.com/gedoor/legado/pull/2880

非对称加密一般只能知道其中一个密钥，而RhinoJs调用java方法不能传入null和KeyType, 因此提供以下重载函数
```kotlin
fun setPublicKey(key: ByteArray): T
fun setPublicKey(key: String): T
fun setPrivateKey(key: ByteArray): T
fun setPrivateKey(key: String): T

fun decrypt(data: Any, usePublicKey: Boolean? = true): ByteArray?
fun decryptStr(data: Any, usePublicKey: Boolean? = true): String?

fun encrypt(data: Any, usePublicKey: Boolean? = true): ByteArray?
fun encryptHex(data: Any, usePublicKey: Boolean? = true): String?
fun encryptBase64(data: Any, usePublicKey: Boolean? = true): String?
```

---

## File: app/src/main/java/io/legado/app/lib/README.md

# 放置一些copy过来的库

* dialogs 弹出框
* icu4j 编码识别库
* permission 权限申请库
* theme 主题
* webDav 网络存储

---

## File: app/src/main/java/io/legado/app/model/localBook/README.md

# 书籍文件导入解析

* BaseLocalBookParse.kt 本地书籍解析接口
* LocalBook.kt 导入解析总入口
* TextFile.kt 解析txt
* EpubFile.kt 解析epub
* PdfFile.kt 解析pdf 纯图片形式
* UmdFile.kt 解析umd

---

## File: app/src/main/java/io/legado/app/model/README.md

# 放置一些模块类

* analyzeRule 书源规则解析
* localBook 本地书籍解析
* rss 订阅规则解析
* webBook 获取网络书籍

---

## File: app/src/main/java/io/legado/app/service/README.md

# android服务

* AudioPlayService 音频播放服务
* CheckSourceService 书源检测服务
* DownloadService 缓存服务
* HttpReadAloudService 在线朗读服务
* TTSReadAloudService tts朗读服务
* WebService web服务