legado-with-MD3 Documentation

使用 Material Design 3 全新设计的阅读 3.0

5,516 stars Kotlin Kotlin 1 file · ~1,435 tokens
RAW Doc

File: README.md

Legado with MD3

简体中文 |
English

📖 介绍

Legado with MD3 是基于开源项目 阅读 (Legado) 开发的 Material
Design 3 风格重构版本。

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

[!CAUTION]
注意事项:
由于使用 Monet 引擎重构了主题系统,官方版本的主题在此版本中不再可用。

Android 12 以下设备:
暂时无法使用自定义主题与动态取色功能。此限制将在 Jetpack Compose
迁移完成后得到解决(由于开发者精力有限,迁移过程将持续较长时间)。


✨ 分支特性

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

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

🛠️ 核心功能

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

💬 交流


❤️ 致谢

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

⚠️ 用户协议与免责声明

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

一、软件性质说明

  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服务