chick_mood/claude.md
ddshi 43056b245f feat: 完成添加心情功能实现 V1.4.0
-  AddActivity完整实现:包含完整的摇晃检测和心情记录功能
-  遮罩引导系统:2秒"握紧手机" → 2秒"开始摇晃,记录心情" → 自动消失,300ms流畅动画
-  加速度传感器集成:摇晃检测算法(15f阈值+100ms冷却+强度过滤)
-  心情值计算系统:基础增量2分+强度加成,0-100范围实时累计更新
-  心情文案生成:5级程度描述+6种心情类型动态组合
-  实时UI更新:进度条、数值、文案同步更新,提供即时反馈
-  震动反馈功能:每次有效摇晃提供100ms震动反馈,支持新旧Android版本
-  EditActivity新增模式:支持新增记录的数据处理和保存逻辑
-  完整数据流集成:首页→添加页→编辑页→首页的完整循环和自动定位
-  遮罩显示优化:全屏覆盖+文字阴影+28sp字体,确保清晰可读
-  权限管理:添加震动权限,完善传感器权限检查
-  错误处理完善:无传感器Toast提示,震动失败不影响核心功能

技术实现亮点:
- 摇晃检测算法合理,强度计算和阈值过滤
- 震动反馈向后兼容,支持新旧Android版本
- 完整的错误处理和用户反馈机制
- 优化的用户体验,流畅的动画和清晰的引导

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 11:58:07 +08:00

27 KiB
Raw Blame History

别摇小鸡 - 开发进度与决策记录

Android心情记录App开发文档

📋 项目概览

项目名称: 别摇小鸡心情记录App 开发平台: Android原生Kotlin 当前版本: V1.4.0 更新日期: 2025-10-24 开发状态: 添加心情功能完成,摇晃检测和震动反馈集成


🏗️ 技术架构

核心技术栈

  • 开发语言: Kotlin
  • UI框架 Android View System + Material Design
  • 数据存储: SQLite Room + SharedPreferences
  • 架构模式: MVVM + Repository
  • 动画引擎: Lottie (准备中) + Property Animation
  • 传感器支持: 加速度传感器 (摇晃检测)

功能模块

V1.1.0 核心功能:

  • 六种基础情绪支持(开心、生气、悲伤、烦恼、孤单、害怕)
  • 心情记录数据模型和存储
  • 基础UI框架和Material Design主题
  • 情绪选择界面(已完成)
  • 历史记录展示系统(已完成)
  • 时间显示逻辑(今天/昨天/星期数)
  • 操作按钮功能(收藏、分享、查看详情)
  • ViewPager2横向滑动展示
  • 顶部按钮基础功能(更多、统计)

V1.2.0 详情页功能:

  • 详情页基础布局和UI组件
  • 心情文案生成逻辑(程度+心情类型)
  • 更多操作弹窗(编辑、收藏、分享、删除)
  • 删除功能和二次确认弹窗
  • 收藏功能和状态持久化存储
  • 分享功能集成(系统分享)
  • 图片放大查看功能
  • 首页跳转逻辑完善
  • 真实数据库集成
  • 测试数据生成
  • 数据一致性保证

V1.3.0 编辑页功能:

  • 编辑页基础布局和UI组件
  • 返回键退出确认逻辑
  • 文本输入框功能最大500字符支持emoji
  • 图片选择和预览功能(系统相册,单图)
  • 保存功能和首页定位逻辑
  • 详情页编辑跳转集成
  • 图片显示系统完善(首页、详情页、编辑页、预览页)
  • 图片选择、保存、加载、删除完整流程
  • 定位机制优化(编辑和新增记录自动定位)
  • 数据一致性修复(禁用额外测试记录)

V1.4.0 添加心情功能:

  • 添加心情页面基础布局和UI组件AddActivity + activity_add.xml
  • 遮罩引导系统握紧手机→开始摇晃→自动消失300ms动画
  • 加速度传感器集成和摇晃检测15f阈值+100ms冷却
  • 心情值计算和实时进度更新2-100分增量算法
  • 心情文案生成逻辑5级程度描述+6种心情类型
  • 小鸡形象显示(根据心情类型显示对应图标)
  • 结束按钮和编辑页跳转逻辑EditActivity新增模式
  • 首页添加按钮与心情选择弹窗集成(完整跳转逻辑)
  • 完整数据流传递(首页→添加页→编辑页→首页自动定位)
  • 震动反馈功能100ms震动支持新旧Android版本
  • 遮罩显示优化(全屏覆盖+文字阴影+28sp字体

🎯 当前开发状态

已完成模块

阶段1基础框架搭建

  • 模块1.1 MainActivity基础布局结构
  • 模块1.2 数据模型定义MoodRecord, Emotion枚举, UserConfig
  • 模块1.3 Room数据库设计和实现
  • 模块1.4 ViewModel和Repository架构简化版

基础设施

  • 完整的单元测试覆盖25个测试用例
  • Material Design主题和配色方案
  • 应用构建和安装流程
  • Git版本控制配置

已完成模块

阶段1基础框架搭建

  • 模块1.1 MainActivity基础布局结构
  • 模块1.2 数据模型定义MoodRecord, Emotion枚举, UserConfig
  • 模块1.3 Room数据库设计和实现
  • 模块1.4 ViewModel和Repository架构简化版

阶段2历史记录展示系统

  • 模块2.1 心情记录卡片布局item_mood_record.xml
  • 模块2.2 ViewPager2适配器实现MoodRecordAdapter
  • 模块2.3 时间格式化逻辑(今天/昨天/星期数显示)
  • 模块2.4 小鸡形象切换逻辑6种情绪对应切换
  • 模块2.5 空状态和内容状态切换
  • 模块2.6 横向滑动展示功能

阶段3添加心情功能

  • 模块3.1 FloatingActionButton实现可点击
  • 模块3.2 情绪选择BottomSheet弹框已完成
  • 模块3.3 情绪选择后自动创建记录
  • 模块3.4 操作按钮功能(收藏、分享、查看详情)
  • 模块3.5 顶部按钮基础功能(更多、统计)

阶段4UI和资源完善

  • 模块4.1 6种情绪小鸡占位符图标
  • 模块4.2 操作按钮图标(收藏、分享、详情)
  • 模块4.3 图片占位符背景
  • 模块4.4 ViewPager2布局修复match_parent
  • 模块4.5 崩溃问题修复和稳定性优化

已完成模块

阶段5详情页功能实现

  • 模块5.1 详情页基础布局和UI组件
  • 模块5.2 心情文案生成逻辑(程度+心情类型)
  • 模块5.3 更多操作弹窗(编辑、收藏、分享、删除)
  • 模块5.4 删除功能和二次确认弹窗
  • 模块5.5 收藏功能和状态持久化存储
  • 模块5.6 图片放大查看功能
  • 模块5.7 分享功能集成(系统分享)

已完成模块

阶段6编辑页功能实现

  • 模块6.1 编辑页基础布局和UI组件
  • 模块6.2 返回键退出确认逻辑
  • 模块6.3 文本输入框功能最大500字符支持emoji
  • 模块6.4 图片选择和预览功能(系统相册,单图)
  • 模块6.5 保存功能和首页定位逻辑
  • 模块6.6 详情页编辑跳转集成
  • 模块6.7 图片显示系统完善(全链路支持)
  • 模块6.8 定位机制优化(编辑和新增记录自动定位)
  • 模块6.9 数据一致性修复(禁用额外测试记录)

已完成模块

阶段7添加心情功能实现已完成

  • 模块7.1 添加心情页面基础布局和UI组件
  • 模块7.2 遮罩引导系统实现(握紧手机→开始摇晃→自动消失)
  • 模块7.3 加速度传感器集成和摇晃检测逻辑
  • 模块7.4 心情值计算和实时进度更新系统
  • 模块7.5 心情文案生成逻辑(基于心情值+心情类型)
  • 模块7.6 小鸡形象显示(根据心情类型)
  • 模块7.7 结束按钮和编辑页跳转逻辑
  • 模块7.8 首页添加按钮与心情选择弹窗集成
  • 模块7.9 完整数据流传递(首页→添加页→编辑页→首页)

🔄 后续开发计划

阶段8功能完善和优化下一阶段

  • 模块8.1 📋 小鸡动画响应系统
  • 模块8.2 📋 侧边抽屉功能(更多按钮)
  • 模块8.3 📋 统计页面实现(统计按钮)
  • 模块8.4 📋 摇晃检测参数调优和设备适配
  • 模块8.5 📋 用户体验细节优化和错误处理完善

📱 应用运行状态

构建信息

  • 构建命令: ./gradlew assembleDebug
  • APK路径 app/build/outputs/apk/debug/app-debug.apk
  • 包名: com.daodaoshi.chick_mood
  • 启动Activity MainActivitySimple
  • 当前版本: V1.1.0

测试结果

  • 应用成功构建和安装
  • 应用正常启动和运行(已修复崩溃问题)
  • 数据库功能正常Room数据库完整实现
  • 基础UI交互正常
  • 情绪选择弹框功能完整支持6种情绪选择
  • 历史记录展示系统ViewPager2横向滑动
  • 时间显示逻辑正确(今天/昨天/星期数)
  • 小鸡形象根据情绪切换
  • 操作按钮功能(收藏、分享、查看详情)
  • 空状态和内容状态自动切换
  • 顶部按钮基础功能(更多、统计)
  • 完整的用户体验流程:选择情绪 → 自动创建记录 → 横向滑动查看

🎯 下一步开发计划

优先级1添加心情页面实现当前重点

模块7.1添加心情页面基础布局和UI组件

  • 创建AddActivity和对应布局文件activity_add.xml
  • 实现顶部导航栏(返回按钮、标题"添加心情"
  • 实现内容区域布局(心情文案、心情值、进度条、小鸡形象)
  • 实现底部结束按钮和遮罩引导层

模块7.2:遮罩引导系统实现

  • 创建遮罩布局引导用户操作流程
  • 实现定时器控制:握紧手机(2s) → 开始摇晃(2s) → 自动消失
  • 添加遮罩动画效果(淡入淡出)
  • 处理用户点击遮罩的交互逻辑

模块7.3:加速度传感器集成和摇晃检测

  • 集成Android加速度传感器(SensorManager)
  • 实现传感器事件监听和数据采集
  • 开发摇晃检测算法(强度计算、阈值过滤)
  • 添加传感器权限检查和错误处理

模块7.4:心情值计算和实时进度更新系统

  • 开发心情值累计算法(基于摇晃强度和时长)
  • 实现进度条实时更新UI组件
  • 添加心情值上限控制最高100
  • 优化更新频率,平衡性能和用户体验

模块7.5:心情文案生成逻辑

  • 复用详情页的心情文案生成逻辑
  • 根据实时心情值更新程度描述
  • 实现文案动态切换动画效果
  • 确保文案与心情值同步更新

模块7.6:小鸡形象显示

  • 根据传入的心情类型显示对应小鸡图标
  • 复用现有的心情类型图标资源
  • 添加小鸡形象的显示动画(可选)

模块7.7:结束按钮和编辑页跳转逻辑

  • 实现结束按钮点击事件处理
  • 准备跳转数据(心情类型、心情值、时间戳)
  • 修改EditActivity支持新增记录模式
  • 实现AddActivity到EditActivity的数据传递

模块7.8:首页添加按钮与心情选择弹窗集成

  • 修改MainActivity的添加按钮逻辑
  • 修改心情选择弹窗的确认逻辑
  • 实现MainActivity到AddActivity的跳转
  • 传递心情类型数据到AddActivity

模块7.9:完整数据流传递优化

  • 测试完整流程:首页→添加页→编辑页→首页
  • 优化EditActivity的新增记录模式
  • 确保首页自动定位到新增记录
  • 修复数据传递中的边界情况

优先级2功能完善和优化后续开发

模块8.1:摇晃检测优化

  • 调整摇晃检测灵敏度参数
  • 添加不同设备的适配逻辑
  • 优化传感器数据处理的性能
  • 添加摇晃检测的用户反馈优化

模块8.2:用户体验优化

  • 添加页面切换动画效果
  • 优化遮罩引导的视觉体验
  • 添加摇晃过程的音效反馈(可选)
  • 完善错误状态的提示信息

模块8.3:测试和稳定性

  • 编写摇晃检测的单元测试
  • 测试不同设备上的传感器兼容性
  • 添加异常情况的处理逻辑
  • 进行完整的集成测试

优先级3扩展功能未来开发

模块9.1:小鸡动画响应系统

  • 小鸡待机动画Lottie集成
  • 摇晃时的小鸡反应动画
  • 不同情绪对应的小鸡状态动画
  • 点击小鸡的交互反馈动画

模块9.2:侧边抽屉功能(更多按钮)

  • 实现侧边抽屉UI布局
  • 设置、关于、帮助等页面入口
  • 用户个人资料管理

模块9.3:统计页面实现(统计按钮)

  • 心情数据统计分析
  • 情绪趋势图表展示
  • 记录统计和可视化

🔧 技术决策记录

架构选择

  • View System vs Compose 选择View System原因

    • 复杂交互支持更好
    • 团队熟悉度高,调试工具完善
    • 长期维护成本更低
  • Hilt vs 手动依赖注入: 选择手动单例模式,原因:

    • 简化构建过程,减少编译错误
    • 提高构建稳定性
    • 便于理解和维护

数据库设计

  • Room数据库 v2.0版本,支持心情记录和用户配置
  • 单例模式: SimpleDatabaseManager提供业务逻辑封装
  • 类型转换: 支持枚举、日期、布尔值等类型

🧪 测试覆盖

单元测试25个测试用例100%通过)

  • EmotionTest 7个测试用例验证情绪枚举功能
  • MoodRecordTest 8个测试用例验证心情记录功能
  • UserConfigTest 9个测试用例验证用户配置功能
  • TestDataGenerator 完整的测试数据生成工具

集成测试

  • 数据库CRUD操作测试
  • 应用启动和运行测试
  • ViewBinding交互测试

📂 项目文件结构

Chick_Mood/
├── app/
│   ├── src/main/
│   │   ├── java/com/chick_mood/
│   │   │   ├── data/model/           ✅ 数据模型
│   │   │   ├── data/database/        ✅ 数据库实现
│   │   │   └── data/repository/      ✅ 数据仓库已移除Hilt
│   │   ├── java/com/daodaoshi/chick_mood/
│   │   │   └── MainActivitySimple.kt ✅ 主Activity
│   │   ├── res/
│   │   │   ├── layout/              ✅ 布局文件
│   │   │   ├── values/              ✅ 资源文件
│   │   │   ├── drawable/            ✅ 图标资源含实际PNG和占位图
│   │   │   └── raw/                 ✅ Lottie动画文件
│   │   └── test/                    ✅ 单元测试
│   └── build.gradle.kts             ✅ 构建配置
├── build.gradle.kts                 ✅ 项目构建配置
├── settings.gradle.kts              ✅ 项目设置
├── .gitignore                       ✅ Git忽略配置
├── CLAUDE.md                        ✅ 项目文档
└── RESOURCE_TABLE.md                ✅ 资源汇总表

📝 开发规范

核心原则

  1. 模块化开发: 每次只开发一个小模块,独立测试
  2. 测试驱动: 每个模块提供测试代码,确保功能正确性
  3. 代码质量: 提供中文注释,遵循设计模式,便于维护

提交规范

  • 每个功能模块完成后提交一次
  • 提交信息清晰描述完成的功能
  • 保持Git历史记录的整洁和可读性

资源管理规范

  1. 占位图命名: 使用ic_placeholder_前缀命名占位图标
  2. 资源优先级: 按功能重要性分为高/中/低三个优先级
  3. 文件类型: 优先使用PNG图片Vector Drawable仅用于简单图形
  4. 资源汇总: 所有资源文件路径和使用说明记录在RESOURCE_TABLE.md
  5. 替换流程: 根据设计资源按优先级逐步替换占位图
  6. 文档更新: 资源变更后及时更新资源汇总表

🔄 更新记录

2025-10-24 (V1.4.0 添加心情功能完成)

  • AddActivity完整实现:包含完整的摇晃检测和心情记录功能
  • 遮罩引导系统2秒"握紧手机" → 2秒"开始摇晃,记录心情" → 自动消失300ms流畅动画
  • 加速度传感器集成摇晃检测算法15f阈值+100ms冷却+强度过滤)
  • 心情值计算系统基础增量2分+强度加成0-100范围实时累计更新
  • 心情文案生成5级程度描述有些/非常/超级/这也太/完全无法控制)+6种心情类型
  • 实时UI更新:进度条、数值、文案同步更新,提供即时反馈
  • 震动反馈功能每次有效摇晃提供100ms震动反馈支持新旧Android版本
  • EditActivity新增模式:支持新增记录的数据处理和保存逻辑
  • 完整数据流集成:首页→添加页→编辑页→首页的完整循环和自动定位
  • 遮罩显示优化:全屏覆盖+文字阴影+28sp字体确保清晰可读
  • 权限管理:添加震动权限,完善传感器权限检查
  • 错误处理完善无传感器Toast提示震动失败不影响核心功能

2025-10-24 (V1.3.0 编辑页功能完成)

  • 编辑页完整实现包含基础布局、UI组件和退出确认机制
  • 返回键退出确认逻辑:检测编辑行为,弹出二次确认弹窗
  • 文本输入功能支持最大500字符、emoji输入、实时字符计数
  • 图片选择和预览功能:系统相册单图选择、真实图片显示、删除功能
  • 保存功能和首页定位:保存后直接返回首页,自动定位到编辑/新增记录
  • 详情页编辑跳转:完整集成编辑页跳转逻辑
  • 图片显示系统完善:首页卡片、详情页、编辑页、预览页全链路真实图片显示
  • 图片工具类实现ImageUtils提供完整的图片保存、加载、删除API
  • 定位机制优化:编辑保存后和新增记录后自动定位,双重验证确保准确性
  • 数据一致性修复:禁用数据库测试功能,避免产生额外测试记录
  • 主题兼容性修复解决TextInputLayout与AppCompat主题冲突问题

2025-10-23 (V1.2.0 详情页功能完成)

  • 详情页完整实现包含基础布局、UI组件和四种内容状态支持
  • 心情文案生成逻辑:根据心情值动态生成"程度+心情类型"文案0-20有些→20-40非常→40-60超级→60-80这也太→80-100完全无法控制
  • 更多操作弹窗:实现底部弹窗(编辑、收藏、分享、删除)和完整交互逻辑
  • 删除功能和二次确认:实现删除确认弹窗,防止误删,删除成功提示"记录已删除"
  • 收藏功能和状态持久化支持收藏状态切换数据库真实存储和UI状态同步
  • 分享功能集成集成Android系统分享生成包含完整心情信息的分享文本
  • 图片放大查看功能创建ImagePreviewActivity支持全屏预览和关闭操作
  • 首页跳转逻辑完善:修改卡片点击和详情按钮都能跳转到详情页
  • 真实数据库集成:详情页使用真实数据库数据,替换随机测试数据
  • 测试数据生成创建10条多样化真实测试数据支持各种内容状态
  • 数据一致性保证:首页和详情页显示完全一致的数据,收藏和删除功能真实操作数据库

2025-10-23 (V1.1.0 首页核心功能完成)

  • 历史记录展示系统完整的ViewPager2横向滑动展示功能
  • 心情记录卡片布局:支持纯文本、文本+图片、多图+文本三种状态
  • 时间显示逻辑:正确实现今天/昨天/星期数显示
  • 小鸡形象切换6种情绪对应不同的小鸡占位符图标
  • 操作按钮功能:收藏、分享、查看详情完整实现
  • 崩溃问题修复解决ViewPager2布局要求match_parent的崩溃问题
  • 数据库集成:情绪选择后自动创建记录并刷新显示
  • 顶部按钮功能:更多和统计按钮基础功能实现
  • 应用稳定性:解决所有崩溃问题,应用正常运行

2025-10-23 (情绪选择功能完成)

  • 情绪选择弹框实现完整的BottomSheet对话框支持6种情绪选择
  • 交互功能完善3x2网格布局选中状态反馈确认/取消按钮
  • 崩溃问题修复解决MaterialButton组件冲突导致的应用崩溃
  • 实际PNG图标集成成功整合image文件夹中的高质量情绪图标
  • 资源管理规范创建RESOURCE_TABLE.md资源汇总表建立占位图替换流程
  • 用户体验完整:点击添加按钮 → 选择情绪 → 确认选择 → 显示Toast提示

2025-10-23 (应用成功运行)

  • 修复Hilt依赖问题改用单例模式
  • 修复ViewBinding和Vector Drawable问题
  • 应用成功构建、安装和运行
  • 数据库功能验证完成

2025-10-22 (基础架构完成)

  • Room数据库完整实现
  • 数据模型和单元测试完成
  • Material Design主题配置
  • 项目架构搭建完成

📄 详情页功能详细说明

🎯 功能概述

详情页是心情记录的完整展示和管理页面,支持从历史记录列表跳转查看单条记录的详细信息。

📱 页面结构

  1. 顶部导航栏

    • 返回按钮:点击返回历史记录列表
    • 时间显示:记录创建时间(格式:今天/昨天 HH:mm
    • 更多操作:三点图标,点击弹出操作菜单
  2. 内容展示区域

    • 小鸡形象:根据情绪类型显示对应图标
    • 心情值0-100数值显示
    • 心情文案:动态生成"程度+心情类型"组合
    • 配图区域:可选,支持点击放大查看
    • 文本描述:可选,多行文本内容
  3. 操作功能

    • 编辑:跳转编辑页(后续实现)
    • 收藏:切换收藏状态并持久化
    • 分享:调用系统分享功能
    • 删除:二次确认后删除记录

🔄 交互逻辑

  • 页面跳转:点击历史记录卡片或详情按钮都可跳转
  • 内容状态:支持有图有文、有图无文、无图有文、无图无文四种状态
  • 心情文案:根据心情值自动生成程度描述
  • 图片查看点击图片支持放大预览1:1比例显示
  • 收藏状态:记录收藏状态并持久化存储
  • 删除操作:二次确认后删除,成功提示并返回首页

💾 数据存储

  • 心情值0-100范围开发阶段使用随机生成测试数据
  • 收藏状态:数据库存储,默认未收藏
  • 时间格式:与历史记录保持一致,具体到分钟

📄 编辑页功能详细说明

🎯 功能概述

编辑页是用于修改已存在心情记录的页面,支持编辑文本内容和配图,但核心的情绪类型和心情值不可修改,确保记录的原始性和一致性。

📱 页面结构

  1. 顶部导航栏

    • 返回按钮:点击返回上一页,有编辑行为时弹出确认弹窗
    • 时间显示:记录创建时间(格式:今天/昨天 HH:mm不可修改
  2. 只读内容区域

    • 小鸡形象:根据情绪类型显示对应图标(不可修改)
    • 心情值0-100数值显示不可修改
    • 心情文案:动态生成的"程度+心情类型"组合(不可修改)
  3. 可编辑区域

    • 文本输入框最大500字符支持emoji固定高度可滚动
    • 配图区域:支持系统相册单图选择、预览和删除
  4. 保存按钮

    • 位置:页面底部固定
    • 功能:保存编辑内容并返回首页,自动定位到编辑记录

🔄 交互逻辑

  • 退出确认机制:检测文本或图片变化,弹出二次确认弹窗
  • 图片管理:无图片时显示添加占位符,有图片时显示缩略图和删除按钮
  • 保存流程:收集编辑数据 → 更新数据库 → 返回首页 → 自动定位
  • 交互反馈保存成功Toast提示"保存成功",返回动画向左推动

📝 编辑规范

  • 可编辑内容文本描述最大500字符、配图单张系统相册选择
  • 不可编辑内容:情绪类型、心情值、时间、心情文案
  • 文本输入支持emoji固定高度输入框支持垂直滚动
  • 图片处理:暂时不做大小和压缩限制,使用系统默认加载策略

🎨 状态支持

  • 基础状态:无文本无图片的初始编辑状态
  • 文本编辑状态:有文本无图片的编辑状态
  • 完整编辑状态:有文本有图片的完整编辑状态

📄 添加心情页面功能详细说明

🎯 功能概述

添加心情页面是通过摇晃手机来记录心情强度的核心功能页面,用户通过摇晃动作来量化心情程度,然后跳转到编辑页完成最终记录。

🔄 完整交互流程

首页 → 点击添加按钮 → 心情选择弹窗 → 选择心情类型 → 添加心情页面 → 握紧提示(2s) → 摇晃提示(2s) → 遮罩消失 → 用户摇晃 → 实时显示进度 → 点击结束按钮 → 编辑页面 → 编辑文本/图片 → 保存 → 首页(自动定位到新记录)

📱 页面结构与状态

1. 顶部区域

  • 返回按钮: 左上角,点击返回上一页(首页)
  • 标题显示: 添加心情(页面标题)

2. 信息显示区域

  • 心情文案区域:

    • 默认状态:显示"开始!"
    • 摇晃状态:显示"程度+心情类型"组合文案
      • 程度映射0-20(有些) → 20-40(非常) → 40-60(超级) → 60-80(这也太) → 80-100(完全无法控制)
      • 示例心情值88 + 开心 = "完全无法控制 开心"
  • 心情值显示:

    • 数值范围0-100
    • 根据摇晃强度和时长从0开始累计
    • 实时更新显示
  • 进度条:

    • 根据心情值实时更新进度
    • 视觉反馈摇晃强度
  • 小鸡形象:

    • 根据心情类型显示对应图标
    • 暂不根据心情值变化(与详情页保持一致)

3. 结束按钮

  • 位置: 页面底部
  • 功能: 点击跳转到编辑页面
  • 数据传递: 携带心情类型、心情值、时间等信息

4. 遮罩引导系统

  • 第一阶段0-2秒 显示"握紧手机"
  • 第二阶段2-4秒 显示"开始摇晃,记录心情"
  • 第三阶段4秒后 遮罩自动消失

🔧 技术实现要点

传感器监听

  • 加速度传感器: 监听手机摇晃动作
  • 摇晃强度计算: 根据传感器数据计算摇晃强度
  • 阈值过滤: 只有达到一定强度的摇晃才累计心情值
  • 错误处理: 无传感器时Toast提示"无传感器"

心情值计算

  • 累计逻辑: 根据摇晃强度和持续时间累计心情值
  • 上限控制: 最高累计到100不再增加
  • 实时更新: 心情值和进度条实时反馈

数据流传递

  • 首页→添加页: 心情类型数据通过Intent传递
  • 添加页→编辑页: 心情类型、心情值、时间数据传递
  • 编辑页→首页: 保存后返回首页并自动定位到新记录

📝 页面状态管理

初始状态

  • 遮罩显示"握紧手机"
  • 心情值显示0
  • 进度条为空
  • 小鸡形象根据传入的心情类型显示

准备状态

  • 遮罩显示"开始摇晃,记录心情"
  • 其他UI元素保持初始状态

摇晃检测状态

  • 遮罩消失
  • 文案显示"开始!"
  • 等待用户摇晃动作

摇晃进行状态

  • 实时更新心情文案(程度+心情类型)
  • 心情值实时累计
  • 进度条实时更新
  • 小鸡形象保持不变

完成状态

  • 用户点击结束按钮
  • 携带所有数据跳转到编辑页面

🚨 注意事项

  1. 传感器权限: 需要确保应用有传感器使用权限
  2. 性能优化: 传感器数据更新频率需要合理控制,避免过度消耗电量
  3. 用户体验: 摇晃检测灵敏度需要平衡,既不能太敏感也不能太迟钝
  4. 数据一致性: 确保整个流程中数据传递的准确性和完整性

此文档将随着开发进展持续更新,记录重要的技术决策和进度变化。