利索能及
我要发布
收藏
专利号: 2018110298706
申请人: 武汉斗鱼网络科技有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2024-09-06
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种弹幕显示方法,其特征在于,所述方法包括:构建一个显示弹幕的管理队列,所述管理队列用于维护当前正在屏幕显示的弹幕信息;

建立弹幕textView控件与弹幕的唯一标识符之间的对应关系,所述弹幕的唯一标识符是一个String类型的数据;

当弹幕准备进入屏幕执行移动动画时,获取当前屏幕显示的textView控件对应的弹幕的唯一标识符;

将当前屏幕显示的textView控件对应的弹幕的唯一标识符存储到所述管理队列中;

当当前屏幕显示的textView控件移出屏幕时,将当前屏幕显示的textView控件对应的弹幕的唯一标识符移出所述管理队列;

获取用户的弹幕显示设置指令,所述指令中包括弹幕显示区域高度设置信息;

根据所述指令从所述管理队列中取出所有的当前正在显示的弹幕textView控件对应的目标唯一标识符,并通过目标唯一标识符找到对应的目标textView控件;

设定所述目标textView控件在屏幕水平移动距离Sx,所述Sx小于屏幕宽度;

将弹幕的水平移动速度标记为Vx,通过Sx/Vx计算弹幕平滑变化的时间dT;

根据所述弹幕显示区域高度设置信息,计算在dT时间内运动的垂直距离和垂直速度Vy;

获取所述目标textView控件预设的水平动画;

根据dT和Vy为所述目标textView控件构建一个垂直动画;

定义一个组合动画,并将所述水平动画和所述垂直动画添加到组合动画的对象中;

通过调用组合动画开启水平动画和垂直动画的执行,在视频中实现基于所述目标textView控件的弹幕显示。

2.根据权利要求1所述的方法,其特征在于,所述获取当前屏幕显示的textView控件对应的弹幕的唯一标识符,包括:

通过调用textView.hashCode()获取当前屏幕显示的textView控件对应的弹幕的唯一标识符。

3.根据权利要求2所述的方法,其特征在于,所述管理队列为danmuShowQueue队列,所述将当前屏幕显示的textView控件对应的弹幕的唯一标识符存储到所述管理队列中,包括:

调用danmuShowQueue队列中的danmuShowQueue.add(tvHashCode)将当前屏幕显示的textView控件对应的弹幕的唯一标识符tvHashCode存储到danmuShowQueue队列中。

4.根据权利要求3所述的方法,其特征在于,所述当当前屏幕显示的textView控件移出屏幕时,将当前屏幕显示的textView控件对应的弹幕的唯一标识符移出所述管理队列包括:

当当前屏幕显示的textView控件移出屏幕时,通过调用danmuShowQueue.poll()将当前屏幕显示的textView控件对应的弹幕的唯一标识符从danmuShowQueue队列中移除出去。

5.根据权利要求4所述的方法,其特征在于,所述根据dT和Vy为所述目标textView控件构建一个垂直动画,包括:

定义一个ObjectAnimator类型的mAnimatorTranslateY对象;

调用ObjectAnimator.ofFloat(textView,″translationY″,tvHeight,tvHeight’)构建运动速度为Vy的垂直动画,其中,该ObjectAnimator.ofFloat函数是对目标textView控件执行垂直动画,该垂直动画的起始点是tvHeight,目标结束点是tvHeight’,返回的值是mAnimatorTranslateY对象信息;

调用mAnimatorTranslateY对象中的mAnimatorTranslateY.setDuration(dT)将垂直动画的执行周期dT设置到对象mAnimatorTranslateY中。

6.一种弹幕显示装置,其特征在于,所述装置包括:构建单元,用于构建一个显示弹幕的管理队列,所述管理队列用于维护当前正在屏幕显示的弹幕信息;

建立单元,用于建立弹幕textView控件与弹幕的唯一标识符之间的对应关系,所述弹幕的唯一标识符是一个String类型的数据;

队列管理单元,用于当弹幕准备进入屏幕执行移动动画时,获取当前屏幕显示的textView控件对应的弹幕的唯一标识符;将当前屏幕显示的textView控件对应的弹幕的唯一标识符存储到所述管理队列中;当当前屏幕显示的textView控件移出屏幕时,将当前屏幕显示的textView控件对应的弹幕的唯一标识符移出所述管理队列;

获取单元,用于获取用户的弹幕显示设置指令,所述指令中包括弹幕显示区域高度设置信息;

查找单元,用于根据所述指令从所述管理队列中取出所有的当前正在显示的弹幕textView控件对应的目标唯一标识符,并通过目标唯一标识符找到对应的目标textView控件;

计算单元,用于设定所述目标textView控件在屏幕水平移动距离Sx,所述Sx小于屏幕宽度;将弹幕的水平移动速度标记为Vx,通过Sx/Vx计算弹幕平滑变化的时间dT;根据所述弹幕显示区域高度设置信息,计算在dT时间内运动的垂直距离和垂直速度Vy;

动画处理单元,用于获取所述目标textView控件预设的水平动画;根据dT和Vy为所述目标textView控件构建一个垂直动画;定义一个组合动画,并将所述水平动画和所述垂直动画添加到组合动画的对象中;

显示单元,用于通过调用组合动画开启水平动画和垂直动画的执行,在视频中实现基于所述目标textView控件的弹幕显示。

7.根据权利要求6所述的装置,其特征在于,所述队列管理单元具体用于:通过调用textView.hashCode()获取当前屏幕显示的textView控件对应的弹幕的唯一标识符。

8.根据权利要求7所述的装置,其特征在于,所述管理队列为danmuShowQueue队列,所述队列管理单元具体还用于:

调用danmuShowQueue队列中的danmuShowQueue.add(tvHashCode)将当前屏幕显示的textView控件对应的弹幕的唯一标识符tvHashCode存储到danmuShowQueue队列中;

当当前屏幕显示的textView控件移出屏幕时,通过调用danmuShowQueue.poll()将当前屏幕显示的textView控件对应的弹幕的唯一标识符从danmuShowQueue队列中移除出去。

9.根据权利要求8所述的装置,其特征在于,所述动画处理单元具体用于:定义一个ObjectAnimator类型的mAnimatorTranslateY对象;

调用ObjectAnimator.ofFloat(textView,″translationY″,tvHeight,tvHeight’)构建运动速度为Vy的垂直动画,其中,该ObjectAnimator.ofFloat函数是对目标textView控件执行垂直动画,该垂直动画的起始点是tvHeight,目标结束点是tvHeight’,返回的值是mAnimatorTranslateY对象信息;

调用mAnimatorTranslateY对象中的mAnimatorTranslateY.setDuration(dT)将垂直动画的执行周期dT设置到对象mAnimatorTranslateY中。

10.一种电子设备,其特征在于,包括:存储器,处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时可以实现权利要求1至5任一所述的方法。