You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
zero/README.md

446 lines
11 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 小米便签应用 (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 <repository-url>
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<List<Note>>
// 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
**状态**: ✅ 已完成