关于安卓接入B站弹幕控件

源代码 2024-9-14 08:00:05 49 0 来自 中国
环境:
as 4.4.2
jdk 1.8


注意!!源码在文末!!



弹幕github官方所在所在



实现场景

通过弹幕与时间关联,实现视频弹幕的播放,滚动进度的时间,弹幕不举行清屏利用
实今世码

对于底子实现,这里没有须要细说,简朴就是初始化了干系弹幕对象,然后通过动态添加弹幕, 即可实现。
初始化代码如下:
mDanMuParser = BiliDanmakuParser.createParser(null);        HashMap<Integer, Integer> maxLinesPair = new HashMap<Integer, Integer>();        //滚动弹幕最大表现3行        maxLinesPair.put(BaseDanmaku.TYPE_SCROLL_RL, 3);        HashMap<Integer, Boolean> overlappingEnablePair = new HashMap<Integer, Boolean>();        overlappingEnablePair.put(BaseDanmaku.TYPE_SCROLL_RL, false);        overlappingEnablePair.put(BaseDanmaku.TYPE_FIX_TOP, false);        mDanMuContext = DanmakuContext.create();        try {            Display display = ((Activity) getContext()).getWindow().getWindowManager().getDefaultDisplay();            float refreshRate = display.getRefreshRate();            int rate = (int) (1000 / refreshRate);            mDanMuContext.setFrameUpateRate(rate);            Log.d(TAG, mIdentify + "rate: " + rate);        } catch (Exception e) {            e.printStackTrace();            Log.d(TAG, mIdentify + "rate error");        }        mDanMuContext.setDanmakuStyle(IDisplayer.DANMAKU_STYLE_STROKEN, 3)                .setDuplicateMergingEnabled(false)//                .setScrollSpeedFactor(1.2f)                .setScaleTextSize(1.2f)                //绘制配景利用BackgroundCacheStuffer                .setCacheStuffer(new BackgroundCacheStuffer(), null)                .setMaximumLines(maxLinesPair)                .preventOverlapping(overlappingEnablePair)                .setDanmakuMargin(40);        prepare(mDanMuParser, mDanMuContext);        showFPS(false);        enableDanmakuDrawingCache(true);弹幕发送代码如下:
            danMuKu.text = bulletInfo.getContent();            danMuKu.padding = 5;            //大概会被各种过滤器过滤并埋伏表现            danMuKu.priority = 1;            danMuKu.isLive = false;            if (rightNow) {                danMuKu.setTime(getCurrentTime() + (new Random().nextInt(10)) + DELAY_TIME);            } else {                danMuKu.setTime(getCurrentTime() + bulletInfo.getBeforeInterval() + DELAY_TIME);            }            danMuKu.textSize = bulletInfo.getTextSize() * (mDanMuParser.getDisplayer().getDensity() - 0.6f);            danMuKu.textColor = Color.WHITE;            danMuKu.textShadowColor = Color.BLACK;            danMuKu.setTag(TAG_KEY, bulletInfo);            addDanmaku(danMuKu);注意要点

1、弹幕实现的过程中,操持到高帧率闪屏标题,请看以下链接
链接。
2、弹幕利用过程中,若存在卡顿,则可以选择继承自surfaceview的基类试试。
3、recyclerview利用的过程中,要联合adapter的生命周期举行弹幕设置参数的初始化。
最后附上代码所在,库名字libbilibilidfm链接
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-24 07:13, Processed in 0.167362 second(s), 33 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表