这个项目是什么
BarrageView 是一个用来做弹幕、滚屏效果的自定义 View,适合直播、视频播放器、活动页这类需要在画面上滚动一排排文字的场合。README 很短,项目本身也只做一件事:让文字从屏幕一侧滚到另一侧,并且滚得自然一点。
实现要点
README 列出的特性有五条:
- 字体大小在一个范围内随机
- 颜色随机
- 滚动速度在一个范围内随机
- 支持点击回调
- 隐藏后恢复不会有停滞
前三条是为了让弹幕看起来不那么整齐。如果每条弹幕字号、颜色、速度都一样,视觉上会排成规整的队列,反而像列表在滚动。把这三个参数都做成范围内的随机值,弹幕之间自然错开,也更接近真实弹幕池的效果。
点击回调意味着 View 需要判断点击落在哪一条弹幕上,而不是把整个区域的点击都交给同一个处理者。滚动中的文字位置一直在变,命中判断得跟着每一条的当前位置走。
「隐藏后恢复不会有停滞」是滚动类 View 常见的坑。View 被切到后台或者从窗口移除后再回来,如果位置按帧累加,恢复时容易出现时间对不上、弹幕挤成一团或者突然跳一大段的情况。README 把这一点单独列出来,说明作者专门处理过。
使用方法
README 没有贴接入代码,集成方式就是普通自定义 View 的流程:把 BarrageView 放进布局,在代码里设置弹幕内容和滚动参数,需要响应点击时注册点击回调,具体方法名以仓库源码为准。仓库里的 test.gif 是效果演示,接入前可以先看一眼实际滚动效果是否符合预期。
踩坑与思考
README 没有写限制和注意事项。从随机化这个设计出发,实际使用时最好给字号、速度和颜色都定一个合理区间:跨度太小看不出随机,跨度太大又会显得杂乱,而且速度快的弹幕如果字号也大,很容易盖住别的弹幕。另外弹幕数量多时要注意绘制开销,这一点和所有自绘 View 一样。