自定义简单弹幕实现

最近项目需求实现一个简单的聊天室弹幕效果,因此本身就手动写了一个简单的view,在这里若是写的很差,还望大神勿怪.git

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

TranslateAnimation 详解

这里咱们简单介绍下,就当作回顾一下bash

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的坐标的起点就是屏幕的宽度
这里咱们能够经过ui

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

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

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

首先咱们写一个VIEW 继承RelativeLayout 或者LinearLayout 均可以code

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

下面主要是几个主要方法,能够根据需求动态设置blog

初始化数据:

初始化弹幕:

弹幕移动动画:

这里就用到咱们上面所讲的TranslateAnimation moveSpeed参数能够设置弹幕的移动速度,这里之后咱们能够扩展不少的业务(好比,付费购买加速,减速等道具,或者变颜色等....哈哈哈)

开始弹幕:

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

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

接下来在咱们须要的地方调用
setDatas方法便可..

实现效果以下:

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

下面是github的项目地址 有兴趣的同窗能够下载看下
github.com/luyaoY/DanM…

相关文章
相关标签/搜索