Skip to content

v0.11.17

Choose a tag to compare

@sctale sctale released this 17 Oct 06:58
· 10 commits to main since this release

优化(触感反馈——第二次调振动,这次换了路子)

上一版只是把波形调轻,你没说清楚"哪里难受"也没关系——问题本来就不在大小上:expo-haptics 在 Android 上走的是直接驱动马达打自定义波形(Vibrator.vibrate(createWaveform(...)),轻档=50ms@30),而不是系统触感通道。Android 的触感设计原则把这类效果单列为「蜂鸣(buzz):噪杂、尖锐、穿透性强,振动停了还留余震」,举的坏例子恰恰是"按键按下后振动时间过长";expo 自己的 API 声明也写着"Vibrator API is not recommended for haptics feedback, use performAndroidHapticsAsync"。所以在它上面怎么调参数都只是选"哪种蜂鸣"。

  • Android 改走 HapticFeedbackConstants(View.performHapticFeedback):波形由厂商按你这台设备调校、跟随系统触感开关、机型不支持时平台自己回退;iOS 继续用 UISelection / UINotification。
  • 新增档位:设置 → 偏好 → 触感反馈 = 关闭 / 精简(默认)/ 完整,选完当场给一段样本,不用等下个版本才能试。
  • 默认「精简」数字键盘按键、分类与收支切换不再振动,只在记一笔成功、失败或删除时反馈一下——这是 Things 3、Cash App 一路的克制:确认只出现在有意义的状态变化上。
  • 想要按键反馈就切「完整」,那里用的是 SEGMENT_FREQUENT_TICK(系统定义:"预期极轻,连续触发也不难受;设备做不出足够轻的振动时干脆就不振"),并加 25ms 去重,避免同一次点击连发两下叠成嗡声。

修复(记账时的备注框)

  • 点不中的第一半是热区太小:「+ 添加备注」实际可点区域不到 20dp 高,第一下经常点空。现在 40dp 最小高 + 上下各 12dp 的 hitSlop。
  • 点完输入框被键盘盖住:原先在 onFocus 时滚到底,那一刻键盘还没弹起、滚的位置没意义;Android 15+ 全屏模式下系统也不再压缩窗口,卡底的数字键盘和它上面的备注行一起被键盘挡住,看起来就像"点了没反应",得再点一次。现在改成监听 keyboardDidShow 拿真实高度 → 给内容补同高的 paddingBottom → 延一帧再滚到底,备注行精确停在键盘上沿(与编辑页已验证的做法对齐)。
  • 备注框加「完成」键:写完按一下直接收起键盘回到数字键盘。编辑页(长按记录)同步以上三项。