关于安卓接入B站弹幕控件

环境:

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链接

关于安卓接入B站弹幕控件相关推荐

  1. c#控件弹幕效果_仿B站弹幕,极简Android开源弹幕控件:EasyDanmaku

    EasyDanmaku 一个方便简单的Android弹幕控件,顾名思义so easy. easydanmaku easydanmaku 原理简单,纯java实现,方便修改和扩展: 体积小,占用资源少, ...

  2. 可能是目前轻量级弹幕控件中功能最强大的一款

    本项目是一个开源的弹幕控件库,能够支持多种样式弹幕,弹幕点击监听,弹幕分区域显示,自定义移动速度等功能,项目原理是通过自定义ViewGroup.可能是目前轻量级弹幕控件中功能最强大的一款了. Gith ...

  3. trackbar控件显示刻度值_安卓自定义电平流图形控件

    引言 在无线电监测方面,需要对信号进行展示,其中一项数据就是设备返回的电平数据,需要对其实时展示,一图胜千言,最好且最直观的方式就是图表展示,这样对其信号强弱的变化,就可以一目了然. 本文主要讲安卓版 ...

  4. 安卓RatingBar的使用(评分控件)

    先看下效果图: 安卓系统提供了一个评分的控件Ratingbar,但是这个控件默认的样式是不是很难看,并且这个控件所占的空间很大,下面一步一步来解决这个问题: 首先,我们先看这个控件有一个默认的风格   ...

  5. Appium基于安卓的各种FindElement的控件定位方法实践和建议

    AppiumDriver的各种findElement方法的尝试,尝试的目标应用是SDK自带的Notepad应用. 1. findElementByName 1.1 示例 [java]  view pl ...

  6. 安卓开发入门教程-UI控件_EditText

    什么是EditText EditText是用于进行文本输入的UI控件. 基础样例 1.普通输入 效果图 代码 <EditTextandroid:layout_width="wrap_c ...

  7. 安卓禁止ScrollView内的控件改变之后自动滚动

    在不希望控件改变时滚动条滚动.那么设置次控件或者布局的属性 android:focusable="true" android:focusableInTouchMode=" ...

  8. android 获取控件高度_安卓开发入门教程UI控件_ImageView

    什么是ImageView ImageView是用于显示图片的UI控件. 基础样例 1.展示本地图片 效果图 代码 <ImageViewandroid:layout_width="wra ...

  9. 安卓进阶系列-05列表控件(RecyclerView)的使用

    RecyclerView的使用 前言 在之前的博客中我介绍了ListView如何使用,当然那部分博客由于没有考虑基础的问题,写的跨度太大,后面我会全部重构的. ListView是一个滑动列表控件,随着 ...

最新文章

  1. 单个晶体管形成的奇怪振荡电路
  2. i+=1和i=i+1是否完全等价
  3. linux标准c和c编译器6,linux内核中GNU C和标准C的区别
  4. apache 目录访问加密 简单
  5. 9个用于构建容错系统的开源工具
  6. [转] Oracle中Blob转Clob
  7. 使用 cert-manager 签发免费证书
  8. 使用fastjson进行json字符串和List的转换
  9. 百度AI学习:三、文字识别
  10. asp网上书店的代码_使用Helm将ASP.NET Core应用程序部署到Kubernetes容器集群
  11. Android音频路由策略
  12. 汉语数字转换成阿拉伯数字
  13. 路由器的网络连接模式(桥接模式和路由模式)
  14. 网页局部打印以及如何设置打印机纸张大小
  15. html 指针图表,HTML5 canvas 指针时钟
  16. 基于SSH的房屋租赁系统的设计与实现
  17. 返利网app android版
  18. 盘点最新BTA大厂的Java程序员的招聘技术标准(一目了然)
  19. java破解WIFI
  20. cf Gym 101086M ACPC Headquarters : AASTMT (Stairway to Heaven)

热门文章

  1. CAXA电子图版2016破解补丁
  2. saltstack高级状态的使用、top file的使用、数据系统grains和pillar的使用
  3. 实践经验-仪器工程-整机系统
  4. Mac预览工具如何使用?
  5. cisco3560三层交换机vlan间路由配置实例
  6. Android中Log机制
  7. 数据可视化之旅(一):数据可视化过程
  8. c语言在多个数数最大数,求多个数的最大公因数算法 C语言
  9. 利用线性筛算法框架求解因数个数以及因数和问题
  10. Java构建工具:Ant vs Maven vs Gradle