# 小米便签应用 (Xiaomi Note) [![Kotlin](https://img.shields.io/badge/Kotlin-2.0.21-blue.svg)](https://kotlinlang.org) [![Compose](https://img.shields.io/badge/Compose-2025.01.00-green.svg)](https://developer.android.com/jetpack/compose) [![Room](https://img.shields.io/badge/Room-2.6.1-orange.svg)](https://developer.android.com/training/data-storage/room) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) 一款基于现代 Android 技术栈开发的简洁高效的便签应用,采用 MVVM 架构,支持便签的创建、编辑、删除和查看功能。 --- ## 📱 应用截图 *(此处可添加应用截图)* --- ## ✨ 功能特性 ### 核心功能 - ✅ **便签列表** - 按更新时间倒序显示所有便签 - ✅ **创建便签** - 快速创建新的便签 - ✅ **编辑便签** - 修改现有便签内容 - ✅ **删除便签** - 删除不需要的便签 - ✅ **数据持久化** - 使用 Room 数据库本地存储 - ✅ **响应式更新** - 数据变化自动刷新 UI ### 用户体验 - 🎨 Material Design 3 设计风格 - 🌙 支持亮色和暗色主题 - ⚡ 流畅的动画和过渡效果 - 📱 适配不同屏幕尺寸 - 🚀 快速启动和响应 --- ## 🛠️ 技术栈 ### 核心技术 | 技术 | 版本 | 用途 | |------|------|------| | [Kotlin](https://kotlinlang.org/) | 2.0.21 | 主要编程语言 | | [Jetpack Compose](https://developer.android.com/jetpack/compose) | 2025.01.00 | 现代化 UI 框架 | | [Room](https://developer.android.com/training/data-storage/room) | 2.6.1 | 数据库持久化 | | [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) | 2.8.7 | 状态管理 | | [Navigation Compose](https://developer.android.com/jetpack/compose/navigation) | 2.8.5 | 页面导航 | | [Coroutines](https://kotlinlang.org/docs/coroutines-overview.html) | 内置 | 异步处理 | | [Flow](https://kotlinlang.org/docs/flow.html) | 内置 | 响应式数据流 | ### 架构模式 - **MVVM** (Model-View-ViewModel) - **Repository Pattern** - **单例模式** - **观察者模式** --- ## 📐 架构设计 ``` ┌─────────────────────────────────────┐ │ View Layer (UI) │ │ - NoteListScreen │ │ - NoteEditorScreen │ │ - NoteItem │ └──────────────┬──────────────────────┘ │ 观察 StateFlow ┌──────────────▼──────────────────────┐ │ ViewModel Layer │ │ - NoteViewModel │ │ - 业务逻辑 + 状态管理 │ └──────────────┬──────────────────────┘ │ 调用 ┌──────────────▼──────────────────────┐ │ Model Layer (Data) │ │ - NoteRepository │ │ - NoteDao │ │ - NoteDatabase │ │ - Note (Entity) │ └─────────────────────────────────────┘ ``` ### 架构优势 - 🎯 **关注点分离** - 每层职责明确 - 🧪 **可测试性** - ViewModel 和 Repository 可独立测试 - 🔧 **可维护性** - 清晰的分层便于维护 - 🔄 **响应式** - 数据变化自动更新 UI --- ## 📂 项目结构 ``` app/src/main/java/com/example/myapplication/ ├── MainActivity.kt # 主活动,应用入口 ├── data/ │ ├── Note.kt # 便签数据实体 │ ├── NoteDao.kt # 数据访问对象 │ ├── NoteDatabase.kt # Room 数据库 │ └── NoteRepository.kt # 数据仓库 ├── ui/ │ ├── NoteListScreen.kt # 便签列表页面 │ ├── NoteEditorScreen.kt # 便签编辑页面 │ ├── NoteItem.kt # 便签列表项组件 │ └── theme/ │ ├── Color.kt # 颜色定义 │ ├── Theme.kt # 主题配置 │ └── Type.kt # 字体排版 └── viewmodel/ └── NoteViewModel.kt # 便签 ViewModel doc/ ├── 泛读报告.md # 开源代码泛读报告 ├── 用例图.md # UML 用例图 ├── 类图.md # UML 类图 ├── 维护设计方案文档.md # 维护设计方案 └── PPT演示内容.md # PPT 演示内容 ``` --- ## 🚀 快速开始 ### 环境要求 - Android Studio Hedgehog 或更高版本 - JDK 11 或更高版本 - Android SDK 24+ (Android 7.0) - Kotlin 2.0.21 ### 运行项目 1. **克隆项目** ```bash git clone cd My ``` 2. **打开项目** - 在 Android Studio 中打开项目 - 等待 Gradle 同步完成 3. **运行应用** - 连接 Android 设备或启动模拟器 - 点击 Run 按钮 (▶️) - 应用将自动安装并启动 ### 构建 APK ```bash ./gradlew assembleDebug ``` 生成的 APK 文件位于: `app/build/outputs/apk/debug/` --- ## 📖 使用指南 ### 创建便签 1. 打开应用,进入便签列表页面 2. 点击右下角的浮动操作按钮 (+) 3. 输入便签标题和内容 4. 点击保存按钮 (✓) 5. 自动返回列首页面 ### 编辑便签 1. 在列表中点击要编辑的便签卡片 2. 修改标题或内容 3. 点击保存按钮 4. 更改自动保存并返回列表 ### 删除便签 1. 找到要删除的便签 2. 点击便签卡片右上角的删除图标 (🗑️) 3. 便签立即从列表中删除 ### 查看便签 - 便签按更新时间倒序排列 - 最新的便签显示在列表顶部 - 每个便签显示标题、内容预览和更新时间 --- ## 🎨 界面展示 ### 亮色主题 - 主色调: 小米橙 (#FFFF6900) - 背景色: 浅灰 (#FFF5F5F5) - 卡片色: 白色 (#FFFFFFFF) ### 暗色主题 - 主色调: 深橙 (#FFFF8534) - 背景色: 深灰 (#FF1A1A1A) - 卡片色: 中灰 (#FF2D2D2D) --- ## 📊 代码统计 ### 源代码 - **总文件数**: 12 个 Kotlin 文件 - **代码行数**: ~800 行(不含注释) - **注释覆盖率**: 95%+ - **包数量**: 4 个 (data, ui, viewmodel, theme) ### 文档 - **泛读报告**: 404 行 - **用例图**: 303 行 - **类图**: 678 行 - **维护设计方案**: 707 行 - **PPT 演示内容**: 733 行 - **文档总计**: ~2,825 行 --- ## 🔍 技术亮点 ### 1. 响应式编程 使用 Flow 实现数据流的响应式更新: ```kotlin // DAO 层 @Query("SELECT * FROM notes ORDER BY updateTime DESC") fun getAllNotes(): Flow> // ViewModel 层 viewModelScope.launch { repository.getAllNotes().collect { notes -> _allNotes.value = notes } } // UI 层 val notes by viewModel.allNotes.collectAsState() ``` ### 2. 声明式 UI 使用 Jetpack Compose 构建现代化界面: ```kotlin @Composable fun NoteItem(note: Note, onClick: () -> Unit) { Card( modifier = Modifier.clickable { onClick() } ) { Column { Text(note.title) Text(note.content) Text(formatTime(note.updateTime)) } } } ``` ### 3. 数据库持久化 使用 Room 实现类型安全的数据库操作: ```kotlin @Entity(tableName = "notes") data class Note( @PrimaryKey(autoGenerate = true) val id: Int = 0, val title: String = "", val content: String = "", val createTime: Long = System.currentTimeMillis(), val updateTime: Long = System.currentTimeMillis() ) ``` --- ## 📚 学习资源 ### 官方文档 - [Kotlin 官方文档](https://kotlinlang.org/docs/home.html) - [Jetpack Compose 教程](https://developer.android.com/jetpack/compose/tutorial) - [Room 持久化库](https://developer.android.com/training/data-storage/room) - [ViewModel 概览](https://developer.android.com/topic/libraries/architecture/viewmodel) - [Navigation Compose](https://developer.android.com/jetpack/compose/navigation) ### 推荐学习路径 1. 学习 Kotlin 基础语法 2. 掌握 Coroutines 和 Flow 3. 学习 Jetpack Compose 4. 理解 MVVM 架构 5. 实践 Room 数据库 6. 完成本项目 --- ## 🔧 可扩展功能 本项目架构清晰,易于扩展。以下是一些可以添加的功能: ### 短期计划 - [ ] 搜索功能 - 全文搜索便签 - [ ] 分类标签 - 便签分类管理 - [ ] 数据导出 - 导出为文本文件 - [ ] 分享功能 - 分享便签到其他应用 ### 长期计划 - [ ] 云同步 - 多设备数据同步 - [ ] 富文本编辑 - 支持格式化文本 - [ ] 图片附件 - 添加图片到便签 - [ ] 提醒功能 - 定时提醒 - [ ] 数据备份 - 云端备份和恢复 --- ## 🧪 测试 ### 运行测试 ```bash # 运行单元测试 ./gradlew test # 运行仪器测试 ./gradlew connectedAndroidTest ``` ### 测试覆盖 - 单元测试: ViewModel 和 Repository - UI 测试: Compose 组件 - 集成测试: 数据库操作 --- ## 📝 代码规范 ### Kotlin 编码规范 - 遵循 [Kotlin 官方编码规范](https://kotlinlang.org/docs/coding-conventions.html) - 使用 4 个空格缩进 - 类名使用 PascalCase - 函数和变量使用 camelCase - 常量使用 UPPER_SNAKE_CASE ### 注释规范 - 所有公共 API 都必须有 KDoc 注释 - 包含类说明、函数说明、参数说明 - 复杂逻辑添加行内注释 - 使用中文注释 ### Git 提交规范 ``` feat: 添加新功能 fix: 修复 bug docs: 更新文档 style: 代码格式调整 refactor: 重构代码 test: 添加测试 chore: 构建过程或辅助工具的变动 ``` --- ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! ### 提交 Issue - 描述清楚问题 - 提供复现步骤 - 附上截图或日志 ### 提交 PR 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'feat: add some amazing feature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request --- ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 --- ## 👨‍💻 作者 **项目名称**: 小米便签应用 **完成日期**: 2026年4月24日 **开发工具**: Android Studio **编程语言**: Kotlin --- ## 🙏 致谢 感谢以下开源项目: - [Jetpack Compose](https://developer.android.com/jetpack/compose) - [Room Persistence Library](https://developer.android.com/training/data-storage/room) - [Material Design](https://material.io/) - [Kotlin Coroutines](https://kotlinlang.org/docs/coroutines-overview.html) --- ## 📞 联系方式 如有问题或建议,欢迎联系: - 📧 Email: example@email.com - 💬 Issues: [提交 Issue](https://github.com/your-repo/issues) --- ## ⭐ 展示支持 如果这个项目对你有帮助,请给个 ⭐️ 支持一下! --- **最后更新**: 2026年4月24日 **版本**: v1.0.0 **状态**: ✅ 已完成