docs(plans): 留痕 K52 原生开屏清理

This commit is contained in:
Zhou Weidong committed 2026-10-20 17:46:08 +08:00
1 parent 7fc5eb9067
commit a38809cc5d
2 files changed
+51 -18

No files matched your search

+13 -18
View File
@@ -1,25 +1,20 @@
## [已处理] 2026-10-20 | K51-A 修复首页进入详情页闪屏/灰屏(仅 App 端)
## [已处理] 2026-10-20 | K52-A 去掉原生静态开屏,直接进入带动画的开屏页(仅 App 端)
**用户指令(2026-10-20,原文)**:
> 「从首页进短剧详情页会闪屏 灰屏看下什么问题」
> 「原生的开屏也就不要了 直接显示带动画效果的开屏页即可」
**根因(已定位)**
`PlayerLogic.openDetail()` 在 push 详情页之前先执行:
1. `session.setRouteVisible(false)` —— 视频层被隐藏/降级为未就绪状态,feed 只能渲染封面占位;
2. `await session.playbackSettled` —— 等待期间首页仍可见;
此时封面若尚未进图片缓存,`RemoteImage` 会先画浅色底,叠加遮罩后呈灰白 → 用户看到的就是进详情前的灰屏闪一下;随后 `saveCurrentProgress` 再等待一次,进一步放大该可见窗口。
**口径(只改 Flutter,不动后端、不改接口)**
1. `openDetail()` 改为先 push 路由(视频组件保持挂载,不再 `setRouteVisible(false)`、不再 `await playbackSettled` 后再 push):
- push 之前 `session.setOverlayOpen(true)`,路由返回后 `session.setOverlayOpen(false)`(复用评论面板的暂停/恢复方式,保证详情页覆盖期间不继续外放声音);
- 路由期间视频正常暂停,返回后回到原播放状态与进度,不重新 seek。
- `saveCurrentProgress()` 放到 push 返回之后(不阻塞首帧)。
2. 首页 feed 的「标题点击进详情」「系列信息点击进详情」走同一逻辑,确保都不闪。
3. 详情页自身加载态保持 ink 背景 + 现有骨架,不改。
**口径(只改 Flutter / 原生启动资源,不动后端、不改接口)**
1. Android 原生开屏只保留纯色底:
- `android/app/src/main/res/drawable/launch_background.xml`、`drawable-v21/launch_background.xml`、`drawable-v31/launch_background.xml` 全部改为仅 `@color/splash_background`(去掉 bitmap / splash_icon 图层);
- `values-v31/styles.xml` 与 `values-night-v31/styles.xml`:`windowSplashScreenAnimatedIcon` 改为透明 drawable(新增 `drawable/splash_transparent.xml`,`<shape><solid android:color="@android:color/transparent"/></shape>`),移除 `windowSplashScreenIconBackgroundColor`;
- `splash_background` 保持 `#100C0A`,与 Flutter 动画开屏背景一致,避免色差。
2. iOS 原生开屏去掉静态图:
- `ios/Runner/Base.lproj/LaunchScreen.storyboard` 删除 `LaunchImage` imageView 及其 constraints,仅保留深色背景(现 rgb 0.0627/0.0470/0.0392)。
3. Flutter 动画开屏页保持 K50-A 的动画(logo 放大淡入 → FruitShorts → 水果短剧 → 转圈),作为用户看到的第一个画面;原生只做纯色过渡。
4. 不再引用 `drawable-*/splash_icon.png` 与 iOS `LaunchImage`(文件可保留,但不得出现在启动界面)。
**测试/门禁**
- 新增:从 feed 点详情后,push 前后视频 port 保持挂载(可断言 `session.active` 不变)、路由返回后播放状态与进度不变;
- 不再出现 `setRouteVisible(false)` 造成的占位渲染;
- 静态检查:三个 `launch_background.xml` 不再包含 bitmap;v31 styles 不含 `windowSplashScreenIconBackgroundColor`;LaunchScreen.storyboard 不含 `LaunchImage`;
- `dart analyze lib test` 零告警 + `flutter test` 全过 + `flutter build apk --debug`。
**流程**:从 `develop` 拉 `fix/flutter-k51-detail-flash`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行。
**流程**:从 `develop` 拉 `feature/flutter-k52-native-splash-clean`;作者 `Zhou Weidong <502333560@qq.com>`;`--no-ff` 合回 develop 并 push;PROGRESS 留痕;真机验收由用户执行(冷启动应看到纯深色 → Flutter 动画开屏)。
+38
View File
@@ -21822,6 +21822,44 @@ Running Gradle task 'assembleDebug'...
解读:清理旧构建与 asset 缓存后,静态检查零告警,458 条测试全部通过,debug APK 从零重新构建成功。新版桌面图标与开屏 logo 的真机视觉效果由用户安装验收。
## 2026-10-20 ReelShort:K52-A 清理原生静态开屏
- 前置状态:K51-A 合并提交 `375b013`;图标资源最终合并 `fcf30ff`;开屏 logo 强化合并 `53591ab`,均已推送到 develop。
- 分支:`feature/flutter-k52-native-splash-clean`
- 功能提交:`fe5b6e6 feat(flutter): 移除原生静态开屏`
- develop 合并提交:`a11ba50 merge: 合并 K52 原生开屏清理`,已推送。
- Android 三个 `launch_background.xml` 仅保留 `@color/splash_background`,删除 `splash_icon` bitmap 图层;`splash_background` 继续为 `#FF100C0A`。
- 新增透明 `drawable/splash_transparent.xml`,`values-v31` 与 `values-night-v31` 的系统开屏图标均指向该 drawable,并删除 `windowSplashScreenIconBackgroundColor`。
- iOS `LaunchScreen.storyboard` 删除 `LaunchImage` imageView、相关 constraints 与图片资源声明,仅保留现有深色背景;LaunchImage 文件仍保留但不再出现在启动界面。
- Flutter 动画开屏继续作为原生纯色过渡后的第一个品牌画面。
静态检查:
```text
三个 launch_background.xml:无 bitmap / splash_icon
values-v31 与 values-night-v31:无 windowSplashScreenIconBackgroundColor
LaunchScreen.storyboard:无 LaunchImage
xmllint --noout:全部通过
```
门禁原始输出:
```text
$ dart analyze lib test
Analyzing lib, test...
No issues found!
$ flutter test
00:47 +458: All tests passed!
$ flutter build apk --debug
Running Gradle task 'assembleDebug'...
5.7s
✓ Built build/app/outputs/flutter-apk/app-debug.apk
```
解读:静态检查零告警,458 条测试全部通过,debug APK 构建成功。冷启动应从深色原生底直接过渡到 Flutter 动画开屏,最终效果由用户真机验收。
## 2026-10-20 ReelShort:详情页顶部圆形按钮统一修正
- 前置状态:K40-B 评论入口登录闸已合并,合并提交 `230f16a`。