男款t恤

教你写一个弹幕库确定不了解一下?

时间:2020-05-23 12:56来源:未知 作者:admin 点击:
当然,这并不是绝对的,如果弹幕生成间隔设置不理想的情况下,较短的时间内会产生大量的子View,肯定会发生碰撞的,这个时候我们就直接设置前一个子View的速度。 今天天气颇凉,有点好处,早上都是被冻醒的,所以起的比较早,因为实在太冷了。 早上到公司,

  当然,这并不是绝对的,如果弹幕生成间隔设置不理想的情况下,较短的时间内会产生大量的子View,肯定会发生碰撞的,这个时候我们就直接设置前一个子View的速度。

  今天天气颇凉,有点好处,早上都是被冻醒的,所以起的比较早,因为实在太冷了。 早上到公司,剪辑视频...

  子View添加来之后,BarrageView会对子View进行高度和宽度的测量,测量完之后进行最佳弹幕航道的选择和速度的设置,最后进行属性动画的创建,我们逐个分析。

  获取最佳航道的代码比较多,这里就不写了,首先会根据弹幕的布局(可以将弹幕放在顶部、中间、底部和全屏)进行行数的过滤,接着从barrageList获取每一行的子View从而获取getX(),最终得出哪一行剩余的空间大,你可能会有疑问,当前航道没有子View呢?这种情况就简单了,直接返回该航道啊。

  这里就比较简单了,当前速度获取以后,直接利用当前屏幕宽度加子View宽度除以当前速度计算弹幕子View执行属性动画的时间。这里需要注意的是:

  在上面代码中,我们获取了子View的高度和宽度,如果是第一次添加子View,同时用户也没有对弹幕的高度进行设置,这个时候只能由BarrageView自身进行

  为了约束数据类型,我们需要在BarrageAdapter使用范型,也就是

  所有弹幕的数据都必须实现DataSource接口,getType()方法可以帮我们确定视图的布局。

  本文涉及到了Android中属性动画、内存泄漏以及Java中范型和线程池等知识的简单运用,算是对去年学习的知识一些实战吧。当然了,本人对知识的理解难免有误差,如有错误,欢迎指出,如果觉得我的库写的不错,可以给个Star呦~

  Swift1 Swift和OC的区别1.1 Swift没有地址/指针的概念1.2 泛型1.3 类型严谨 对...

  都啊 去看那阁楼大殿啦 都啊 去瞧那残砖败瓦啰 还有谁记得 那躲在巷子里的 老北京呢 我赌 持着棋子儿的大爷记得 ...

  姓名:许康康 慧瑞环保涂料(上海)有限公司 【日精进打卡第2天】 【知~学习】 《六项精进》2遍 共3遍 《大学》...

  重点参考链接: View Programming Guide for iOS

  花费了不少闲暇的时间,故打算在此总结一下。老规矩,在写下文之前,我们先看一下效果:

  speed和speedWaveValue分别是速度初始值和速度波动值,[speed-speedWaveValue,speed+speedWaveValue]代表弹幕的速度区间。这里BarrageView会先判断当前弹幕的模式,如果是MODEL_RANDOM模式,我们直接随机生成弹幕速度就好了,不过需要在速度区间中生成;如果是防碰撞模式,我们需要:

  

教你写一个弹幕库确定不了解一下?

栏目列表
推荐内容