鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)

鴻蒙入門指南,小白速來!0基礎學習路線分享,高效學習方法,重點答疑解惑—>【課程入口】

目錄:

一、彈幕庫的基礎知識

二、彈幕庫的使用方法

三、sample解析

四、作者系列文章合集

前言

         基於github上嗶哩嗶哩開源項目(//github.com/bilibili/DanmakuFlameMaster),進行了鴻蒙化遷移和重構,可實現彈幕的隱藏、顯示、暫停、繼續、發送、定時發送彈幕等一系列的功能,代碼已經開源到(//gitee.com/isrc_ohos/danmaku-flame-master_ohos ),歡迎各位下載使用並提出寶貴意見!

       為了更加清晰的介紹彈幕庫的作用和使用方法,本文將從基礎知識、使用方法、 sample解析三個方面進行講解。

鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)

 

一、彈幕庫的基礎知識

      彈幕庫是一個開源的三方庫,在正式講解彈幕庫的使用之前,我們先來了解下第三方庫的含義。

      第三方庫是指除本地類庫、系統類庫以外的類庫,需要後來安裝,才能調取使用。 簡單來講,相當於其他人寫好了代碼,實現了一些功能接口,我們直接調用這些接口,就可以實現一些我們想要的功能。舉個例子:在一個應用中實現視頻緩存功能(斷網後可繼續播放提前緩存的內容),如果想要自己實現的話,需要調用鴻蒙/安卓底層的方法,代碼量非常大。如果已經有第三方庫可以做到這點,並且開源了出來,那麼你只需要引用他的第三方庫,然後調用此庫內公開的一些方法接口,簡簡單單的幾行代碼就可以實現緩存功能。

      了解了什麼是第三方庫,現在我們來看彈幕庫組件。 看視頻時,彈幕是必不可少的互動功能,這個功能就是調用了彈幕庫組件來實現的。現在我們已經實現了彈幕庫功能在鴻蒙平台的構建,接下來我們一起深入了解下鴻蒙平台的彈幕庫吧!

 

二、彈幕庫的使用方法

       關於彈幕庫第三方組件的使用方法,我們準備了視頻教學,大家可以下載使用哦~

       視頻教學版鏈接://www.bilibili.com/video/BV1Dy4y1i7cG/

 

三、sample解析

       導入彈幕庫組件後,其整個項目的文件結構如下:

鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)

        整個項目有2個module:entry和DanmakuFlameMaster。

        在這裡大家可以簡單的理解:

           ==》  「DanmakuFlameMaster」就是之前提到的【第三方庫】,它裏面實現了彈幕功能的 所有細節。

           ==》    entry就是一個具體的「客戶端」module,它聲明了在鴻蒙程序中的所有運行細節。

           ==》   最後跑起來的程序就是entry,entry裏面實現了所有功能,包括界面、按鈕、功能等等,只不過entry調用了第三方庫「DanmakuFlameMaster」,使用                           了它的能力來實現了一些彈幕相關的功能。

 

      本篇文章主要介紹如何在已經構建好了「DanmakuFlameMaster」這個第三方庫的基礎上,來進行「entry」的開發。

     為了節省篇幅,此處我們使用一個已經開發完成了的sample,接下來以這個sample為例,向大家講解彈幕庫組件的應用及效果。

鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)

      將entry展開之後,我們可以看到,真正的代碼是真的很少,主要的功能都集中在MainAbility和MainAbilitySlice文件中,加起來的代碼量也就不到1000行。

      接下面我們對這兩個文件進行逐個解析。

       1、MainAbility,它是一切應用的入口。鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)根據鴻蒙能力,這裡是可以通過setMainRoute()方法調用很多的Slice來進行功能的實現,上圖標記的代碼就是聲明了MainRoute在MainAbilitySlice之中。

 

2、MainAbilitySlice,這個文件比較重要。

這個文件主要包括:import文件、初始化函數、功能實現函數三個部分。

(1)、import 文件

        此處import的文件可以分為三類:SDK文件、應用內文件和三方件文件。

        == 》 SDK文件: import後路徑為ohos…..的。

        == 》應用內文件:import後路徑為com.huawei……的。

        == 》三方庫文件:import後路徑為master.flame.danmuku……的。鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)

 (2)、初始化函數:鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)

        如圖所示,初始化函數一共包含六個,我們將其分為五個部分,這五個部分與圖中函數的順序對應如下:UI初始化、視頻源的設置與播放(2個函數)、輸出系統內存信息、設置數據源(這裡的數據指的是彈幕數據)以及彈幕輸出。這五個部分之中,我們主要講解其中的與彈幕庫密切相關的部分:UI初始化、彈幕數據源與彈幕輸出。

        1)onStart方法實現了UI初始化鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)

        以上代碼構建了彈幕庫的顯示窗口 設置了屏幕參數的讀取 。

 

      2)彈幕數據源和最終的彈幕輸出

       這兩個部分有強相關,我們放在一起來介紹。鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)
        第一步:聲明全局變量 mParser用來承載彈幕數據。鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)

          第二步:在加載數據源處調用了我們的第三方庫的BiliDanmukuParser類,然後從我們的resources中讀取彈幕數據:鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)
        可以看到在datasource其實就是讀取了這裡的文件,大家可以自己點進去看一下這個文件內容,裏面就是我們的「彈幕數據庫」。鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)

        第三步:將載入了彈幕的BaseDanmakuParser類對象,return給全局變量mParser(如果大家想找到這部分代碼的話,可以到findview()中去尋找)。

 

3、功能實現函數鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)

         在UI上可見的一些按鈕,每個按鈕都對應一個callback函數,點擊按鈕,執行對應的函數體,實現相關功能。鴻蒙開源第三方組件 ——B站開源彈幕庫引擎的遷移(上)

          上圖所示為點擊不同的按鈕,出現不同的彈幕效果,例如:隱藏彈幕、顯示彈幕、暫停彈幕等。

項目貢獻人
熊軼翔 鄭森文 朱偉  陳美汝 呂澤

 

作者:小雪糕123

 

想了解更多內容,請訪問: 51CTO和華為官方戰略合作共建的鴻蒙技術社區//harmonyos.51cto.com

 

Tags: