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.
|
|
3 weeks ago | |
|---|---|---|
| .idea | 3 weeks ago | |
| app | 3 weeks ago | |
| doc | 3 weeks ago | |
| gradle | 3 weeks ago | |
| .gitignore | 3 weeks ago | |
| README.md | 3 weeks ago | |
| build.gradle.kts | 3 weeks ago | |
| gradle.properties | 3 weeks ago | |
| gradlew | 3 weeks ago | |
| gradlew.bat | 3 weeks ago | |
| settings.gradle.kts | 3 weeks ago | |
README.md
小米便签应用 (Xiaomi Note)
一款基于现代 Android 技术栈开发的简洁高效的便签应用,采用 MVVM 架构,支持便签的创建、编辑、删除和查看功能。
📱 应用截图
(此处可添加应用截图)
✨ 功能特性
核心功能
- ✅ 便签列表 - 按更新时间倒序显示所有便签
- ✅ 创建便签 - 快速创建新的便签
- ✅ 编辑便签 - 修改现有便签内容
- ✅ 删除便签 - 删除不需要的便签
- ✅ 数据持久化 - 使用 Room 数据库本地存储
- ✅ 响应式更新 - 数据变化自动刷新 UI
用户体验
- 🎨 Material Design 3 设计风格
- 🌙 支持亮色和暗色主题
- ⚡ 流畅的动画和过渡效果
- 📱 适配不同屏幕尺寸
- 🚀 快速启动和响应
🛠️ 技术栈
核心技术
| 技术 | 版本 | 用途 |
|---|---|---|
| Kotlin | 2.0.21 | 主要编程语言 |
| Jetpack Compose | 2025.01.00 | 现代化 UI 框架 |
| Room | 2.6.1 | 数据库持久化 |
| ViewModel | 2.8.7 | 状态管理 |
| Navigation Compose | 2.8.5 | 页面导航 |
| Coroutines | 内置 | 异步处理 |
| Flow | 内置 | 响应式数据流 |
架构模式
- 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
运行项目
-
克隆项目
git clone <repository-url> cd My -
打开项目
- 在 Android Studio 中打开项目
- 等待 Gradle 同步完成
-
运行应用
- 连接 Android 设备或启动模拟器
- 点击 Run 按钮 (▶️)
- 应用将自动安装并启动
构建 APK
./gradlew assembleDebug
生成的 APK 文件位于: app/build/outputs/apk/debug/
📖 使用指南
创建便签
- 打开应用,进入便签列表页面
- 点击右下角的浮动操作按钮 (+)
- 输入便签标题和内容
- 点击保存按钮 (✓)
- 自动返回列首页面
编辑便签
- 在列表中点击要编辑的便签卡片
- 修改标题或内容
- 点击保存按钮
- 更改自动保存并返回列表
删除便签
- 找到要删除的便签
- 点击便签卡片右上角的删除图标 (🗑️)
- 便签立即从列表中删除
查看便签
- 便签按更新时间倒序排列
- 最新的便签显示在列表顶部
- 每个便签显示标题、内容预览和更新时间
🎨 界面展示
亮色主题
- 主色调: 小米橙 (#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 实现数据流的响应式更新:
// 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 构建现代化界面:
@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 实现类型安全的数据库操作:
@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 基础语法
- 掌握 Coroutines 和 Flow
- 学习 Jetpack Compose
- 理解 MVVM 架构
- 实践 Room 数据库
- 完成本项目
🔧 可扩展功能
本项目架构清晰,易于扩展。以下是一些可以添加的功能:
短期计划
- 搜索功能 - 全文搜索便签
- 分类标签 - 便签分类管理
- 数据导出 - 导出为文本文件
- 分享功能 - 分享便签到其他应用
长期计划
- 云同步 - 多设备数据同步
- 富文本编辑 - 支持格式化文本
- 图片附件 - 添加图片到便签
- 提醒功能 - 定时提醒
- 数据备份 - 云端备份和恢复
🧪 测试
运行测试
# 运行单元测试
./gradlew test
# 运行仪器测试
./gradlew connectedAndroidTest
测试覆盖
- 单元测试: ViewModel 和 Repository
- UI 测试: Compose 组件
- 集成测试: 数据库操作
📝 代码规范
Kotlin 编码规范
- 遵循 Kotlin 官方编码规范
- 使用 4 个空格缩进
- 类名使用 PascalCase
- 函数和变量使用 camelCase
- 常量使用 UPPER_SNAKE_CASE
注释规范
- 所有公共 API 都必须有 KDoc 注释
- 包含类说明、函数说明、参数说明
- 复杂逻辑添加行内注释
- 使用中文注释
Git 提交规范
feat: 添加新功能
fix: 修复 bug
docs: 更新文档
style: 代码格式调整
refactor: 重构代码
test: 添加测试
chore: 构建过程或辅助工具的变动
🤝 贡献指南
欢迎提交 Issue 和 Pull Request!
提交 Issue
- 描述清楚问题
- 提供复现步骤
- 附上截图或日志
提交 PR
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'feat: add some amazing feature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
👨💻 作者
项目名称: 小米便签应用
完成日期: 2026年4月24日
开发工具: Android Studio
编程语言: Kotlin
🙏 致谢
感谢以下开源项目:
📞 联系方式
如有问题或建议,欢迎联系:
- 📧 Email: example@email.com
- 💬 Issues: 提交 Issue
⭐ 展示支持
如果这个项目对你有帮助,请给个 ⭐️ 支持一下!
最后更新: 2026年4月24日
版本: v1.0.0
状态: ✅ 已完成