美文网首页
Android中如何动态获取弹幕内容

Android中如何动态获取弹幕内容

作者: JackDaddy | 来源:发表于2018-05-17 11:43 被阅读58次

        最近在开发中,产品小哥哥说要做个弹幕,然后还要在弹幕走到屏幕中间时,在屏幕中间的位置显示出弹幕的内容(没见过这种奇葩的需求),既然拿到这个需求,那么我们就来看看如何解决这个问题。

        首先,解决问题—>弹幕:

        在网上有很多弹幕框架,百度一下最多的是烈焰弹幕(DanmakuFlameMaster)框架,B站用的就是这个框架,这个框架内容很全,可以实现很多功能,但是代码写起来起来有点繁琐。但对于我这种懒到极致的人当然是寻求可以实现需求的同时,代码量又少,因此选择了一个轻量级的弹幕框架:easyBarrage。

    首先我们来说一下如何使用这个框架:

首先在gradle中加入第三方库,然后syn一下。

导入第三方库

接着在,布局文件中加入:

布局文件

属性说明:

属性说明

Activity中代码如下:

注意这里,由于我重写了框架,因此我需要传多一个参数Activity的参数进去,如果你们只是用原声的框架的话就不用传递这个参数了。

模拟加入弹幕:

点击按钮添加弹幕

注意Barrage对象有多种构造,可以设置字体颜色及是否显示边框,例如

指定字体颜色:

显示边框:

指定颜色及显示边框:

只显示内容:

最后记得在Activity结束的时候调用:

如果你只是想实现这些简单的功能的话下面的话就不用看啦~~

下面就是来实现产品小哥哥奇葩需求的时候了:

1,首先我们把这个框架所需要用到的类全部考下来,新建一个包,放到里面,目录如下:

工程目录

然后布局文件也换成自己的包里的,比如我的是这样:

布局文件

然后打开barrageView,现在要重写这个框架了:

首先看到setBarrage这个方法,首先重写这个方法,这里也就是我之前说的加了一个Activity参数的地方,在里面动态加载一个textView, 由于之前没有加上addView加到ViewGroup中,因此导致显示不出来,各位在动态加载布局控件的时候不要犯我这种低级错误哦。

然后我们看到showBarrage这个方法,仔细看他的源码,发现他是通过一个动画加到textView里的,实现弹幕的滚动。然后,通过handler的死循环实现的textView的出现。那么重头戏来了,我们要如何判断弹幕是否到达屏幕的中间呢?

在他的源码中有对动画进行了监听,动画有三个监听方法,开始时监听,结束时监听,重复时监听,之前曾尝试在结束时进行监听但发现效果并不理想,捕捉到比较慢,因此决定在开始时监听。

1.在开始时监听弹幕的内容

2.延时发送这个弹幕内容

3.将捕捉到的弹幕内容设到之前动态加载的textView控件中。

动画开始时监听,并延时发送

同时修改handle中的代码,捕捉弹幕内容:

捕捉弹幕内容

同时如果要修改弹幕的出现时间,观察源码不难发现是这个变量来控制的:

弹幕出现时间

最后看一下  AnimationHelper  这个类,在这里面可以修改弹幕的速度,通过弹幕的持续时间来修改,同时修改弹幕目视效果,经过测试之后是觉得设置之后弹幕出现比较平滑了,看个人需要吧:

动画效果

至此完成产品的小哥哥的需求啦~~~~

效果图

相关文章

  • Android中如何动态获取弹幕内容

    最近在开发中,产品小哥哥说要做个弹幕,然后还要在弹幕走到屏幕中间时,在屏幕中间的位置显示出弹幕的内容(没见过这...

  • Android6.0 动态权限详解及动态申请权限

    1、动态权限获取机制 Google在Android 6.0中引入了动态权限获取机制(Runtime Permiss...

  • Android之获取手机UUID

    获取权限 Android M动态申请获取权限android.permission.READ_PHONE_STATE...

  • android 9.0定位权限

    在android 8.0 及以前的版本中, 获取定位权限在清单文件中获取就行了, 9.0需要在代码中再次动态获取一...

  • android随记(一)

    在Android 6.0系统中,需要动态获取的权限涉及到: 1、获取手机状态: Manifest.permissi...

  • iOS中Runtime常用示例

    Runtime的内容大概有:动态获取类名、动态获取类的成员变量、动态获取类的属性列表、动态获取类的方法列表、动态获...

  • iOS-Runtime

    Runtime的内容大概有:动态获取类名、动态获取类的成员变量、动态获取类的属性列表、动态获取类的方法列表、动态获...

  • runtime基础

    目前我所了解的Runtime内容大约有:动态获取类名、动态获取类的成员变量、动态获取类的属性列表、动态获取类的方法...

  • html5 audio vue

    动态修改audio的src后,如何获取时长-----先load,然后在oncanplay中获取,看getXXInf...

  • Android 电池电量

    Android 中通过广播获取电池电量信息. 电量信息只能通过动态注册广播才能获取到. 1.0 注册广播的两种方式...

网友评论

      本文标题:Android中如何动态获取弹幕内容

      本文链接:https://www.haomeiwen.com/subject/niovdftx.html