如何實現跑馬燈效果

2021-07-23 04:24:10 字數 1151 閱讀 4062

往往看到一些應用的標題欄中當標題超出時便會自動滾動

這篇文章要講的就是如何去實現textview的marquee效果

其實textview已經自帶了如何實現滾動的屬性

android:singleline="true"  

android:ellipsize="marquee"

android:marqueerepeatlimit="marquee_forever"

通過上面的屬性設定就能讓textview滾動起來。當然也可以通過**去設定。

但是當設定完之後發現並沒有滾動起來,原來textview滾動的前提是這個空間必須要獲得焦點。textview需要必須處於focus狀態。

在textview的父類view中有乙個方法isfocused(),系統通過這個方法去判斷乙個空間是否獲得焦點。

所以我們就有了解決方案:

寫乙個子類繼承textview,重寫isfocused()方法,直接返回true。當通過這個函式去判斷textview有沒有獲得焦點時,總是返回獲得焦點於是我們的textview就開始滾動起來了。**很簡單:

public class alwaysmarqueetextview extends textview   

/**

* constructor

* @param context context

* @param attrs attributeset

*/

public alwaysmarqueetextview(context context, attributeset attrs)

/**

* constructor

* @param context context

* @param attrs attributeset

* @param defstyle int

*/

public alwaysmarqueetextview(context context, attributeset attrs, int defstyle)

@override

public boolean isfocused()

}

跑馬燈效果

cgrect frame labelshow.frame frame.origin.x 180 labelshow.frame frame uiview beginanimations testanimation context null uiview setanimationduration 8....

跑馬燈效果

一句話概括,平移再畫一次。textview 預設就支援跑馬燈效果,但需要設定一些東西,滿足一些條件。但我想知道它的原理。看這效果,就是平滑移動 textview 的內容,這不就是 mscrollx 幹的嗎,結合 valueanimator 很容易就實現了。難點在於,把文字的頭部重新從右邊開始畫出來。...

跑馬燈效果

android ellipsize marquee android marqueerepeatlimit marquee forever android singleline true 但是這樣子有乙個缺點,就是這種狀態的跑馬燈只能在textview處於焦點狀態的時候,它才會滾動,對於實際的開發應用...