仿B站彈幕,極簡Android開源彈幕控件:EasyDanmaku

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)步,勿要用在正式項目!

easydanmaku

easydanmaku

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)項目里去吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容