自定义简单弹幕实现

最近项目需求实现一个简单的聊天室弹幕效果,所以自己就手动写了一个简单的view,在这里如果写的不好,还望大神勿怪.

首先思路是: 类似弹幕这种 就是从左往右移动的效果,那么就涉及到Android动画里面的TranslateAnimation

TranslateAnimation 详解

这里我们简单介绍下,就当做回顾一下

         TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta);复制代码

由上面我们可以看出TranslateAnimation有四个参数

  float fromXDelta 动画开始的点离当前View X坐标上的差值 
  float toXDelta 动画结束的点离当前View X坐标上的差值 
  float fromYDelta 动画开始的点离当前View Y坐标上的差值 
  float toYDelta 动画开始的点离当前View Y坐标上的差值 

好吧,这样解释可能有点懵,那我们简单举个例子,fromXDelta就是你view初始的x坐标,fromYDelta就是你初始的Y坐标,
比如我的初始的位置是(0,0,0,0) ,我们想要向右移动10个单位,那么移动后的就是(0,10,0,0)....复制代码

那么我们要实现弹幕的效果,如何去思考怎样去实现动画呢?
一般的弹幕,都是从右向左逐渐消失,那么我的x的坐标的起点就是屏幕的宽度
这里我们可以通过

 getResources().getDisplayMetrics().widthPixels复制代码

拿到我们屏幕的宽度 这个也就是我们的X坐标,那么要移动后的坐标呢?我们会实现从右向左逐渐消失的过程,
所以我们移动后的x坐标就是-getResources().getDisplayMetrics().widthPixels, 这里有个思考为什么不是 0 呢?

好了前期思路已经明了,接下来代码开工~~

首先我们写一个VIEW 继承RelativeLayout 或者LinearLayout 都可以

弹幕根据需求进行相应参数设置,比如行高 速度,以及相邻弹幕出现的时间,又例如文字,颜色等一些设置,当然我们同样可以在layout里面进行设置.

下面主要是几个主要方法,可以根据需求动态设置

初始化数据:

初始化弹幕:

弹幕移动动画:

这里就用到我们上面所讲的TranslateAnimation moveSpeed参数可以设置弹幕的移动速度,这里以后我们可以扩展很多的业务(比如,付费购买加速,减速等道具,或者变颜色等....哈哈哈)

开始弹幕:

这个就是启动我们弹幕的方法

好了我们简单的弹幕就封装好了

接下来在我们需要的地方调用
setDatas方法即可..

实现效果如下:

大功告成,这个是个简易的 非常适合小需求的,嘻嘻嘻~

下面是github的项目地址 有兴趣的同学可以下载看下
github.com/luyaoY/DanM…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值