DanmukuLight
项目地址: hpdx/DanmukuLight

简介:Android 上专为视屏直播打造的轻量级弹幕库(100 多 kb)
更多: 作者 提 Bug 示例 APK
标签:
视屏直播弹幕-
Android 上专为视频直播打造的轻量级弹幕库(100 多 kb)
demo 运行后的效果如下:
下载示例 Apk
目前支持以下需求- 继承自 View 实现的 DanMuView(直播间的弹幕,推荐使用这种)
- 继承自 SurfaceView 实现的 DanMuView
- 支持显示富文本内容
- 支持弹幕单击事件的处理
在 Module 中的 build.gradle 文件里,添加以下依赖:
allprojects { repositories { jcenter() mavenCentral() // 切记要添加这个 maven { url 'https://dl.bintray.com/hpdx/maven/' } } } compile 'com.anbetter:danmukulight:1.0.1'
在 xml 中添加
注:每条弹道的高度目前为 40dp
启动弹幕引擎
mDanMuContainerBroadcast = (DanMuView) findViewById(R.id.danmaku_container_broadcast); mDanMuContainerBroadcast.prepare();
创建弹幕对象
DanMuModel danMuView = new DanMuModel(); danMuView.setDisplayType(DanMuModel.RIGHT_TO_LEFT); danMuView.setPriority(DanMuModel.NORMAL); danMuView.marginLeft = DimensionUtil.dpToPx(mContext, 30); // 显示的文本内容 danMuView.textSize = DimensionUtil.spToPx(mContext, 14); danMuView.textColor = ContextCompat.getColor(mContext, R.color.light_green); danMuView.textMarginLeft = DimensionUtil.dpToPx(mContext, 5); if (entity.getRichText() != null) { danMuView.text = RichTextParse.parse(mContext, entity.getRichText(), DimensionUtil.spToPx(mContext, 18), false); } else { danMuView.text = entity.getText(); } // 弹幕文本背景 danMuView.textBackground = ContextCompat.getDrawable(mContext, R.drawable.corners_danmu); danMuView.textBackgroundMarginLeft = DimensionUtil.dpToPx(mContext, 15); danMuView.textBackgroundPaddingTop = DimensionUtil.dpToPx(mContext, 3); danMuView.textBackgroundPaddingBottom = DimensionUtil.dpToPx(mContext, 3); danMuView.textBackgroundPaddingRight = DimensionUtil.dpToPx(mContext, 15);
将弹幕添加到弹道上
mDanMuContainerBroadcast.add(danMuView);
OK 了,就这么简单,一条弹幕就发送成功了
隐藏或者显示弹幕
mDanMuContainerBroadcast.hideAllDanMuView(hide); // boolean对了,若要弹幕是能响应单击事件,需要添加如下处理:
在 xml 中添加 DanMuParentView
在构建弹幕对象的代码中添加
danMuView.enableTouch(true); danMuView.setOnTouchCallBackListener(new OnDanMuTouchCallBackListener() { @Override public void callBack(DanMuModel danMuView) { } });