Android-TextView跑馬燈效果


要實現跑馬燈還是比較簡單的。

同時有幾個需要注意的點,先上代碼:

 1 public class MTView extends TextView {
 2 
 3 
 4     public MTView(Context context) {
 5         super(context);
 6     }
 7 
 8     public MTView(Context context, AttributeSet attrs) {
 9         super(context, attrs);
10     }
11 
12     public MTView(Context context, AttributeSet attrs, int defStyleAttr) {
13         super(context, attrs, defStyleAttr);
14     }
15 
16     public MTView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
17         super(context, attrs, defStyleAttr);
18     }
19 
20     @Override
21     public boolean isFocused() {
22         return true;
23     }
24 }
1 <me.fwl.MTView
2         android:layout_width="120dp"
3         android:layout_height="20dp"
4         android:layout_centerInParent="true"
5         android:ellipsize="marquee"
6         android:gravity="center_vertical"
7         android:singleLine="true"
8         android:marqueeRepeatLimit="marquee_forever"
9         android:text="Android中重寫TextView實現 跑馬燈 最簡單的方法" />

需要注意的是:

1,ellipsize,這個屬性表示文本過長的時候怎么處理?

  可選的屬性有如下幾個:start表示截取一部分顯示,省略號在開頭;middle表示截取頭尾,中間用省略號;end表示取前面這一段,省略號在后面;marquee表示跑馬燈的滾動效果,不截取,一直滾動;none 表示不做任何處理,也就是截取前面一段,和end的區別是,end后面以省略號結尾,而none直接截斷。

2,singleLine ,這個屬性是必須要設置的。如果可以多行的,你怎么跑?用腳指頭都可以想明白。

3,marqueeRepeatLimit,表示重復的次數,可以直接傳一個int的值。傳入marquee_forever 和 -1 表示無限次循環。

4,要獲取焦點,這里采取的是,重寫TextView的isFocus() 方法來控制其焦點,xml也可以設置獲取焦點,但你不能保證被其他人搶走啊,所以,要重寫。

 

--------------------------------------------升級---------------升級---------------升級---------------升級---------------升級---------------------------------------------------------------

 

這段時間,朋友遇到一個需求,就是在此基礎上,要增加圖標,也就是不是簡單的文字滾動,前面還帶個圖標,而且是多條數據

上代碼

String source = "<span><img src=\"icon_more_up.png\"><span>1文字這五年,張三這樣談文化遺產保護</span><img src=\"icon_more_up.png\"><span>2文字這五年,李四這樣談文化遺產保護</span></span>";
        marqueue = view.findViewById(R.id.marqueue);

        marqueue.setText(Html.fromHtml(source, new Html.ImageGetter() {
            @Override
            public Drawable getDrawable(String s) {
                int imgid = R.drawable.icon_more_down;
                if (s.equals("icon_more_up.png")) {
                    imgid = R.drawable.icon_more_up;
                }
                Drawable drawable = ReportFragment.this.getActivity().getResources().getDrawable(imgid);
                drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                return drawable;
            }
        }, null));

  這個也很簡單嘛,就這樣

 

更新於:2017-9-16 中午,佛山


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM