简单的弹幕效果

一、依赖

  implementation 'com.github.ctiao:DanmakuFlameMaster:0.7.3'//弹幕库依赖

二、使用步骤

1.xml

代码如下(示例):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#DDCACA"tools:context=".DanMuActivity"><master.flame.danmaku.ui.widget.DanmakuViewandroid:id="@+id/danmu_view"android:layout_width="match_parent"android:layout_height="match_parent" /><LinearLayoutandroid:id="@+id/operation_layout"android:layout_width="match_parent"android:layout_height="50dp"android:layout_alignParentBottom="true"android:background="#ffffff"android:visibility="gone"><EditTextandroid:id="@+id/edit_text"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:hint="评论" /><Buttonandroid:id="@+id/send"android:layout_width="wrap_content"android:layout_height="match_parent"android:text="发送" /></LinearLayout>
</RelativeLayout>

2.Ui

代码如下(示例):

public class DanMuActivity extends AppCompatActivity {private DanmakuView mDanmakuView;private LinearLayout mOperationLayout;private EditText mText;private Button send;private DanmakuContext danmakuContext;private final BaseDanmakuParser parser = new BaseDanmakuParser() {@Overrideprotected IDanmakus parse() {return new Danmakus();}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_dan_mu);initView();initDanmaku();}private void initView() {mDanmakuView = (DanmakuView) findViewById(R.id.danmu_view);mOperationLayout = (LinearLayout) findViewById(R.id.operation_layout);mText = (EditText) findViewById(R.id.edit_text);send = (Button) findViewById(R.id.send);mDanmakuView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (mOperationLayout.getVisibility() == View.GONE) {mOperationLayout.setVisibility(View.VISIBLE);} else {mOperationLayout.setVisibility(View.GONE);}}});send.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String data = mText.getText().toString();if (!TextUtils.isEmpty(data)) {addDanmaku(data);mText.setText("");}}});}/*** 初始化弹幕组件*/private void initDanmaku() {//给弹幕视图设置回调,在准备阶段获取弹幕信息并开始mDanmakuView.setCallback(new DrawHandler.Callback() {@Overridepublic void prepared() {mDanmakuView.start();}@Overridepublic void updateTimer(DanmakuTimer timer) {}@Overridepublic void danmakuShown(BaseDanmaku danmaku) {}@Overridepublic void drawingFinished() {}});//缓存,提升绘制效率mDanmakuView.enableDanmakuDrawingCache(true);//DanmakuContext主要用于弹幕样式的设置danmakuContext = DanmakuContext.create();
//        danmakuContext.setDanmakuStyle(IDisplayer.DANMAKU_STYLE_STROKEN, 3);//描边
//        danmakuContext.setDuplicateMergingEnabled(true);//重复合并
//        danmakuContext.setScrollSpeedFactor(1.2f);//弹幕滚动速度
//        //让弹幕进入准备状态,传入弹幕解析器和样式设置mDanmakuView.prepare(parser, danmakuContext);
//        //显示fps、时间等调试信息
//        mDanmakuView.showFPS(true);}/*** 向弹幕View中添加一条弹幕** @param content 弹幕的具体内容*/private void addDanmaku(String content) {//弹幕实例BaseDanmaku,传入参数是弹幕方向BaseDanmaku danmaku = danmakuContext.mDanmakuFactory.createDanmaku(BaseDanmaku.TYPE_SCROLL_RL);danmaku.text = content;danmaku.padding = 5;danmaku.textSize = 50;danmaku.textColor = Color.WHITE;danmaku.setTime(mDanmakuView.getCurrentTime());//加边框danmaku.borderColor = Color.GREEN;mDanmakuView.addDanmaku(danmaku);}
}

弹幕库 Danmuku依赖相关推荐

  1. Muti-Barrage 一个多功能的Android弹幕库

    前言 过去几个星期每天下班后除了看视频学习就是写弹幕库了,想法来源于去年看到QQ空间里面的支持弹幕的图片预览,心血来潮就想实现一个,最终完成了Muti-Barrage, 先看效果: 1. 单视图弹幕 ...

  2. iOS-FXDanmaku弹幕库介绍、相关技术分享

    前言 去年, 2016年, 一大波直播平台在移动端涌出, 直播慢慢步入了人们的视角. 网上如今能够看到各式各样的直播, 如秀场直播.游戏直播.体育直播.娱乐直播等等. 在各种类型的直播中, 弹幕在PC ...

  3. Ubuntu安装Ceres库-安装依赖时报错:E:无法定位软件包 libcxsparse3.1.2_朱国鑫的博客-CSDN博客

    Ubuntu安装Ceres库-安装依赖时报错:E:无法定位软件包 libcxsparse3.1.2_朱国鑫的博客-CSDN博客

  4. gradle 查看依赖类库版本_使用Gradle命令查看项目中库的依赖关系

    在Terminal中,可以通过 gradle 的命令查看项目中所使用库的版本,并且可以更加直观看到库之间的依赖关系.同时它们可以帮助您跟踪并解决与库版本冲突有关的任何问题.Building Andro ...

  5. 【杂谈】如何应对烦人的开源库版本依赖-做一个心平气和的程序员?

    平时做开发时最烦人的除了项目不会做,恐怕就是环境依赖的问题了吧. 一个好好的项目,换个环境总是出问题,开源库一升级就挂掉,总有"坏人"搞掉自己的系统库,今天就来随便聊聊吧. 作者 ...

  6. golang 标准库间依赖的可视化展示

    简介 国庆看完 << Go 语言圣经 >>,总想做点什么,来加深下印象.以可视化的方式展示 golang 标准库之间的依赖,可能是一个比较好的切入点.做之前,简单搜了下相关的内 ...

  7. skimage库需要依赖 numpy+mkl 和scipy

    skimage库需要依赖 numpy+mkl 和scipy 1.打开运行,输入cmd回车,输入python回车,查看python版本 2.在https://www.lfd.uci.edu/~gohlk ...

  8. mac上用qt调用自己生成的qt动态库,该动态库又依赖第三方库

    qt下依赖于第三方库生成的动态库的调用 概述 基于声网的sdk如何在自己的动态库中使用 使用基于第三方库的动态库 下面看pro文件中的设置 概述 初次使用mac上的qtCreator生成动态库,该动态 ...

  9. android将项目添加到github,将github库作为依赖添加到Android-Studio项目中

    将github库作为依赖添加到Android-Studio项目中 我试图从https://github.com/chrisbanes/ActionBar-PullToRefresh/wiki/Quic ...

  10. Windows下查看exe可执行程序或dll动态库所依赖dll动态库的方法

    Windows下查看exe可执行程序或dll动态库所依赖dll动态库的方法 如需转载请标明出处:http://blog.csdn.net/itas109 技术交流:129518033 文章目录 Win ...

最新文章

  1. 《LeetCode力扣练习》第94题 二叉树的中序遍历 Java
  2. linux添加vfat分区,浅析mkfs.vfat如何在arm开发板上创建fat32独立分区
  3. camvid数据集介绍_语义分割的数据集
  4. gRPC服务注册发现及负载均衡的实现方案与源码解析
  5. xmlhelper (把实体对象转成xml文档)
  6. 【前端】js代码模拟用户键盘鼠标输入
  7. 一年复一年,又单身到了光棍节
  8. 【ESP 保姆级教程】疯狂传感器篇 —— 案例:ESP8266 + 光敏光照传感器 + 串口输出
  9. GH4199变形合金
  10. 《初等数论及其应用》第三章 素数和最大公因子
  11. VueCLi跑项目时卡在98% after emitting CopyPlugin无法运行
  12. Mac删除文件提示“不能删除xx项目,正在使用中”
  13. 计算机文档里的圆圈,电脑怎么打出圆圈符号?利用word或者输入法打出圆圈的方法介绍...
  14. 公钥基础设施 (Public-key infrastructure PKI)
  15. python telnet登录OLT查询
  16. 跨交换机实现VLAN 入门实验
  17. antd 表格树如何展开_antd design tree 怎样实现 :展开折叠全部树节点
  18. 华为系统取名鸿蒙,华为自主操作系统为何取名鸿蒙?看完西游记就知道霸气在哪里!...
  19. 【JavaSE】抽象类和接口
  20. proxychains代理扫描并获取内网服务器权限

热门文章

  1. html形状圆形,html – 使用CSS的圆形标记形状
  2. c 语言程序设计(清华大学郑莉),清华大学 C++程序设计语言 45 郑莉 视频教程
  3. QT制作自定义进度条(圆环状)
  4. windows下USB通讯
  5. link.exe 的参数
  6. 超级P2P搜索引擎使用教程和下载地址
  7. 入门级详细USB移植教程——致正在为USB烦恼的朋友
  8. php处理ubb代码,UBB代码详解
  9. CSS设置颜色的几种方式
  10. C语言小游戏------贪吃蛇----小白专用