android直播弹幕开发,Android上专为视屏直播打造的轻量级弹幕库(100多kb)

DanmukuLight

Android上专为视频直播打造的轻量级弹幕库(100多kb)

demo运行后的效果如下:

625332134c6f4d4600884b99daebf603.png

目前支持以下需求

继承自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中添加

android:id="@+id/danmaku_container_broadcast"

android:layout_width="match_parent"

android:layout_height="80dp"/>

注:每条弹道的高度目前为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

android:id="@+id/dpv_broadcast"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="30dp">

android:id="@+id/danmaku_container_broadcast"

android:layout_width="match_parent"

android:layout_height="80dp"/>

在构建弹幕对象的代码中添加

danMuView.enableTouch(true);

danMuView.setOnTouchCallBackListener(new OnDanMuTouchCallBackListener() {

@Override

public void callBack(DanMuModel danMuView) {

}

});

在使用过程中有遇到bug,欢迎提issuse ! 若你觉得还不错,请点Star, 谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值