EasyDanmaku 更新了!
更新時間:2021年12月20日
Github地址:https://github.com/LittleFogCat/EasyDanmaku
歡迎star。
歡迎提issue!歡迎提issue!歡迎提issue!
針對反饋得到的信息,0.1.x版本存在卡頓的情況,于是重新設(shè)計實現(xiàn)了本庫。新版本為0.2.x,采用kotlin編寫,基于Easy Surface UI System。
經(jīng)測試,在開啟字幕描邊的情況下,0.2.0版本在模擬器上能同屏顯示500條彈幕而保持滿幀率;在真機(jī)小米mix2上,同屏顯示約1300+條彈幕(不描邊則為2500+條)時,開始出現(xiàn)丟幀。
README
0. EasyDanmaku
一個方便簡單的Android彈幕控件,顧名思義so easy。
注意! 這個庫尚未完善,僅供共同學(xué)習(xí)進(jìn)步,勿要用在正式項目!


1. 用法
1.1 在布局中引入一個DanmakuView
<top.littlefogcat.easydanmaku.ui.DanmakuView
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
1.2 設(shè)置數(shù)據(jù)
val danmakuView: DanmakuView = findView()
val danmakus: Collection<DanmakuItem> = getDanmakus()
danmakuView.setDanmakus(danmakus)
1.3 通過設(shè)置時間更新彈幕
DanmakuView使用子線程繪制,根據(jù)時間確定當(dāng)前彈幕。在設(shè)置彈幕數(shù)據(jù)之后,只需設(shè)置時間即可刷新界面。
通過setActionOnFrame設(shè)置每一幀的動作,在其中更新時間,即可刷新界面。當(dāng)然,自定義Timer固定時間刷新也是可以的。
// 使用setActionOnFrame刷新界面
danmakuView.setActionOnFrame {
val progress = getVideoProgress() // 獲取播放進(jìn)度
danmakuView.time = progress
}
// 或者使用Timer
timer(initialDelay = 0L, period = 16L) {
val progress = getVideoProgress()
danmakuView.time = progress
}
就是這么easy
2. Change log
EasyDanmaku v0.2.0 - 2021.12.20
- 使用kotlin全部重寫;
- 使用SurfaceView重新實現(xiàn);
EasyDanmaku v0.1.3
- 優(yōu)化DanmakuView緩存復(fù)用的機(jī)制;
EasyDanmaku v0.1.2
- 添加了橫豎屏切換的顯示;
- 修復(fù)了可能導(dǎo)致顯示異常的bug;
EasyDanmaku v0.1.1
- 修改了字體大小的設(shè)置方式;
- 其他的一些優(yōu)化。
EasyDanmaku v0.1.0
- 重寫了DanmakuView。
- 優(yōu)化結(jié)構(gòu),去除冗余類。
- 修復(fù)彈幕過長導(dǎo)致顯示內(nèi)容不完整的問題。
- 加入頂部和底部彈幕。
EasyDanmaku v0.0.0
一個方便的Android彈幕控件~
顧名思義,實現(xiàn)起來easy,用起來也easy,(功能也很easy)代碼很少,就幾個文件,直接復(fù)制進(jìn)項目里去吧!