欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android使用TextView跑馬燈效果

 更新時(shí)間:2017年03月21日 14:05:51   作者:請(qǐng)叫我大蘇  
這篇文章主要為大家詳細(xì)介紹了Android使用TextView跑馬燈效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

老規(guī)矩,先上圖看效果。

說明

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

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

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

實(shí)現(xiàn)

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

跑馬燈不能啟動(dòng)的問題

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

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

擴(kuò)展

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

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

/**
 * 跑馬燈效果的TextView, 使用方式:
 * 啟動(dòng)/關(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);
  }
}

最后

以上就是使用TextView跑馬燈的記錄,那么,如果不用官方提供的有沒有辦法實(shí)現(xiàn)呢,答案肯定是有的,怎么做呢,不知道,最近正好沒事,自己試試看去。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Flutter實(shí)現(xiàn)簡單的下載按鈕動(dòng)畫

    Flutter實(shí)現(xiàn)簡單的下載按鈕動(dòng)畫

    我們?cè)赼pp的開發(fā)過程中經(jīng)常會(huì)用到一些表示進(jìn)度類的動(dòng)畫效果,比如一個(gè)下載按鈕,那么在flutter中一個(gè)下載按鈕的動(dòng)畫應(yīng)該如何制作呢,一起來看看吧
    2023-05-05
  • Android手機(jī)獲取IP地址的兩種方法

    Android手機(jī)獲取IP地址的兩種方法

    這篇文章主要介紹了Android手機(jī)獲取IP地址的兩種方法,本文分別講解了WIFI和GPRS兩種情況下各自獲取手機(jī)IP地址的方法,需要的朋友可以參考下
    2015-05-05
  • Android繪制儀表盤指針刻度

    Android繪制儀表盤指針刻度

    這篇文章主要為大家詳細(xì)介紹了Android繪制儀表盤指針刻度,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Android圖片加載利器之Picasso源碼解析

    Android圖片加載利器之Picasso源碼解析

    這篇文章主要為大家詳細(xì)解析了Android圖片加載利器之Picasso源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android項(xiàng)目基本結(jié)構(gòu)詳解

    Android項(xiàng)目基本結(jié)構(gòu)詳解

    這篇文章主要為大家詳細(xì)介紹了Android項(xiàng)目基本結(jié)構(gòu),從最基本的內(nèi)容講起,帶你逐步進(jìn)入用C#進(jìn)行Android應(yīng)用開發(fā)的樂園,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Android制作微信app頂部menu菜單(ActionBar)

    Android制作微信app頂部menu菜單(ActionBar)

    這篇文章主要為大家詳細(xì)介紹了Android利用ActionBar制作微信app頂部menu菜單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android ListView的item背景色設(shè)置和item點(diǎn)擊無響應(yīng)的解決方法

    Android ListView的item背景色設(shè)置和item點(diǎn)擊無響應(yīng)的解決方法

    在Android開發(fā)中,listview控件是非常常用的控件,在大多數(shù)情況下,大家都會(huì)改掉listview的item默認(rèn)的外觀。
    2013-11-11
  • Android中的Launch Mode詳情

    Android中的Launch Mode詳情

    這篇文章主要介紹了Android中的Launch Mode詳情,文章圍繞主題的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • android獲取時(shí)間差的方法

    android獲取時(shí)間差的方法

    這篇文章主要介紹了android獲取時(shí)間差的方法,涉及Android操作時(shí)間的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • android中使用react-native設(shè)置應(yīng)用啟動(dòng)頁過程詳解

    android中使用react-native設(shè)置應(yīng)用啟動(dòng)頁過程詳解

    這篇文章主要介紹了android中使用react-native設(shè)置應(yīng)用啟動(dòng)頁過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論