国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android使用TextView跑馬燈效果

2019-12-12 03:19:21
字體:
來源:轉載
供稿:網友

老規矩,先上圖看效果。

說明

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

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

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

實現

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

跑馬燈不能啟動的問題

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

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

擴展

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

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

/** * 跑馬燈效果的TextView, 使用方式: * 啟動/關閉:{@link #setMarqueeEnable(boolean)} * xml文件中記得設置: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跑馬燈的記錄,那么,如果不用官方提供的有沒有辦法實現呢,答案肯定是有的,怎么做呢,不知道,最近正好沒事,自己試試看去。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 马山县| 大英县| 兖州市| 阿拉善左旗| 彩票| 涟水县| 静宁县| 绥棱县| 白朗县| 清水河县| 宝兴县| 都安| 康平县| 甘肃省| 凤庆县| 湖南省| 民和| 哈密市| 新平| 金溪县| 朝阳市| 西畴县| 沙湾县| 东平县| 三穗县| 凤冈县| 子洲县| 凤山市| 始兴县| 象州县| 彝良县| 阜城县| 宝山区| 浠水县| 崇州市| 寻乌县| 凌云县| 宁海县| 钟山县| 石门县| 米林县|