教你一步步实现bibibi弹幕功能。

本文介绍如何一步步实现bibibi式的弹幕功能,包括弹幕的动画效果、大小、颜色和速度设置。虽然存在弹幕不重叠的难题尚未解决,但已提供基本的代码结构和Demo下载链接,帮助读者理解并实现弹幕功能。
摘要由CSDN通过智能技术生成

在bibibi推出弹幕功能,我也爱上了边看视频边看吐槽了,现在让我们也来实现这一个功能吧。

 首先我们要整理一下思绪我们大概需要实现哪个细节板块呢。

我们最直观的看来,弹幕就是总右往左出现到消失。我们要实现这个动画,弹幕的大小,颜色,出现方式,加速,弹幕的不重叠(这个我想了好久还没有实现,有实现方法可以联系下我)。

我们先来了解一下等会程序里面会用到的相关知识点,等会看代码会更轻松一点。

/*getHeight跟getMeasureHeight的区别
         * 实际上在当屏幕可以包裹内容的时候,他们的值相等,只有当view超出屏幕后,才能看出他们的区别:
         * getMeasuredHeight()是实际View的大小,与屏幕无关,而getHeight的大小此时则是屏幕的大小。
         * 当超出屏幕后, getMeasuredHeight() 等于 getHeight()加上屏幕之外没有显示的大小 
         * 
         * */
/Activity生命周期中,onStart, onResume, onCreate都不是真正visible的时间点,真正的visible时间点是onWindowFocusChanged()函数被执行时。
    //当你屏幕的焦点发生变化时候,想要操作什么也完全可以在这个方法里面执行
        // Interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。
        /*
         * AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速
          AccelerateInterpolator  在动画开始的地方速率改变比较慢,然后开始加速
              AnticipateInterpolator 开始的时候向后然后向前甩
          AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
              BounceInterpolator   动画结束的时候弹起
            CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
          DecelerateInterpolator 在动画开始的地方快然后慢
            LinearInterpolator   以常量速率改变
            OvershootInterpolator    向前甩一定值后再回到原来位置
         * fillBefore是指动画结束时画面停留在此动画的第一帧;
           fillAfter是指动画结束是画面停留在此动画的最后一帧。
       Java代码设置如下:
      /*****动画结束时,停留在最后一帧*********
          setFillAfter(true);
          setFillBefore(false);  
    /*****动画结束时,停留在第一帧*********
       setFillAfter(false);
        setFillBefore(true);  
         *
       

下面我们就来看一下弹幕实现的效果。

弹幕会出现重叠,这个问题还未解决

让我们开始看代码结构吧。

我们字体颜色的xml都写在了colors.xml中了,BarrageItem里面存放着我们的一些变量,而核心代码都在View中

BraagetItem.java

pac
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值