自定義簡單彈幕實現

最近項目需求實現一個簡單的聊天室彈幕效果,因此本身就手動寫了一個簡單的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…

相關文章
相關標籤/搜索