先看效果圖
最近有人問我要一個電商項目的跑馬燈的控件.看了一下感覺實現起來不是很難,現在跟大家分享一下.不知道之前有沒有人分享過.
其實實現原理就是:先定好行高,然後計算出三行的位置.
分別是前一行,當前行和下一行的位置.然後在滾動的時候,就把當前行的位置往前一行的位置移動,下一行的位置就往當前行的位置移動.移動結束之後,就把當前行的位置換位下一行的位置即可.以後重複同樣的同樣的工作.
至於滾動的效果我是用Scroller來實現的,大家可以換ValueAnimator來實現,看個人習慣吧.
最後測量繪製的字出現省略號的效果是用TextUtils類的ellipsize方法來實現的.
循環滾動的效果實現是實現一個Runable然後通過postDelayed來調用直接實現的,其停止效果是通過mIsPlay來標記的.代碼如下:
class PlayRunnable implements Runnable {
@Override
public void run() {
if(mIsPlay) {
nextLine();
postDelayed(this, 1000);
}
}
}