# note-android **Repository Path**: dingrl/note-android ## Basic Information - **Project Name**: note-android - **Description**: 安卓笔记app - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-24 - **Last Updated**: 2025-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Note Android App 一个基于Android平台的现代化笔记应用,支持富文本编辑、图片插入、搜索功能和缩略图预览。 ## 技术架构 ### 架构模式 - **MVVM (Model-View-ViewModel)**: 采用MVVM架构模式,实现数据与UI的分离 - **Repository Pattern**: 使用仓库模式统一管理数据源 - **Clean Architecture**: 遵循清洁架构原则,分层设计 ### 核心技术栈 #### UI层 - **Kotlin**: 100% Kotlin开发 - **View Binding**: 类型安全的视图绑定 - **Fragment**: 模块化UI组件 - **RecyclerView**: 高效列表展示 - **Material Design**: 遵循Material Design设计规范 - **Navigation Component**: 导航管理 #### 数据层 - **Room Database**: 本地数据库存储 - Entity: 数据实体定义 - DAO: 数据访问对象 - Database: 数据库配置 - **SharedPreferences**: 轻量级数据存储(搜索历史等) #### 业务逻辑层 - **ViewModel**: 业务逻辑处理 - **LiveData**: 响应式数据观察 - **Coroutines**: 异步编程 - **Repository**: 数据仓库抽象层 #### 依赖注入 - **Hilt**: Google推荐的依赖注入框架 - @HiltAndroidApp: 应用级别注入 - @AndroidEntryPoint: Activity/Fragment注入 - @HiltViewModel: ViewModel注入 - Module: 依赖提供模块 #### 画布编辑技术 - **自定义View**: 高性能画布渲染组件 - **Canvas API**: Android原生绘图API - **Matrix变换**: 画布坐标变换和缩放 - **Path绘制**: 矢量路径绘制和优化 - **压感检测**: MotionEvent压感数据处理 - **手势识别**: 多点触控手势处理 - **硬件加速**: GPU加速绘制渲染 - **内存优化**: 对象池和脏区域更新 #### 图片处理 - **Glide**: 图片加载和缓存 - **自定义缩略图生成器**: 笔记内容缩略图生成 - **内存缓存**: LruCache缓存优化 #### 搜索功能 - **实时搜索**: 输入即搜索 - **搜索历史**: 本地存储搜索记录 - **搜索建议**: 智能搜索提示 ### 项目结构 ``` app/src/main/java/com/music/note_android/ ├── data/ # 数据层 │ ├── database/ # 数据库相关 │ │ ├── dao/ # 数据访问对象 │ │ │ ├── NoteDao.kt # 笔记数据访问 │ │ │ └── FolderDao.kt # 文件夹数据访问 │ │ ├── DatabaseInitializer.kt # 数据库初始化 │ │ └── NoteDatabase.kt # 数据库配置 │ ├── model/ # 数据模型 │ │ ├── Note.kt # 笔记实体 │ │ ├── Folder.kt # 文件夹实体 │ │ └── FolderWithNoteCount.kt # 文件夹统计 │ └── repository/ # 数据仓库 │ ├── NoteRepository.kt # 笔记仓库接口 │ ├── NoteRepositoryImpl.kt # 笔记仓库实现 │ ├── FolderRepository.kt # 文件夹仓库接口 │ └── FolderRepositoryImpl.kt# 文件夹仓库实现 ├── di/ # 依赖注入模块 │ ├── DatabaseModule.kt # 数据库模块 │ └── RepositoryModule.kt # 仓库模块 ├── ui/ # UI层 │ ├── dashboard/ # 仪表板 │ ├── editor/ # 画布编辑模块(核心) │ │ ├── CanvasEditorActivity.kt # 编辑器主界面 │ │ ├── CanvasEditorViewModel.kt # 编辑器视图模型 │ │ ├── DrawingCanvasView.kt # 画布视图组件 │ │ ├── CanvasManager.kt # 画布管理器 │ │ ├── DrawingEngine.kt # 绘制引擎 │ │ ├── GestureHandler.kt # 手势处理器 │ │ ├── PressureHandler.kt # 压感处理器 │ │ ├── DrawingTool.kt # 绘图工具枚举 │ │ ├── DrawingToolbar.kt # 绘图工具栏 │ │ ├── Stroke.kt # 笔画数据结构 │ │ ├── StrokePoint.kt # 笔画点数据 │ │ ├── CanvasOptimizer.kt # 性能优化器 │ │ ├── PerformanceMonitor.kt # 性能监控 │ │ ├── CanvasBenchmark.kt # 性能基准测试 │ │ ├── CanvasTestActivity.kt # 画布测试界面 │ │ └── CanvasTester.kt # 画布功能测试 │ ├── folder/ # 文件夹管理 │ │ ├── FolderManagementFragment.kt # 文件夹管理界面 │ │ ├── FolderManagementViewModel.kt # 文件夹管理视图模型 │ │ ├── FolderAdapter.kt # 文件夹适配器 │ │ ├── CreateFolderDialog.kt # 创建文件夹对话框 │ │ ├── RenameFolderDialog.kt # 重命名文件夹对话框 │ │ ├── MoveNotesToFolderDialog.kt # 移动笔记对话框 │ │ ├── FolderSelectionAdapter.kt # 文件夹选择适配器 │ │ └── NoteSelectionAdapter.kt # 笔记选择适配器 │ ├── home/ # 主页 │ ├── notelist/ # 笔记列表 │ │ ├── NoteListFragment.kt # 笔记列表界面 │ │ ├── NoteListViewModel.kt # 笔记列表视图模型 │ │ └── NoteListAdapter.kt # 笔记列表适配器 │ ├── notifications/ # 通知 │ └── search/ # 搜索功能 │ ├── SearchHistoryManager.kt # 搜索历史管理 │ └── SearchSuggestionAdapter.kt # 搜索建议适配器 ├── utils/ # 工具类 │ ├── ThumbnailGenerator.kt # 缩略图生成 │ ├── ThumbnailCache.kt # 缩略图缓存 │ └── ThumbnailLoader.kt # 缩略图加载 ├── MainActivity.kt # 主Activity └── NoteApplication.kt # 应用入口 ``` ### 主要功能模块 #### 1. 画布编辑模块(核心功能) - **无限画布系统**:支持理论无限大小的虚拟画布,分块渲染优化 - **压感手写支持**:1024级压感识别,支持S Pen等主流压感笔 - **多种画笔工具**:钢笔、铅笔、荧光笔、橡皮擦等专业绘图工具 - **智能手势识别**: - 单指操作:自动切换到绘制模式,支持压感绘制 - 双指操作:自动切换到导航模式,支持缩放(0.1x-5.0x)和拖拽 - 画布边界自动扩展,流畅的60fps绘制体验 - **撤销重做系统**:支持30步操作历史,智能内存管理 - **性能优化**:硬件加速渲染,脏区域更新,对象池复用 #### 2. 笔记管理 - 笔记的增删改查 - 支持富文本内容 - 自动保存功能 - 缩略图预览 - 文件夹分类管理 #### 3. 搜索功能 - 全文搜索 - 搜索历史记录 - 搜索建议提示 - 实时搜索结果 #### 4. 缩略图系统 - 自动生成笔记缩略图 - 内存缓存优化 - 异步加载处理 - 占位符显示 #### 5. 数据持久化 - Room数据库存储 - 数据库版本管理 - 数据迁移支持 - 笔迹数据二进制存储 ### 开发规范 #### 代码规范 - 遵循Kotlin编码规范 - 使用有意义的命名 - 适当的注释和文档 - 单一职责原则 #### 架构规范 - 数据流单向流动 - UI与业务逻辑分离 - 依赖注入管理 - 异步操作处理 ### 性能优化 #### 内存优化 - LruCache缓存管理 - 及时释放资源 - 避免内存泄漏 #### 渲染优化 - RecyclerView复用 - 图片异步加载 - 缩略图压缩 #### 数据库优化 - 索引优化 - 分页加载 - 异步操作 ## 构建和运行 ### 环境要求 - Android Studio Arctic Fox或更高版本 - Kotlin 1.6.10+ - Android SDK 21+ - Gradle 7.2+ ### 依赖库版本 - Room: 2.4.3 - Hilt: 2.48 - Glide: 4.14.2 - Navigation: 2.5.1 - Lifecycle: 2.5.1 ### 构建步骤 1. 克隆项目到本地 2. 使用Android Studio打开项目 3. 等待Gradle同步完成 4. 运行项目到设备或模拟器 ## 未来规划 ### 已完成功能 ✅ - [x] 无限画布手写编辑 - [x] 压感手写支持 - [x] 多种画笔工具(钢笔、铅笔、荧光笔、橡皮擦) - [x] 智能手势识别(单指绘制、双指导航) - [x] 撤销重做系统 - [x] 笔记分类管理(文件夹系统) - [x] 缩略图预览系统 - [x] 搜索功能 ### 开发中功能 🚧 - [ ] 画布编辑器UI优化 - [ ] 性能监控和基准测试 - [ ] 画布功能自动化测试 ### 计划功能 📋 - [ ] 导出功能(PDF、图片) - [ ] 云端同步 - [ ] 主题切换 - [ ] 语音笔记 - [ ] 高级画笔(水彩、毛笔) - [ ] 图层系统 - [ ] 选择和变换工具 - [ ] 形状识别和矫正 - [ ] 手写文字识别 ## 贡献指南 欢迎提交Issue和Pull Request来改进这个项目。 ## 许可证 本项目采用MIT许可证。