android 循环弹幕,Android中如何动态获取弹幕内容

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

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

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

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

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

852e7a2ab9f8

导入第三方库

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

852e7a2ab9f8

布局文件

属性说明:

852e7a2ab9f8

属性说明

Activity中代码如下:

852e7a2ab9f8

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

852e7a2ab9f8

模拟加入弹幕:

852e7a2ab9f8

点击按钮添加弹幕

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

指定字体颜色:

852e7a2ab9f8

显示边框:

852e7a2ab9f8

指定颜色及显示边框:

852e7a2ab9f8

只显示内容:

852e7a2ab9f8

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

852e7a2ab9f8

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

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

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

852e7a2ab9f8

工程目录

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

852e7a2ab9f8

布局文件

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

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

852e7a2ab9f8

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

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

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

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

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

852e7a2ab9f8

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

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

852e7a2ab9f8

捕捉弹幕内容

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

852e7a2ab9f8

弹幕出现时间

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

852e7a2ab9f8

动画效果

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

852e7a2ab9f8

效果图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值