DLsiteFloat

DLsiteSound 悬浮窗 / 状态栏字幕模块

简体中文 | 繁體中文 | English

GitHub release GitHub downloads GitHub stars


功能特性

  • 悬浮字幕窗:在 DLsiteSound 播放页挂一个与播放进度同步的字幕窗,可拖动、可缩放。
  • 状态栏字幕:把当前字幕行镜像到系统状态栏(在 SystemUI 进程内注入)。支持单程左移滚动、实时让位时钟与通知图标区、流体云动态避让。
  • 播放页双胶囊按钮:状态栏 开 / 关 与 悬浮窗 开 / 关,随页面自动显隐;无字幕时自动置灰或隐藏。
  • 进程内悬浮窗:窗口直接挂在 DLsiteSound 进程内,与各个 Hook 共享同一份字幕数据,无需跨进程 IPC、无需独立 Service。
  • 可单独使用悬浮窗字幕:未授权 com.android.systemui 作用域时,左侧状态栏 开 / 关按钮不显示。
  • 自动抓取字幕:拦截 DLsiteSound 的网络响应自动解析字幕 JSON,不依赖 URL 关键词。
  • 换轨智能处理:切到无字幕音轨时先挂起并提示,等新音轨的字幕 JSON —— 无缓存时等 1 秒、已有缓存放宽到 15 秒,期间可提前收窗并在字幕到达后自动开回。
  • 液态玻璃:悬浮窗面板与播放页字幕按钮可切换为液态玻璃质感 —— 背景模糊交给系统合成器做,玻璃材质由模块自绘。
  • 可视化设置页:模块自带设置页,可调主字幕 / 非活动行 / 排版 / 液态玻璃等参数,改完点「保存设置」即生效。
  • 多语言支持:按系统语言取插件显示语言,支持简体中文 / 繁體中文 / English

适配范围

项目 说明
目标 App DLsiteSound(jp.co.eisys.dlsitesound)
框架 LSPosed 2.2.0+(libxposed API 102)
作用域 需勾选两个:jp.co.eisys.dlsitesound 与 com.android.systemui
Android 版本 Android 7.0(minSdk 24)起,targetSdk 34
机型 / ROM 基于 ColorOS 16/17 测试制作,其它 ROM 理论上可用

使用说明

  1. 下载模块

    从主仓库 Releases 或本仓库 Releases页面下载最新版本的 APK(通常情况下,两者更新进度一致,若不一致以主仓库为准)。

  2. 安装并启用

  • 安装 APK 到已 root 设备
  • 打开 LSPosed 管理器,找到 DLsiteFloat 模块
  • 勾选启用,作用域两个都勾:jp.co.eisys.dlsitesound + com.android.systemui
  • 强制停止 DLsiteSound,并重启 SystemUI 或重启手机
  1. 授予悬浮窗权限
  • 设置 → 应用 → DLsiteSound → 权限管理 → 特殊应用权限 → 悬浮窗
  • 设置 → 应用 → DLsiteFloat → 权限管理 → 特殊应用权限 → 悬浮窗
  1. 开始使用
  • 打开 DLsiteSound 的有字幕播放页,播放控制条上方出现两个胶囊按钮
  • 左键开关状态栏字幕,右键开关悬浮窗
  • 悬浮窗面板任意处拖动可移动,右下角手柄拖动可缩放

其他

完整说明与机制细节见主仓库:https://github.com/ariinyume/DLsiteFloat

提交 Issue:https://github.com/ariinyume/DLsiteFloat/issues

许可证:GPL-3.0-or-later

Releases

11/4/2026, 6:32:18 AM

🔧 修复

1. 缓存到本地的音轨,偶尔挂到别的作品的缓存字幕

  • 判定收进一个零状态纯函数内核,三道闸:有作品键就只认它;同一时长落在两个以上
    作品键就直接拒;没有作品键时只允许「唯一候选 + 无反证据」。
  • 保留「唯一候选且无反证据 ⇒ 放行」这条兼容路。
  • 候选构造按音轨自己的作品键分组(特典轨带子目录),并把「明确没有字幕的轨」也算进
    形状证据;反查磁盘时跳过作品键为空的条目。
  • 拒绝与推断分开留痕。

2. 宿主变成浮窗后,字幕开关按钮位置错位

  • 换算前减掉窗口原点;旧调用路径保留成「顶端=0」的薄委托 ⇒ 全屏下的位置逐像素不变。
  • 新增窗口形态检测(顶端 / 屏宽 / 屏高任一变化)⇒ 无条件强制重落位。

3. 三处字幕时序问题

  • 重建视图时不取消上一轮的行内滚动动画。
  • 延迟复核回调在视图销毁后仍会跑 ⇒ 改为发起时捕获视图身份,跑时身份不符直接放弃。
  • 布局监听器「只在第一次挂得上」⇒ 改为「先摘后挂」并记住挂载根。

📃 已知问题

宿主 app 以浮窗形式呈现时,因页面布局位置不足,字幕开关按钮会压住播放控件。

这一版修掉的是「坐标口径错位」,而浮窗里那块可用空间本来就窄:
简介行、进度条、时间行、控件行挤在一起,把按钮强行摆在正确位置之后,它仍和播放控件有重叠。
要彻底解决需要新的落位策略,留到后面的版本再做计划处理(或者不处理,开摆です)。

📦 版本

  • versionName:2.4.4
  • versionCode:1048
  • 无清单 / 组件变更,可直接覆盖安装
  • 校验:DLsiteFloat-2.4.4-code1048-debug.apk · 7,261,751 B
  • sha256 59a96bd24ede3a7f04edac99561773f6a15863a803f826e655a5da6913a7dbfa

Assets

1

10/29/2026, 2:39:31 AM

⭐ 新增

1. 字幕字体跟随系统设定

悬浮窗字幕的字体终于可选。宿主若装了全局改字体的模块,它会把悬浮窗里的字体一并换掉;
现在可以主动指定:

  • **关(默认)**=跟随宿主 App 字体,与上一版行为一致;
  • 开=改用手机系统字体,不受宿主改字体影响;
  • 只管悬浮窗内的字幕文字,播放页胶囊按钮仍跟随宿主。

🔧 修复

1. 字幕开关按钮的底色没跟随强调色 / 颜色调整

  • 模块在宿主进程里查不到配色模块,改用其已注册的广播接收器反推);
  • 液态玻璃补齐消费宿主强调色。
  • 底色改为「强调色原色 + 40% 不透明度」、亮度上限改卡合成后,
    与宿主播放控件同一档材质;液态玻璃的四档底色同步;底色变透后白字补一层淡暗影。

2. 字幕阴影颜色 / 强度 / 半径调整不生效

  • 新增字幕行视图,在每帧落笔前把配置值重写一次。

3. 设置页预览的字体与悬浮窗实际字体不一致

  • 新增宿主字体回传通道,悬浮窗真正在用的字体会被递给设置页,预览据此还原。

⚡ 其他

  • 字幕开关按钮改落播放进度条下方(适配宿主新排布),并跟随时间行换行重新落位。

📦 版本

  • versionName:2.4.3
  • versionCode:1047
  • 无清单 / 组件变更,可直接覆盖安装

装完可在 LSPosed 日志里核对 ==== BUILD 2.4.3 / code 1047 这一行确认是新包。

📃 已知事项

  • 「跟随系统字体」开启后,字幕粗细使用合成加粗(平台默认字体没有可选的粗体变体)。
  • 若同时使用其它全局美化类模块,其窗口级装饰仍可能作用于本模块的悬浮窗;
    阴影与文字色已做兜底,其余项目如遇冲突请附日志反馈。

Assets

1

10/23/2026, 9:25:48 AM

🔧 修复

1. 关闭播放页后按钮多挂 2.7 秒

快照有效期分两档 —— 探测锚点占屏面积归零(页面真的看不见了)走 500 ms 短窗;
仍有可见面积(真实拖动实测 30~45%)保持 2600 ms 原样不动,
手指按住页面停在极限位静止的保护不受影响。

2. 离线时读到与自己音轨不匹配的字幕

① 磁盘缓存绕过「时长歧义」判定
缓存与预取池共用同一把尺子:存在等长无字幕轨、或该时长跨 ≥ 2 部作品 ⇒ 缓存也不命中,
宁可空白;池子为空时一律放行(没有证据不能反向封死缓存)。

② 「主人印章」的时长取自会漂移的活值
印章按时长锚定:预取池与磁盘缓存都按时长取文件、知道这份 JSON 属于哪一轨,
时长对不上就作废印章,交回选择键 / 重建窗口 / 换作品三条有独立证据的路径。

3. 索引迁移不再清空缓存

上一版为了让写错的条目作废,把索引版本 4 → 5 当成整批丢弃,用户的字幕缓存会被整个清空一次。
复查后发现错标其实有可判别的签名:每条缓存都记着这份字幕自己的最大结束时间,
现在迁移改为定向清理:按「同作品 + 同内容」分组,逐组保留标签最贴内容的一条、删掉其余;
缺结束时间或只剩一条就判不了,一条不动;其余缓存与占用原样保留。索引仍落到 5,迁移只跑一次。

⚡ 其他调整

  • 跨进程广播契约自检的协议版本断言长期钉在 1(协议实际已是 2),每轮单测都白挂一条假红,已按实际值对齐。
  • 版本履历段的收尾句多了个尾部括号,导致三条历史判据长期红,已修正。

📦 版本

  • versionName:2.4.2(2.4.1 → 2.4.2,本版升语义版本号)
  • versionCode:1043
  • 索引 schema 4 → 5,但升级不会清空缓存(只清理被错标的条目)
  • 无清单 / 组件变更,可直接覆盖安装

Assets

1

10/21/2026, 4:13:58 AM

🔧 修复

1. 特典 / bonus 音轨预取不到字幕

预取字幕路径改为按宿主算法从 audio.vtt 推导完整相对路径
optimized/ + vttPath.replaceFirst("vtt", "json"),支持 04_omake/ 等子目录,
不再只取 vtt.optimized.name 导致 404。

2. 无字幕轨误配别的轨字幕

预取池 take 必须带当前作品键,且命中轨的作品键必须严格相等;
同一时长存在「明确无字幕」的轨时直接放弃命中。无字幕作品也会写入索引
(只有 N 行),重启后负证据仍在。

3. 激活状态误报

设置页不再把「本会话曾经授权」和「历史上曾经授权」两个记忆位混进判据;
LSPosed 未启用 / 宿主作用域未勾选时,状态卡正确显示未激活。

4. 新下载作品已预取,关代理后仍无字幕

没有作品键时允许「全池同一时长只对应一个作品键」的受限推断;
裁决窗到点后先磁盘缓存、再预取池(代理断开但 Wi-Fi 还在时也生效)。

5. 首次从预取池加载字幕要等 15 秒

现在把「预取池已有本轨 JSON」纳入分级,预取就绪时走标准窗 1000ms;
云端优先不变,晚到的云端 JSON 仍会覆盖。

📦 版本

  • versionName:2.4.1
  • versionCode:1040
  • 索引 schema 仍为 4 ⇒ 升级后缓存不清零;无清单 / 组件变更,可直接覆盖安装。

Assets

1

10/20/2026, 3:08:04 AM

⭐ 新增功能

1. 重做设置页

  • 字幕外观三张卡合成一张,卡内按 字幕 / 行态 / 排版 三个页签切换 —— 切页签只改可见性,不重建控件、不丢未保存的改动。
  • 底部保存栏悬浮常驻并显示「有 N 处未保存」;保存后可在提示条上一键撤销上一次保存;有未保存改动时退出会二次确认。
  • 三个页签各有自己的「恢复字幕颜色 / 行态 / 排版默认设置」,只重置本页签内的设置项。
  • 主字幕颜色 / 阴影颜色 / 悬浮窗颜色三处色板各保留 6 色(白、黑、绿、橙、青、紫),旧配置里选过的红/蓝不会被清空,仍按原色显示。
  • 新增 「隐藏桌面图标」 开关(默认关)。开启后桌面图标立即消失、设置页不受影响,之后仍可从 LSPosed 模块列表打开;不支持的机型会自动恢复显示并提示。
  • 预览窗几何重算:迷你状态折叠成三行、长字幕与自动换行按真实排版渲染。

2. 新增单部作品字幕预取池

  • 在线打开一部作品的播放页时,顺手把该作品文件树里全部音轨的字幕提前抓到本地 —— 之后在这个作品里任意换轨立刻出字幕,不用等云端那份 JSON。
  • 预存上限 16 部,超出按最早预取的作品整部淘汰;不占「字幕缓存」的 256MB 配额(两套独立计数与淘汰)。
  • 纯后台行为,不支持导出(规避版权风险)。

3. 适配体检

  • 状态卡显示宿主版本;六条链路(网络抓取 / 字幕解析 / 播放器进度 / 视图锚点 / 缓存 / 状态栏通道)的自检结果加入日志。

4. 平台升级

  • targetSdk / compileSdk 34 → 36(Android 16)并接上 edge-to-edge 的 insets;组件库升到官方最新 M3E;签名补齐 v1 / v2 / v3 三档。

🔧 修复与收敛

1. 日志降噪

  • 不打开调试开关时,常开日志只留挂载与一次性探针、换轨结论、全部失败与告警、用户主动操作,以及行一致观测的每分钟一行汇总 —— 正常看一集不再刷满屏。

📃 补充说明文档

  • 字幕缓存 / 预取 / 命中 / 上屏行一致这几行读数各是什么口径、什么时候归零、最容易被误读成什么,见 docs/字幕缓存读数说明.md。

安装提示

  • 包名不变(io.github.ariinyume.dlsitesoundfloat),可直接覆盖安装;缓存索引格式未变(INDEX_SCHEMA 仍为 4),升级后缓存不会被清空。
  • 装完在 LSPosed 日志里确认 ==== BUILD 2.4.0 / code 1037 那一行;作用域仍要勾 jp.co.eisys.dlsitesound + com.android.systemui 两个。

完整改动逐条见 CHANGELOG.md。

Assets

1

10/16/2026, 1:49:41 AM

🔧 修复

1. 关掉代理后切换音轨,本地字幕拉不起来

  • 查缓存只认「身份键」(作品 + 音轨身份);身份未知时按「找不到就放弃」处理(宁可空白,不冒险命中)。
  • 「作品键」降级为只作取证,写进日志但不再参与判定。
  • 同轨重写找「前身」改为按文件名识别,不再误摘其它音轨的条目。

2. 没有缓存的音轨显示了别的音轨的字幕

  • 去掉弱键兜底,不再有「selection-only 命中」这条路径。
  • 时间轴匹配补上反向校验:缓存条目自记的时长必须与本次请求的时长一致(此前只单向校验)。

3. 缓存格式升级

  • 索引结构由 INDEX_SCHEMA 3 升到 4;升级后本机字幕缓存会整批作废重建一次(见下方升级须知)。

⚡ 调整

「等官方字幕」的窗口由 3 秒收到 1 秒

  • 换轨后数据层先挂起、等宿主自己取回的云端字幕 JSON;窗口到点仍没等到,才回退本地磁盘缓存。
  • 不受影响的两条路径:① 盘上没有本轨缓存时走的 15 秒长窗(那条路没有本地可退,多等是对的);
    ② 完全离线(飞行模式)时直读本地。
  • 不是「本地优先」:1 秒后取本地只是「等不到就早取」,云端 JSON 到了照旧整份替换。

⚠️ 升级须知

  1. versionCode 由 1019 升到 1021:要求已装版本的 code 严格小于 1021。
    若之前装过更高 code 的包,请先卸载再装(卸载后 LSPosed 作用域需要重新勾选)。
  2. 装完请重启 SystemUI(或重启手机)。
  3. 字幕缓存会「清零」一次:本版 INDEX_SCHEMA 升到 4,旧缓存整批作废重建 ——
    设置页的占用读数会归零,把作品重新播一遍就会回来。
  4. 本地缓存字幕功能未经过长时间测试验证,不建议过于依赖该功能。

📦 产物

DLsiteFloat-2.3.3-code1021-debug.apk — 5,618,864 B
sha256 ca94d9ea6151f1bc10ca1eaed4f9a19a8b7c715b320fdafeb5e846628ea769e2
包名 io.github.ariinyume.dlsitesoundfloat;versionName 2.3.3;versionCode 1021

Assets

1

10/14/2026, 9:18:58 AM

✨ 新功能

实验性功能卡

设置页新增一张默认隐藏的卡片,用于收纳还在验证中的能力。

  • 解锁方式:在设置页连续点击「状态卡」五次(相邻两次间隔不超过 3 秒)。
  • 卡内总开关:关闭时其下子功能全部关闭、开关置灰,并清除相关缓存。
  • 卡内字幕缓存:查看占用读数、一键清除。

⚠️ 因为是默认关闭,升级到本版后字幕缓存会被自动关掉。要用的话请先按上面的方式解锁卡片、再把总闸打开。

字幕离线缓存

在线播放过的音轨,其字幕会自动缓存到本机 —— 之后断网 / 飞行模式 / 不挂代理时照常显示。

  • 只对「已经播过」的音轨生效;从没在线抓到过字幕的音轨,离线时仍然没有字幕。
  • 缓存只保存官方下发的那份字幕文本(按音轨存),不涉及任何音频内容。
  • 按「作品 + 音轨身份」存,换章节 / 换音轨 / 播放列表重建都不会串轨。
  • 超出储存上限后,按最早缓存顺序自动清除。
  • 云端优先、本地兜底:换轨后先等云端那份最新字幕,窗口内等不到(无网络 / 云端慢)才回退到本地已缓存的那份。

🔧 修复

  • 换作品 / 换章节时的短暂「无字幕」。
  • 快速换轨时字幕被标到别的音轨:落盘轨标签改用「字幕 JSON 到达那一刻的印章」,兜底读盘改用「本次换轨的目标键」。

♻️ 架构与内部整理

  • 播放页检测的两道前置闸抽成零状态纯判定层(DetectGatePolicy)。
  • 切断 util 包对数据层的反向依赖(新增 LineSource 接口 + AppEnv,5 处调用点零改动)。
  • 三处自绘视图的 dp 换算合并归口到 Utils.dip2pxF。

❌ 已知问题

  • 磁盘缓存的索引依旧有问题,每个作品第一轨 / 未缓存字幕的音轨会有串轨的情况,下版本修复。

📦 产物

DLsiteFloat-2.3.2-code1019-debug.apk — 5,616,276 B
sha256 c834bb9ba0c3d00e8c91a70f2d4af64af1f367956bfa2d667b5247ee6429e85c
包名 io.github.ariinyume.dlsitesoundfloat;versionName 2.3.2;versionCode 1019

Assets

1

10/10/2026, 5:09:49 PM

🐞 本版修了什么

1. 修复 打开(未缓存)音轨时插件无法读取到字幕

  • 新增早就能读到的「选择键」(曲目数 + 序号),不依赖时长;新轨字幕落下时同步盖章,换轨通知到达即可直接认领,不等 App 重发。
  • 新增「列表重建窗口」:旧列表消失到新列表可读之间返回的字幕 JSON,只可能属于重建后的新列表;窗口内到达即认领(两道保险:目标列表必须换了、且未超 15 秒)。
  • 更换能正面指认归属的证据 :字幕请求地址里的作品路径。同时把窗口起点改为按播放实例记账的真边沿、终点改由带时长的完整读数负责。

📖 版本信息

安装包:DLsiteFloat-2.3.1-code1006-debug.apk
版本:versionName 2.3.1 / versionCode 1006(label 1008.25)
sha256:a3e5c48c87a71f8c7ed2ec5ea7053c2e4681722ead1f363674814a37e59f0136

Assets

1

10/10/2026, 8:15:35 AM

本版把「液态玻璃」从实验档推成完整可调项。


🐞 本版修了什么

1. 增加 悬浮窗液体玻璃模式

  • 新增独立调节卡片 「液态玻璃效果调整」,摆在「其他」卡之前,顺序如下:液态玻璃(总开关)、环境背景亮度(霜面亮度来源)、通透度、明暗度、模糊强度、恢复液态玻璃默认设置;
  • 重写docs/液态玻璃实现与可调参数.md :新增「四个滑条的数值范围」与「参数之间的计算关系」(合成公式两步推导、默认档逐步实算、可压上限速查表、四个旋钮不正交的物理原因)。

2. 修复 偶发保存设置重启后新配置不生效


📖 版本信息

安装包:DLsiteFloat-2.3.0-code1003-debug.apk
版本:versionName 2.3.0 / versionCode 1003(label 1008.24)
sha256:a2013a6a6ee4783f3de1c9ba838447853e49e9ef184d5c0cc556c1fdb1e2abf8

Assets

1

10/7/2026, 3:24:23 PM

主要进行了换轨残留的根治,外加设置页观感打磨、模块激活探测修正和新的「调试日志」开关。


🐞 本版修了什么

1. 修复 换轨字幕残留

成功加载的 cues 盖一个归属印章(按播放列表身份),切回来时身份对得上就直接按当前进度恢复渲染。同时放行被 20s 静默窗挡掉的「用户切回去」这一次换轨,并让静默窗失效,避免紧接着的反向再被静默。

2. 优化 设置页UI

  • 新增「调试日志」开关(默认关):频率较高,长时间开着会淹没有用日志。现在默认只留里程碑日志(钩子挂载、种基线、真正的换轨上报 >>> track changed)与全部 WARN;排查时在设置页「其他」里打开即可。
  • 模块「未激活」误判修复:跨进程探测改为显式广播(setPackage)并重发,不再把「DLsiteSound 当前没在跑」误判成未授权。
  • 设置页观感优化:依据 MD3 设计语言完善控件呈现。

📖 版本信息

安装包:DLsiteFloat-2.2.8-code980-debug.apk
版本:versionName 2.2.8 / versionCode 980(label 1007.8)

Assets

1

10/6/2026, 7:00:34 AM

请务必升级!宿主 DLsiteSound 2.20.2 上,2.1.3 及更早版本会显示「无字幕」(R8 混淆导致采集点失效)


🐞 本版修了什么(v2.1.3 → v2.2.0)

1. 兼容 DLsitesound 2.20.2

三个采集点改为按签名形状定位,不硬编码混淆名 —— 每次发版重新生成 R8 映射表也不会失效(后续有问题再修)。

2. 修复 状态栏字幕行最后一个字为汉字时只出现一半

发现吸附只往右取「不小于终点的那个字起点」,修改方式为允许的裁切上限收紧到 4px。

3. 上线可视化设置页

基础字幕设置功能实测已跑通,UI还没修完。(因DLsitesound 2.20.2 版本更新而紧急发版,可恶捏)。


📖 版本信息

安装包:DLsiteFloat-2.2.0-code972-debug.apk
版本:versionName 2.2.0 / versionCode 972(label 1006.10)

Assets

1

9/30/2026, 11:49:38 AM

🐞 本版修了什么(v2.1.2 → v2.1.3)

1. 修复「换轨瞬间字幕突然跳成『无字幕』、悬浮窗跟着被关掉」

  • 等待判定窗 10s → 15s(冷请求实测尾部会拖到 15.6s)
  • 手上一片空白时(确实没字幕的作品)行为与旧版完全一致:照旧清空 + 关窗

2. 修复「进播放页时按钮上下小抖一下」

把快照门改成 12px 迟滞,并把两个写同一份布局参数的入口统一到同一口径(原先一个是 6px、一个是严格相等,两头都拦不住)。12px 大于 settle 抖动实测幅度,又远小于滚动跟手的真实位移(Δ444px),跟手不受影响。

3. 修复「拖动右下角手柄缩放悬浮窗时,字幕上下抖动」

把重新居中搬进「同一趟布局之后、绘制之前」的 preDraw 回调里,让「重排 → 算落点 → 绘制」落在同一帧;原来那个下一帧的任务只留作兜底(已被本帧消费时自动空转)。

4. 其它

  • 悬浮窗手势被系统打断时(ACTION_CANCEL)补一行诊断日志,方便下次取证。
  • 已实测 ColorOS 17 本插件可正常使用。

📖 版本信息

安装包:DLsiteFloat-2.1.3-code958-debug.apk
版本:versionName 2.1.3 / versionCode 958(label 0930.4)

Assets

1

9/25/2026, 2:04:09 AM

变更内容(v2.0.3 → v2.1.0)

  • 包名变更:com.sena.dlsitesoundfloat → io.github.ariinyume.dlsitesoundfloat
    • 为满足 LSPosed 官方模块仓库上架要求
    • namespace、applicationId、入口类全名、跨进程广播 action 前缀同步更新
  • versionCode 949 → 950,versionName 2.0.3 → 2.1.0

延续自 v2.0.3 的能力

  • 修复「点作品大标题回作品主页时,悬浮窗/状态栏按钮比播放页晚消失」的延迟问题。
    • 为「锚点面积归零」单开最短确认档(120ms),与拖动场景的 600ms 默认档分离
    • 归零档取消采样门槛(need=0 + needSamples=1),首次检测即收起
    • 补前置门 ANCHOR_DEAD_GONE_STILL_MS=80ms:页面须已静止才收起,避免误收

Assets

1

9/26/2026, 8:48:36 AM

🐞 本版修了什么(v2.1.0 → v2.1.2)

1. 修复「按钮偶尔会出现在非播放页」

新建按钮不再用「上次结论」预判可见性 —— 一律先 GONE,把「该不该显示」完全交给紧随其后的检测;配套让 addView 触发的首帧扫描不被 150ms 节流吃掉。

2. 修复「播放页上按钮每 ~700ms 闪一次」

「整棵树扫成空」的那一趟扫描不再当作「已离开播放页」的证据。改为 60ms 后强制补一趟快检再判:真离场只晚 60ms,退化测量则被发现、不再误收。

3. 修复「偶发按键出现的位置高度变化」

新增三道闸(「页面最近没动过」接到位移时间轴 / 候选位置连续稳住 400ms / 偏置量级闸 64dp)+ stale bias healed 自愈。

4. 🆕 多语言支持

支持 简体中文 / 繁体中文 / 英文 文字显示。语言判定走系统配置,进程内只判一次。

5. 锁死按钮大小与文字大小

现在胶囊的宽高、圆角、文字、各段偏移都只按「首次锁定的密度」计算,此后无论后端怎么重锁、或用户改系统「显示大小」,都不再变;文字改为固定 px 并按胶囊可用宽度自动适配。

6. 其它调整

  • 单个胶囊宽 75dp → 85dp(给英文版本留宽)。
  • 切到无字幕音轨后,悬浮窗挂着「无字幕」占位的时长 4s → 5s,延迟网络加载速度不佳时窗口自动关闭的时间。

📖 版本信息

安装包:DLsiteFloat-2.1.2-debug.apk
版本:versionName 2.1.2 / versionCode 954(label 0926.3)

Assets

1