8.3.6
本次重点是继续把主导航、详情页返回和共享元素动画迁移到 Navigation3,并修复迁移过程中暴露出的返回动画、ViewModel extras 与高频入口过渡问题。
迁移背景
之前使用的导航方式:应用长期由 AppNavigation 自己维护路由字符串、返回栈、BackHandler 和共享元素返回状态;部分新页面虽然已经有 Navigation3 key,但仍需要和旧路由栈互相镜像,属于“旧应用壳 + 部分 Navigation3 桥接”的混合链路。
为什么要迁移到 Navigation3:旧链路在视频详情、历史、动态、空间等页面之间返回时,需要同时协调系统返回、应用内返回、共享元素来源卡片、ViewModel 创建环境和底部/顶部导航状态,状态分散后容易出现返回动画抢占、来源卡片丢失、UI 短暂错位或页面点击闪退。
迁移后的目标:让页面栈、返回目标、转场策略和页面创建环境统一由 Navigation3 主链路承接,AppNavigation 只保留应用壳、全局状态和必要的兼容桥接,后续页面接入共享元素或预测式返回时不用再各自补一套返回状态。
更新内容
迁移到 Navigation3 的返回链路:视频详情返回首页、历史、动态、空间等来源页时,返回动作会先由应用内 Navigation3 桥接层识别来源和目标,再交给共享元素系统执行卡片到详情页的形变,避免系统预测式返回和应用内共享元素同时抢同一段动画。
迁移到 Navigation3 的 ViewModel 环境:Navigation3 页面内容现在会继承应用级 APPLICATION_KEY extras,历史、动态、空间等入口创建 ViewModel 时不再因为缺少 Application 上下文而闪退。
迁移到 Navigation3 的共享元素来源页:首页、动态和 UP 主空间等高频视频卡片统一记录来源位置和共享元素 key,视频详情返回时能回到正确卡片,并带有轻微物理回弹收尾。
迁移过程中的 UI 稳定性修复:修复关闭预测式返回手势后,从视频详情返回首页出现 UI 错位的问题;开启首页顶部标签页下滑隐藏时,返回过程中也不再短暂闪出顶部标签页。
首页底栏点击切换稳定性:底栏一级 Tab 切换时接入真实转场预算和 Navigation3 无淡入淡出策略,指示器点击动效改为统一的 DampedDragAnimation 时序,避免页面切换期间叠加重折射、页面 fade 和额外指示器 pulse。
首页底栏玻璃层稳定性:底栏搜索胶囊、外壳、指示器和输入热区拆成独立渲染层;点击高光锚定到目标 Tab,拖拽时才跟随实时指示器;玻璃捕获层改为预热/常驻策略,避免切换瞬间采样到原始视频画面或出现短暂透底。
首页顶部 Chrome 液态玻璃收敛:移除旧的共用 Home Chrome renderer 和过时的实验液态玻璃容器,首页顶部 Chrome 直接在 iOSHomeHeader 内按 Backdrop / Haze / 普通模糊模式渲染,滚动耦合折射、暗色叠层和扁平玻璃策略更清晰。
底栏拖拽动画性能整理:DampedDragAnimation 的逐帧拖拽更新合并为单个协程同步位置和偏移,减少拖拽过程中的重复 launch / cancel,并保留 snap 抢占语义。
图片保存目录自定义:新增“图片保存位置”设置入口,可通过系统文件夹选择器授权自定义目录;动态图片、头像/背景预览保存和评论图片保存会优先写入用户选择目录,失败时回退原有系统相册保存逻辑。
动态页顶栏对齐:动态侧边栏返回区域与顶部标签栏统一使用 52dp 顶栏高度,侧边栏列表顶部预留同步跟随该高度,修复返回图标和顶部标签视觉中心不一致的问题。
隐私内容解锁:新增“进入隐私内容时验证”开关,进入搜索、历史、收藏、稍后再看、离线缓存和消息等隐私内容前可使用系统指纹、人脸或锁屏密码验证。
设置页图标与隐私文案整理:抽出统一语义图标策略,设置页与搜索结果的 iOS / MD3 图标语义更稳定;“隐私无痕模式”改为更直观的“不记录历史”,并补充隐私内容验证入口。
首页卡片玻璃标签退役:首页、搜索和通用列表的视频信息标签固定回普通样式,旧的封面/信息区玻璃标签偏好不再影响卡片渲染,减少小卡片上的玻璃层级干扰。
版本与文档同步:版本号升级到 8.3.6 / versionCode 200,README、README_EN 和更新日志同步到 8.3.6。