一款简约而不简单的学习笔记应用,集笔记管理、待办追踪、专注统计与倒数日于一体。支持文字、图片、视频、音频及文件等多元内容类型,提供章节分级管理与图片涂鸦编辑,以结构化电子书的形式呈现知识体系,为学习者打造沉浸、高效的阅读与记录体验。
- 五种内容类型 — 文字 / 图片 / 视频 / 音频 / 文件(Word、PDF、Excel)
- 多级章节 — 笔记本 → 章 → 节 → 小节,最多 6 层嵌套,像装订一本电子书
- 图片涂鸦编辑 — 手绘涂鸦、文字标注、裁切旋转,支持撤销与重做
- 应用内录音 — 麦克风录制音频,播放条实时显示进度
- 文件导入与重命名 — Word / PDF / Excel 导入查看,音视频文件自定义命名
- 侧滑目录 — 左侧抽屉式多级章节大纲,翻页找节不再滚动
- 阅读记忆 — 再次打开自动跳转到上次阅读的位置
- 图片预览 — 双指缩放与拖拽查看
- 星标重点 — 标记章节与内容,目录里一键筛选
- 全文本搜索 — 标题匹配(笔记本名 / 章节名)、内容匹配(文字内容)、文件名匹配(视频 / 音频 / 文件名称)
- 按类型筛选 — 三类匹配多选过滤,结果带上下文与所在路径
- 点击即达 — 搜索结果直接跳进对应章节
- 双区管理 — 未完成 / 已完成分区,复选框完成确认与撤销,数据跨区迁移完整保留
- 全类型待办 — 与笔记模块一致:文字、图片、视频、音频、文件都能挂上待办
- 涂鸦不丢 — 与笔记模块相同的图片编辑体验,编辑历史在两个分区间自由切换不丢失
一条待办也能挂图片、录音、文件 —— 和笔记一样丰富
- 自动计时 — 进入阅读页自动开始计时,切到后台自动暂停
- 扇形图展示 — 当日学习时长按科目可视化,Top3 科目 + 其他分组
- 日期切换 — 左右翻页查看任意一天的学习统计
- 两列网格 — 倒计时卡片一目了然
- 动态配色 — 数字颜色按剩余天数自动变化,紧急程度一眼可见
- 日期选择 — 点击 FAB 添加,日历选择目标日期
- 编辑管理 — 点击卡片可修改名称 / 日期,内设删除按钮
- 全局统一动效 — 页面转场、弹窗、按压反馈全部采用一致的弹簧(非线性)动画:弹窗从触发的按钮放大进入,页面切换带方向感视差,点击处处有回弹
- 三套主题配色 — 清砚静蓝 / 书卷桃粉 / 笺页雾紫,设置页随时切换、即时生效,完整适配深色模式
- 首页仪表盘 — 四模块卡片入口 + 随机励志语录,离开首页时无感预换
- 权限门控 — 未授予文件权限时显示引导页
所有数据只存储在 Documents/Snote/ 目录这一个地方,无内置示例数据:
- 极轻量 — App 体积不受内容数量影响;编辑产生的冗余伴生文件,启动时自动清理
- 删了就是删了 — App 内数据与该文件夹严格同步:删除整个
Snote文件夹(或其中的数据文件),App 内对应数据即清空;App 不在别处保留任何副本 - 卸载不丢失 — 删除 App 后数据文件保留在公共文档目录,重新安装并授予权限后自动恢复。备份 / 迁移只需用文件管理器复制整个
Snote文件夹 - 隐私安全 — 无网络权限,所有数据全程存储于本地
- 数据保护 — 强制权限校验,JSON 全部原子写入(先写临时文件再重命名),崩溃不会产生损坏的半截数据
系统会请求「所有文件访问」权限用于读写
Documents/Snote/目录,未授予将无法使用 App(最低支持 Android 11)。
| 类别 | 技术 |
|---|---|
| 语言 | Kotlin |
| UI | Jetpack Compose + Material 3 |
| 架构 | MVVM + Repository |
| 依赖注入 | Hilt(Dagger) |
| 图片加载 | Coil |
| JSON 解析 | Gson |
| 数据存储 | JSON 文件(Documents/Snote/)+ SharedPreferences(设置项) |
前往 Releases 页面 下载最新 APK。
git clone https://github.com/XxuCyprus/Snote.git需要 JDK 21 及以上版本。用 Android Studio 打开项目,等待 Gradle Sync 完成后 Run。
目前仅支持 Android 平台,暂无 iOS / HarmonyOS 适配计划。
Snote/
├── app/ # 主应用模块
│ ├── build.gradle.kts
│ └── src/main/
│ ├── AndroidManifest.xml
│ ├── res/ # 布局与资源文件
│ └── java/com/snote/app/
│ ├── data/ # 数据模型 & 仓库 & 文件管理
│ │ ├── model/ # 数据模型
│ │ ├── repository/ # 仓库层
│ │ └── storage/ # 文件存储
│ ├── di/ # Hilt 依赖注入
│ └── ui/ # Compose UI 层
│ ├── anim/ # 全局统一动效规范(弹簧参数/按压反馈)
│ ├── screen/main/ # 主页仪表盘(四模块入口)
│ ├── screen/home/ # 我的笔记(笔记本列表)
│ ├── screen/todo/ # 待办中心
│ ├── screen/stats/ # 专注统计
│ ├── screen/countdown/ # 倒数日
│ ├── screen/reader/ # 阅读页(章节 + 内容)
│ ├── screen/settings/ # 设置页
│ ├── screen/search/ # 搜索页
│ ├── screen/permission/ # 权限门控页
│ ├── navigation/ # 导航图
│ └── theme/ # Material 3 主题
├── image/ # 图片编辑器独立模块
│ └── src/main/java/me/minetsh/imaging/
│ ├── core/ # 核心编辑逻辑(涂鸦/贴纸/裁切/动画)
│ └── view/ # 自定义 View 组件
├── assets/ # 应用截图 / 赞赏码 / 社交预览图
├── .github/ # Issue 模板 / 赞助配置
├── gradle/ # Gradle Wrapper
├── build.gradle.kts
├── gradle.properties
├── LICENSE.md
├── SECURITY.md
└── settings.gradle.kts
- imaging(minetsh)— 图片编辑模块(涂鸦 / 文字标注 / 裁切旋转)基于该项目改造,感谢原作者
本项目采用 CC BY-NC-SA 4.0 许可证。使用本项目的代码须遵守署名、非商业性使用、相同方式共享的条款。
如果觉得 Snote 对你有帮助,欢迎请我喝杯奶茶,谢谢 ✨
Made with ❤️ by Lnaaa











