真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在Android中利用TextView實現(xiàn)一個跑馬燈效果

這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)怎么在Android中利用TextView實現(xiàn)一個跑馬燈效果,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)樂東黎族免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

TextView的跑馬燈效果也就是指當你只想讓TextView單行顯示,可是文本內(nèi)容卻又超過一行時,自動從左往右慢慢滑動顯示的效果就叫跑馬燈效果。

其實,TextView實現(xiàn)跑馬燈效果很簡單,因為官方已經(jīng)實現(xiàn)了,你只需要通過設(shè)置幾個屬性即可。而且,相關(guān)的資料其實網(wǎng)上也有一大堆了,之所以還寫這篇博客出來是因為,網(wǎng)上好多人的博客都是只貼代碼的啊,好一點的就是附帶幾張圖片,可是這是動畫效果啊,不動起來,誰知道跑馬燈效果到底長什么樣,到底是不是自己想要的效果?。ú粫挥蓄}主不知道跑馬燈是什么效果吧,我不信!?。。?。

所以,輕度強迫癥的題主實在忍不住了,自己寫一篇記錄一下。另外,最近在學(xué)習(xí)豎直方向循環(huán)滾動顯示的TextView,等理解掌握透了后也會記錄下來。好了,話不多說,看代碼。

實現(xiàn)

android:ellipsize="marquee" //設(shè)置超出顯示區(qū)域的內(nèi)容以跑馬燈效果呈現(xiàn),該值還可以設(shè)置成END, START等,就是我們常見的在末尾"..."顯示。
android:singleLine="true" //跑馬燈啟動的條件之一,另外官方推薦說該方法已廢棄推薦使用maxLines="1", 不用去鳥他,用maxLines的話跑馬燈效果也不會啟動。
android:focusable="true" //跑馬燈啟動的條件之一
android:marqueeRepeatLimit="-1" //設(shè)置循環(huán)幾次,-1表示無限循環(huán)

怎么在Android中利用TextView實現(xiàn)一個跑馬燈效果

跑馬燈不能啟動的問題

如果對TextView的跑馬燈不熟悉的話,第一次使用應(yīng)該會碰到各種跑馬燈效果不工作的狀態(tài)。其實這是因為跑馬燈的啟動有多個條件,也就是上面的屬性除了最后一條設(shè)置循環(huán)次數(shù)的除外,其他的均必須進行設(shè)置。TextView得是單行顯示,還必須可以獲取焦點,這樣當TextView獲取焦點后跑馬燈效果才會啟動,如最上面動圖里的第二個TextView。

看下TextView關(guān)于跑馬燈啟動的相關(guān)源碼你就會更清楚

怎么在Android中利用TextView實現(xiàn)一個跑馬燈效果

擴展

其實,跑馬燈更常見于TV應(yīng)用上,因為只有在TV應(yīng)用上才需要區(qū)分獲取焦點時的狀態(tài)以及點擊的狀態(tài),畢竟TV應(yīng)用都不支持觸屏模式,都是有遙控操作,焦點狀態(tài)的提示就顯得很重要。

而對于觸屏手機來說,當觸摸時,也就同時獲取點擊狀態(tài)和焦點狀態(tài)了,所以在觸屏手機上,跑馬燈更常見的應(yīng)用場景則是,不管TextView有沒有獲取焦點,都讓跑馬燈效果一直處于啟動狀態(tài),正如最上面動圖里的第一個TextView。如果要實現(xiàn)這個效果,只需要繼承TextView,重寫幾個方法就好了。代碼如下:

/**
 * 跑馬燈效果的TextView, 使用方式:
 * 啟動/關(guān)閉:{@link #setMarqueeEnable(boolean)}
 * xml文件中記得設(shè)置:android:focusable="true", android:singleLine="true"
 *
 * Created by dasu on 2017/3/21.
 * http://www.jianshu.com/u/bb52a2918096
 */

public class MarqueeTextView extends TextView {

  private boolean isMarqueeEnable = false;

  public MarqueeTextView(Context context) {
    super(context);
  }

  public MarqueeTextView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
  }

  public MarqueeTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
  }

  public void setMarqueeEnable(boolean enable) {
    if (isMarqueeEnable != enable) {
      isMarqueeEnable = enable;
      if (enable) {
        setEllipsize(TextUtils.TruncateAt.MARQUEE);
      } else {
        setEllipsize(TextUtils.TruncateAt.END);
      }
      onWindowFocusChanged(enable);
    }
  }

  public boolean isMarqueeEnable() {
    return isMarqueeEnable;
  }

  @Override
  public boolean isFocused() {
    return isMarqueeEnable;
  }

  @Override
  protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
    super.onFocusChanged(isMarqueeEnable, direction, previouslyFocusedRect);
  }

  @Override
  public void onWindowFocusChanged(boolean hasWindowFocus) {
    super.onWindowFocusChanged(isMarqueeEnable);
  }
}

上述就是小編為大家分享的怎么在Android中利用TextView實現(xiàn)一個跑馬燈效果了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站欄目:怎么在Android中利用TextView實現(xiàn)一個跑馬燈效果
URL標題:http://weahome.cn/article/pdhsjj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部