WeightDouble116 页面风格改造方案

统计时间:2026-05-18

目标:WeightDouble116 需要按 WeightSingle116 的页面风格改造。

核心方向:保留 WeightDouble116 的双秤业务能力和左右餐台数据流,将页面视觉、交互骨架、终端大屏风格向 WeightSingle116 靠齐。

对比结论

WeightDouble116 当前风格

WeightDouble116 当前是新双秤全屏卡片风格:

  • 首页 activity_home.xml 结构简单,主要是全屏 home_frame_layout
  • 打餐前页面 fragment_pick_meal_before_new.xml 直接左右均分两个菜品信息组件。
  • 打餐中页面 fragment_pick_meal_ongoing_ring.xml 是左右餐台 + 中间用户 + 底部营养/推荐环。
  • 设置页整体偏新版紧凑样式。

核心页面:

  • /Users/liang/AndroidStudioProjects/WeightDouble116/app/src/main/res/layout/activity_home.xml
  • /Users/liang/AndroidStudioProjects/WeightDouble116/app/src/main/res/layout/fragment_pick_meal_before_new.xml
  • /Users/liang/AndroidStudioProjects/WeightDouble116/app/src/main/res/layout/fragment_pick_meal_ongoing_ring.xml
  • /Users/liang/AndroidStudioProjects/WeightDouble116/app/src/main/java/com/cpt/zhct/weighting/activity/HomeActivity.java

WeightSingle116 参考风格

WeightSingle116 是旧版大屏业务引导风格:

  • 首页有背景图 home_bac
  • 有顶部网络/状态展示。
  • 有左侧流程导航或步骤感。
  • 称重页有标题栏、主内容框架、隐藏排菜入口、实时重量浮层。
  • 打餐前/打餐中页面更强调大字菜名、大价格、大营养面板。

核心参考页面:

  • /Users/liang/AndroidStudioProjects/WeightSingle116/app/src/main/res/layout/activity_home.xml
  • /Users/liang/AndroidStudioProjects/WeightSingle116/app/src/main/res/layout/activity_weight_main.xml
  • /Users/liang/AndroidStudioProjects/WeightSingle116/app/src/main/res/layout/fragment_pick_before_layout.xml
  • /Users/liang/AndroidStudioProjects/WeightSingle116/app/src/main/res/layout/fragment_pick_ongoing_with_balance_layout.xml

改造原则

  1. 保留 WeightDouble116 双秤业务逻辑。
  2. 不直接迁移 WeightSingle116 的单秤 WeightMainActivity 状态机。
  3. 页面风格参考 WeightSingle116,但数据绑定仍使用左右餐台两套字段。
  4. 不贸然引入人脸识别、摄像头预览等单秤工程能力,除非产品明确需要。
  5. 长按入口需要结合本设备限制改为点击或多击触发,避免后续页面改造时继续保留长按。

主要差异与改造方向

1. 首页骨架

WeightDouble116:首页只有一个全屏内容容器、左下角隐藏排菜入口、中部溢出提示、底部实时重量浮层。

WeightSingle116:使用 home_bac 背景,顶部有网络状态/标题区域,左侧有流程导航,内容区有明确框架和大屏终端感。

改造方向:WeightDouble116 首页改造成 WeightSingle116 的大屏骨架,但主内容区仍承载双秤 fragment。

2. 打餐前页面

WeightDouble116:左右两个 PickBeforeShowDishInfoNewView 均分展示,每侧是新版紧凑卡片。

WeightSingle116:单屏大菜名、大价格、大营养信息,右侧营养面板视觉更重。

改造方向:做双餐台旧风格版本:左餐台一套大菜名/价格/营养面板,右餐台一套大菜名/价格/营养面板。视觉语言参考 fragment_pick_before_layout.xml,但布局需适配双栏。

3. 打餐中页面

WeightDouble116:左右餐台展示当前菜品,中间展示用户头像和姓名,底部展示营养/推荐环,支持营养+价格、纯营养、细分余额等显示模式。

WeightSingle116:单菜品大屏展示当前菜品,显示已取重量、费用、余额和营养。

改造方向:做双餐台旧风格版打餐中页面。左右餐台分别展示菜名、单价、当前取餐重量、当前费用;用户/余额信息放在中间或顶部状态区;营养推荐区域参考旧版大面板风格。

4. 设置页

WeightDouble116:设置项高度、字号较紧凑,有显示模式配置。

WeightSingle116:字号更大,设置导航和分组更像大屏终端。

改造方向:同步 WeightSingle116 的字号、行高、分组面板样式;保留 WeightDouble116 的双秤特有配置;保留显示模式配置:营养+价格、纯营养、细分余额。

建议迁移资源

WeightSingle116 参考迁移或对齐:

注意:资源迁移时需要避免覆盖 WeightDouble116 已有同名但语义不同的资源。建议先做资源清单和命名冲突表。

推荐实施步骤

  1. 资源与主题对齐:对比 colors.xmldimens.xmlstyles.xml,迁移大屏终端视觉变量,处理资源命名冲突。
  2. 首页骨架改造:改造 activity_home.xml,加入旧版背景、标题/状态区域、流程导航区域,保留 home_frame_layout
  3. 打餐前双栏旧风格页面:新建或改造双栏打餐前 layout,每个餐台使用旧版大屏菜品/营养视觉。
  4. 打餐中双栏旧风格页面:保留 HomeActivity 的左右秤回调与状态机,将左右当前取餐重量、费用、余额显示到旧版视觉组件中。
  5. 设置页与弹窗统一:设置页同步旧版字号、间距、标题栏;弹窗对齐旧版大屏样式;排菜页保留双餐台 tab。
  6. 交互限制处理:结合 long_click_events.md 的统计结果处理长按入口。

风险点

验证建议

构建环境提醒

当前项目使用 Gradle 5.1.1 和 Android Gradle Plugin 3.4.1。使用 Java 17 构建会遇到 Groovy 初始化错误,建议使用 Java 8,例如本机 Corretto 8。

已实施记录

实施分支:codex/weightdouble116-single-style-clicks

实施时间:2026-05-18

分支变更范围

页面适配

  1. 标题栏按 WeightSingle116 大屏风格调整:title_bar_height 从 62dp 调整为 100dp;logo 从 56dp x 28dp 调整为 120dp x 60dp;网络状态图标从 20dp x 16dp 调整为 35dp x 28dp;时间字号从 18sp 调整为 28sp;返回/刷新按钮从 80dp x 28dp 调整为 100dp x 50dp,文字字号从 16sp 调整为 24sp;增加 title_layout_show_name_view,用于对齐 WeightSingle116 标题栏结构。
  2. 首页骨架按 WeightSingle116 的大屏容器风格调整:activity_home.xml 根布局增加 @drawable/home_bac 背景;主内容区域改为带 30dp 外边距、16dp 内边距的深色描边面板;保留原 home_frame_layout 作为双秤业务 fragment 容器,不迁移单秤 WeightMainActivity 状态机;首页左下角排菜入口保持原位置,但从长按改为点击,并设置 android:clickable="true"
  3. 增加与 WeightSingle116 对齐的面板背景资源:app/src/main/res/drawable/home_frg_right_light_bac.xmlapp/src/main/res/drawable/home_frg_right_bac.xml
  4. 已按要求将 WeightDouble116R.drawable.home_bac 直接替换为 WeightSingle116home_bac.png。来源:/Users/liang/AndroidStudioProjects/WeightSingle116/app/src/main/res/drawable/home_bac.png;目标:/Users/liang/AndroidStudioProjects/WeightDouble116/app/src/main/res/drawable/home_bac.png;替换后两个文件 SHA-256 一致:e492928f5161610b10ac518d8c7bc28b3c8df300e88d667b9c9cd93fc6270828
  5. 首页取餐流程固定到新宽屏适配页面:打餐前固定使用 NewHomePickBeforeFragment;打餐中固定使用 HomePickOngoingRingBalanceSplitFragment;原多 Fragment 样式切换逻辑保留为注释,具体显示差异由 HomePickOngoingRingBalanceSplitFragment 内部按 STYLE_HOME_DISPLAY 控制。
  6. 取餐中页面按新款宽屏双秤重排:fragment_pick_meal_ongoing_ring_balance_split.xml 改为上方左右双餐台信息、下方能量建议/推荐环/用户余额信息的宽屏布局;左右餐台信息卡支持显示菜名、单价、菜品标签、当前取餐重量和当前费用;能量建议改为低/合适/高三套背景图和颜色;支持三种首页展示模式:1 营养+价格+余额汇总,2 纯营养,3 营养+价格+现金/补贴余额拆分。
  7. 打餐前菜品详情升级为宽屏营养展示:new_pick_bafore_show_info_layout.xml 改为大字号菜名、价格、标签、能量圆形展示、三大营养素供能比进度条、膳食纤维/VB1/VC/VB2 信息块;新增 PickBeforeShowNutrientItemViewRoundedProgressBarShowNutrientSupplyPercentView 三个自定义 View。
  8. 菜品营养数据模型扩展:GetDishDetailResponse 新增 vavb1vb2vccalciumironzinc 字段;新增三大营养素供能比字段 carbohydrate_ratioprotein_ratiofat_ratioConstantsDishInfoUtils 增加左右餐台对应字段的缓存、清空和写入逻辑。
  9. 取餐中菜品卡片增强:PickOngoingShowDishInfoWithPriceView 增加菜品功能标签展示;增加单价显示和本次消费显示的开关能力,用于适配纯营养、余额汇总、余额拆分等模式;价格格式统一为 "( ¥%.2f元/100g )"
  10. 排菜页面适配宽屏:菜品列表从 3 列改为 6 列;每页数量从 12 改为 24;搜索栏、分类栏、顶部切换按钮和字体整体放大;加载更多改为自动加载,并处理宽屏第一页内容不足一屏时继续加载的问题;已选菜品再次点击改为弹删除确认,不再依赖长按删除。
  11. 设置页和通用 UI 放大:设置页从顶部横向 Tab 调整为左侧竖向 Tab + 右侧内容区;设置项、管理员密码弹窗、箭头、按钮、字号和间距按宽屏终端尺寸放大;管理入口从标题 Logo 长按改为单击。
  12. 版本升级与在线更新:versionCode 从 1 升到 2;versionName1.2.0 升到 1.3.0;设置页新增获取最新版本接口 /p/api/getNewVersion,设备类型按 450 双秤写死为 4;获取到下载地址后通过浏览器打开 APK 下载链接。
  13. 资源与样式补充:新增取餐能量背景图、能量图标、营养项背景、首页右侧浅色背景等资源;新增/调整 colors.xmldimens.xmlattrs.xmlstrings.xml 中的宽屏尺寸、颜色、文案和自定义属性。
  14. 其他仓库变更:apk/app-debug.apk 已更新为新构建产物;README.md 新增本地提示词工程目录说明,此项不是双秤宽屏业务逻辑。

交互适配

所有长按入口已改为点击,详见 long_click_events.md

验证

已重新搜索长按相关关键字,无残留;已使用 Java 8 执行 sh gradlew :app:assembleDebug,构建成功。