写了个app来满足偶尔记录的需求,因为现在用的软件不能满足我杂七杂八的自定义需求,所以自己写了一个。会在需要的时候更新。
一款功能丰富的Android笔记应用,支持图片插入、标签管理、记账统计、数据备份等多种实用功能。
- 笔记管理:创建、编辑、删除、查看笔记
- 图片支持:相机拍摄、相册选择、图片压缩、智能显示
- 标签系统:多标签支持、记账标签自动解析
- 搜索功能:标题、内容、标签多维度搜索
- 日期筛选:按日期范围筛选笔记
- 记账统计:收支统计、类型分析、日期筛选
- 日历视图:按日期查看笔记分布
- 数据备份:完整备份与恢复、ZIP格式导出
- 响应式设计:支持横竖屏切换
- 语言:Kotlin
- 架构:MVVM (Model-View-ViewModel)
- UI框架:Jetpack Compose
- 数据库:Room (SQLite)
- 异步处理:Kotlin Coroutines + Flow
- 依赖注入:Hilt
- 图片加载:Coil
- 导航:Navigation Compose
app/src/main/java/com/example/noteapp/
├── data/ # 数据层
│ ├── NoteDatabase.kt # 数据库配置
│ ├── NoteDao.kt # 数据访问对象
│ ├── NoteEntity.kt # 数据实体
│ └── NoteImage.kt # 图片数据模型
├── repository/ # 仓库层
│ └── NoteRepository.kt # 数据仓库
├── viewmodel/ # 视图模型层
│ ├── NoteViewModel.kt # 主视图模型
│ └── NoteViewModelFactory.kt
├── ui/ # UI层
│ ├── AccountingStatsScreen.kt # 记账统计界面
│ ├── BackupScreen.kt # 备份界面
│ ├── CalendarScreen.kt # 日历界面
│ ├── NoteEditScreen.kt # 笔记编辑界面
│ ├── NoteDetailScreen.kt # 笔记详情界面
│ ├── SimpleRichTextEditor.kt # 富文本编辑器
│ └── SimpleRichTextDisplay.kt # 富文本显示器
├── service/ # 服务层
│ └── AccountingService.kt # 记账服务
├── utils/ # 工具类
│ ├── BackupUtils.kt # 备份工具
│ ├── ImageUtils.kt # 图片工具
│ └── TagParser.kt # 标签解析器
└── MainActivity.kt # 主活动
- 创建笔记:支持标题、内容、标签、图片
- 编辑笔记:实时保存、版本控制
- 删除笔记:安全删除、数据清理
- 笔记详情:完整展示、编辑入口
- 图片插入:相机拍摄、相册选择
- 图片处理:自动压缩、格式转换
- 图片显示:智能布局、错误处理
- 图片管理:删除、排序、预览
- 普通标签:自由添加、多标签支持
- 记账标签:格式化标签(记账_类型_金额)
- 标签搜索:快速筛选、组合查询
- 标签统计:使用频率、分类统计
- 全文搜索:标题、内容、标签
- 分类搜索:按字段精确搜索
- 实时搜索:输入即搜、结果高亮
- 搜索历史:常用搜索、快速重用
- 收支统计:总收入、总支出、余额
- 类型分析:按类型分组统计
- 时间筛选:今天、本周、本月、自定义
- 详细报表:记录数量、金额分布
- 月历显示:按月查看笔记分布
- 日期标记:有笔记的日期高亮显示
- 快速跳转:点击日期查看当日笔记
- 统计信息:每日笔记数量统计
- 完整备份:笔记数据 + 图片文件
- ZIP格式:标准压缩格式,跨平台兼容
- 智能恢复:替换模式、合并模式
- 数据验证:完整性检查、版本兼容
- 笔记列表:时间排序、缩略图显示
- 功能按钮:日历、备份、统计、搜索
- 快速操作:新建笔记、批量管理
- 状态指示:图片标识、标签预览
- 富文本编辑:文本 + 图片混合编辑
- 标签管理:添加、删除、格式化
- 实时预览:所见即所得
- 自动保存:防止数据丢失
- 数据概览:收支总览、余额显示
- 图表展示:类型分布、趋势分析
- 筛选功能:时间范围、类型筛选
- 详细列表:记录明细、快速查看
- Android 8.0 (API 26) 及以上
- 存储空间:50MB+
- 权限:相机、存储访问
- 下载APK文件
- 启用"未知来源"安装
- 安装应用
- 授予必要权限
- 创建第一条笔记:点击"+"按钮
- 添加图片:点击相机图标
- 添加标签:在标签栏输入标签
- 保存笔记:点击保存按钮
- 查看统计:点击统计图标
{
"id": "唯一标识符",
"title": "笔记标题",
"content": "笔记内容(包含图片标记)",
"creationTime": "创建时间",
"lastEditTime": "最后编辑时间",
"tags": ["标签1", "标签2"],
"images": [
{
"fileName": "图片文件名",
"position": "在内容中的位置",
"insertTime": "插入时间",
"caption": "图片说明"
}
],
"hasImages": true
}noteapp_backup_YYYYMMDD_HHMMSS.zip
├── backup_metadata.json # 备份元数据
├── notes.json # 所有笔记数据
└── images/ # 图片文件夹
├── IMG_001.jpg
└── IMG_002.jpg
# 克隆项目
git clone <repository-url>
cd anoteapp
# 构建项目
./gradlew assembleDebug
# 安装到设备
./gradlew installDebug- 数据层:在
data/目录添加实体和DAO - 仓库层:在
repository/目录添加数据访问逻辑 - 视图模型:在
viewmodel/目录添加业务逻辑 - UI层:在
ui/目录添加界面组件 - 导航:在
MainActivity.kt中添加路由
- 使用Kotlin编码规范
- 遵循MVVM架构模式
- 添加适当的注释和文档
- 编写单元测试
- 图片加载失败:检查存储权限和文件路径
- 数据库错误:清除应用数据重新初始化
- 备份失败:确保有足够的存储空间
- 搜索无结果:检查搜索关键词和筛选条件
- 图片自动压缩减少内存占用
- 分页加载提升列表性能
- 缓存机制减少重复计算
- 异步处理避免UI阻塞
- 图片标注和涂鸦功能
- 笔记分类和文件夹
- 导出为PDF/Word格式
- 主题和字体自定义
- 云同步功能
- 多设备协作
- OCR文字识别
- 语音笔记
- AI智能分类
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
欢迎提交Issue和Pull Request来帮助改进这个项目!
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
如有问题或建议,请通过以下方式联系:
- 项目Issues:GitHub Issues
- 邮箱:your-email@example.com
感谢使用智能笔记应用! 🎉