简单的弹幕效果

一、依赖

  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. spring Boot打可执行的jar包
  2. JZOJ 5396. 【NOIP2017提高A组模拟10.6】Blocks
  3. 设计模式示例_责任链设计模式示例
  4. scroll-view组件bindscroll实例应用:自定义滚动条
  5. 写给我的女神,一个用灵魂歌唱的小精灵
  6. 深度学习入门|第5章 误差反向传播法(二)
  7. java入门第二天课程,Java菜鸟培训第二天
  8. 百分点舆情洞察系统解决方案
  9. 要参与OpenJDK8源码修改,从哪里下源码?
  10. 求最短路的多种方法比较及应用
  11. 基于北京二手房价数据的探索性数据分析和房价评估——房价评估模型构建
  12. linux majaro 安装 hp p1106打印机
  13. smail语法 clinit和init的区别
  14. 局域网ip冲突检测工具_只需一台Android设备就能打通局域网内部通讯:文字聊天与文件传输...
  15. 超星/智慧树 网课答案查询 高正确率
  16. 系统分析师的必备素质和技能
  17. 【数字图像处理之(一)】数字图像处理与相关领域概述
  18. 视频怎么压缩变小?视频压缩变小的具体操作步骤
  19. 半年内连发6篇CNS!又一顶级学者全职回国,加盟浙大!
  20. 使用jasypt加密配置的时候,报错:DecryptionException: Unable to decrypt

热门文章

  1. qt实现仓库物料管理(小工具)
  2. mysql 编译安装详解_MySQL编译安装详解
  3. 广西2021各校高考成绩查询入口,2021广西高考成绩查询时间广西高考分数查询入口和查分方式_高三网...
  4. java监控gc线程_Java应用性能监控系统,使用JMX实现,实现了类加载监控、内存监控、线程监控、GC监控...
  5. c++中char类型在内存中的表示以及取值范围
  6. WIN32汇编语言之通用对话框的使用
  7. 易语言linux登录器网关源码,Mir2源码详解之服务端-登录网关(LoginGate)
  8. 计算机三级数据库技术复习资料总结
  9. java游戏运行_用jar包运行带GUI的java游戏
  10. php实现我的购物以及订单,实现简单的php购物车代码