Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

111

写了个app来满足偶尔记录的需求,因为现在用的软件不能满足我杂七杂八的自定义需求,所以自己写了一个。会在需要的时候更新。

📝 智能笔记应用 (NoteApp)

一款功能丰富的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+
  • 权限:相机、存储访问

安装步骤

  1. 下载APK文件
  2. 启用"未知来源"安装
  3. 安装应用
  4. 授予必要权限

快速开始

  1. 创建第一条笔记:点击"+"按钮
  2. 添加图片:点击相机图标
  3. 添加标签:在标签栏输入标签
  4. 保存笔记:点击保存按钮
  5. 查看统计:点击统计图标

📊 数据格式

笔记数据结构

{
  "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

添加新功能

  1. 数据层:在data/目录添加实体和DAO
  2. 仓库层:在repository/目录添加数据访问逻辑
  3. 视图模型:在viewmodel/目录添加业务逻辑
  4. UI层:在ui/目录添加界面组件
  5. 导航:在MainActivity.kt中添加路由

代码规范

  • 使用Kotlin编码规范
  • 遵循MVVM架构模式
  • 添加适当的注释和文档
  • 编写单元测试

🐛 问题排查

常见问题

  1. 图片加载失败:检查存储权限和文件路径
  2. 数据库错误:清除应用数据重新初始化
  3. 备份失败:确保有足够的存储空间
  4. 搜索无结果:检查搜索关键词和筛选条件

性能优化

  • 图片自动压缩减少内存占用
  • 分页加载提升列表性能
  • 缓存机制减少重复计算
  • 异步处理避免UI阻塞

🔮 未来规划

短期计划

  • 图片标注和涂鸦功能
  • 笔记分类和文件夹
  • 导出为PDF/Word格式
  • 主题和字体自定义

长期计划

  • 云同步功能
  • 多设备协作
  • OCR文字识别
  • 语音笔记
  • AI智能分类

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🤝 贡献

欢迎提交Issue和Pull Request来帮助改进这个项目!

贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

📞 联系方式

如有问题或建议,请通过以下方式联系:


感谢使用智能笔记应用! 🎉

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages