当前位置:   article > 正文

Android开源弹幕引擎DanmakuFlameMaster源码解析_master.flame.danmaku

master.flame.danmaku

最近项目中需要添加弹幕功能,就用了B站的开源框架DanmakuFlameMaster。用法比较简单,创建一个Parser添加数据源,prepare然后start就可以了。然而会用并不够,由于比较好奇弹幕是怎么动起来的,就着重看了下这一部分的代码。至于缓存以及其他的源码暂时并没有研究。

先从prepare开始看

   @Override
    public void prepare(BaseDanmakuParser parser, DanmakuContext config) {
        prepare();
        handler.setConfig(config);
        handler.setParser(parser);
        handler.setCallback(mCallback);
        handler.prepare();
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

先调用自己的prepare

   private void prepare() {
     if (handler == null)
         handler = new DrawHandler(getLooper(mDrawingThreadType), this,mDanmakuVisible);
    }
  • 1
  • 2
  • 3
  • 4

创建了一个DrawHandler,这个Handler获取新创建的HandlerThread的Looper,用来执行handlerMessage在子线程,所以不能再prepare的回调里更新UI。

而handler的prepare会走DanmakuView的回调

            mDanmakuView.setCallback(new master.flame.danmaku.controller.DrawHandler.Callback() {
                @Override
                public void updateTimer(DanmakuTimer timer) {
                }

                @Override
                public void drawingFinished() {

                }

                @Override
                public void danmakuShown(BaseDanmaku danmaku) {

                }

                @Override
                public void prepared() {
                    //执行在子线程里
                    mDanmakuView.start();
                }
            });<
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/221620
推荐阅读
相关标签
  

闽ICP备14008679号