关于安卓接入B站弹幕控件
关于安卓接入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站弹幕控件相关推荐
- c#控件弹幕效果_仿B站弹幕,极简Android开源弹幕控件:EasyDanmaku
EasyDanmaku 一个方便简单的Android弹幕控件,顾名思义so easy. easydanmaku easydanmaku 原理简单,纯java实现,方便修改和扩展: 体积小,占用资源少, ...
- 可能是目前轻量级弹幕控件中功能最强大的一款
本项目是一个开源的弹幕控件库,能够支持多种样式弹幕,弹幕点击监听,弹幕分区域显示,自定义移动速度等功能,项目原理是通过自定义ViewGroup.可能是目前轻量级弹幕控件中功能最强大的一款了. Gith ...
- trackbar控件显示刻度值_安卓自定义电平流图形控件
引言 在无线电监测方面,需要对信号进行展示,其中一项数据就是设备返回的电平数据,需要对其实时展示,一图胜千言,最好且最直观的方式就是图表展示,这样对其信号强弱的变化,就可以一目了然. 本文主要讲安卓版 ...
- 安卓RatingBar的使用(评分控件)
先看下效果图: 安卓系统提供了一个评分的控件Ratingbar,但是这个控件默认的样式是不是很难看,并且这个控件所占的空间很大,下面一步一步来解决这个问题: 首先,我们先看这个控件有一个默认的风格 ...
- Appium基于安卓的各种FindElement的控件定位方法实践和建议
AppiumDriver的各种findElement方法的尝试,尝试的目标应用是SDK自带的Notepad应用. 1. findElementByName 1.1 示例 [java] view pl ...
- 安卓开发入门教程-UI控件_EditText
什么是EditText EditText是用于进行文本输入的UI控件. 基础样例 1.普通输入 效果图 代码 <EditTextandroid:layout_width="wrap_c ...
- 安卓禁止ScrollView内的控件改变之后自动滚动
在不希望控件改变时滚动条滚动.那么设置次控件或者布局的属性 android:focusable="true" android:focusableInTouchMode=" ...
- android 获取控件高度_安卓开发入门教程UI控件_ImageView
什么是ImageView ImageView是用于显示图片的UI控件. 基础样例 1.展示本地图片 效果图 代码 <ImageViewandroid:layout_width="wra ...
- 安卓进阶系列-05列表控件(RecyclerView)的使用
RecyclerView的使用 前言 在之前的博客中我介绍了ListView如何使用,当然那部分博客由于没有考虑基础的问题,写的跨度太大,后面我会全部重构的. ListView是一个滑动列表控件,随着 ...
最新文章
- 单个晶体管形成的奇怪振荡电路
- i+=1和i=i+1是否完全等价
- linux标准c和c编译器6,linux内核中GNU C和标准C的区别
- apache 目录访问加密 简单
- 9个用于构建容错系统的开源工具
- [转] Oracle中Blob转Clob
- 使用 cert-manager 签发免费证书
- 使用fastjson进行json字符串和List的转换
- 百度AI学习:三、文字识别
- asp网上书店的代码_使用Helm将ASP.NET Core应用程序部署到Kubernetes容器集群
- Android音频路由策略
- 汉语数字转换成阿拉伯数字
- 路由器的网络连接模式(桥接模式和路由模式)
- 网页局部打印以及如何设置打印机纸张大小
- html 指针图表,HTML5 canvas 指针时钟
- 基于SSH的房屋租赁系统的设计与实现
- 返利网app android版
- 盘点最新BTA大厂的Java程序员的招聘技术标准(一目了然)
- java破解WIFI
- cf Gym 101086M ACPC Headquarters : AASTMT (Stairway to Heaven)