最近項目需求實現一個簡單的聊天室彈幕效果,因此本身就手動寫了一個簡單的view,在這裏若是寫的很差,還望大神勿怪.git
首先思路是: 相似彈幕這種 就是從左往右移動的效果,那麼就涉及到Android動畫裏面的TranslateAnimationgithub
這裏咱們簡單介紹下,就當作回顧一下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…