环境:
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链接 |