Skip to content

v0.21.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 09:43
· 4 commits to main since this release

安装

Android 8.0(API 26)及以上,需开启「允许安装未知来源应用」。

附件为 debug 构建,仅供测试分发,未做 release 签名与 R8 混淆。


v0.21.0 要点

整个界面换成黏土质感

这一版把「我的 / 我的主页 / 复习 / 训练 / 技能书」五页的视觉语言统一换掉:不再是白描边卡片 + 渐变,而是压实的黏土块——柔和的影、极短的高光、平涂的色。

为什么不是普通的 shadow:Modifier.blur() 要 API 31,本工程最低 26;Modifier.shadow() 只能给正下方一层、颜色不可控,也做不出「左上亮、右下暗」的双向感。所以影是用 BlurMaskFilter 离屏画出来再缓存的(按尺寸 / 圆角 / 偏移 / 模糊 / 颜色,LRU 24 条),绘制时只多一次 drawBitmap。

每块卡四层:外投影 → 贴边光 → 顶部一截高光 → 内底压暗。彩色卡(墨黑 hero、训练蓝、警示黄)走同一套阴影,只是换填充色。

三轮收敛出来的三条规则

第一版做完真机一看,每块都在发光:卡片像半透明,边缘反而找不到。逐像素量过才发现是三件事叠在一起——高光铺满上半块(85% 白)、外光斑 70% 白晕在四周、描边写的是 1f 即 1 物理像素(2.75 倍屏上只有 0.36dp)。而底色与卡面只差 9 个色阶,高光一撤就同色,所以边界必须靠描边 + 接触影撑,不能靠高光。

于是有了这三条,后续所有页面都按它改:

  1. 高光只做贴唇:顶部 20dp 内 30%→0,高度封顶,卡片变高唇不变厚
  2. 描边用 dp:1.dp.toPx(),颜色压到 #D8DEE8;1 物理像素在高分屏上等于没有
  3. 影分两层:远的一层做体积,近的一层(0.3e / 0.5e、alpha 40%)做接触影。只有一层时怎么调都发虚

颜色:从渐变糖块到平涂

  • 技能书按分类上色:装备钢蓝、绳索青、冰雪靛、医学红、判断琥珀、行前绿、领导力品红,与图标用同一套前缀匹配,图标和颜色永远指向同一类。顺序有讲究——绳索与冰雪都含「技术」二字,先判绳索再判冰雪,「技术」只作兜底,否则半列都是青块
  • 色块改平涂:原来 ClayChip 画垂直渐变 + 18% 白唇,读起来像塑料糖块;现在只剩一块实色 + 同色投影,不画渐变、不画唇光
  • 顶部大色块平涂:复习排队卡、训练今日推荐、我的海拔 hero 三处从渐变改成实色,加一个 heroFlat 中间调;体积感交给同色投影与描边
  • 详情页封面跟着分类走:原来是写死的品牌蓝,现在是分类色平涂 + 同色系胶囊

顺带修的

  • 连续解锁多条成就时的叠影:同一个调用点换参数不会重建 AndroidView,上一条的 3D 渲染器还在画,新成就的定稿图又叠上去。改成按成就 id 打 key 重建;弹窗之间的遮罩改为常亮,不再闪一帧没遮暗的主界面
  • 英文 1 days → plurals(10 语言,俄语补 one/few/many/other)
  • 技能书摘要硬切在半个词上,补 TextOverflow.Ellipsis
  • rev_all_done 里的弯引号被回退字体撑成 Today' s,改回 ASCII 撇号

还没做的

  • 详情页正文仍是旧的白描边卡片,没换成黏土——这一页信息密度高,担心柔影吃掉对比,留待单独评估
  • 训练页顶部「Today · TODAY」文案重复,是更早留下的问题
  • 只跑了模拟器(Pixel 6 / android-34):实体机上的三层投影开销、OLED 灰阶过渡、深色模式逐项配色都还没校

本次一并发布的版本(此前未单独发版,只列要点)

  • v0.20.21 — 技能书按分类上色,色块改平涂
  • v0.20.20 — 高光收成贴唇,投影拆成体积影 + 接触影
  • v0.20.19 — 黏土材质落地:四页改造