Android自定义TextView实现跑马灯功能

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

首先我们要实现走马灯这样一个效果,通常来说都是在TextView这个控件中来实现的,而且其中的文字一定是单行显示,如果多行显示,那走马灯效 果也就失去了存在的意义。谈到TextView的跑马灯,我们首先应该想到android:ellipsize="marquee"(start、end 属性表示前或者后省略),而如果要在view中实现跑马灯功能,就需要TextView改为Button,开启触控焦点在开启状态 android:focusableInTouchMode="true",否则是不会看到跑马灯效果的。

未用自定义TextView实现跑马灯代码:

    <Button   
            android:focusableInTouchMode="true"  
            android:singleLine="true"  
            android:ellipsize="marquee"  
            android:text="未使用自定义TextView的跑马灯效果"  
            android:textSize="18sp"  
            android:layout_width="fill_parent"  
            android:layout_height="wrap_content"  
            />  

下面使用自定义TextView实现跑马灯:

先编写自定义TextView

    package com.zebra.mobilesafe.ui;  
      
    import android.content.Context;  
    import android.util.AttributeSet;  
    import android.view.ViewDebug.ExportedProperty;  
    import android.widget.TextView;  
      
    /** 
     * 自定义一个TextView,是他天生就有焦点 
     * @author Administrator 
     * 
     */  
    public class FocusTextView extends TextView {  
      
        public FocusTextView(Context context, AttributeSet attrs, int defStyle) {  
            super(context, attrs, defStyle);  
            // TODO Auto-generated constructor stub  
        }  
      
        public FocusTextView(Context context, AttributeSet attrs) {  
            super(context, attrs);  
            // TODO Auto-generated constructor stub  
        }  
      
        public FocusTextView(Context context) {  
            super(context);  
            // TODO Auto-generated constructor stub  
        }  
      
        /** 
         * 欺骗Android系统,让当前没有焦点的判断为true,实现button效果 
         */  
        @Override  
        @ExportedProperty(category = "focus")  
        public boolean isFocused() {  
            // TODO Auto-generated method stub  
            return true;  
        }  
    }  

然后在android的xml文件中,引用自定义实现,路径要是类的绝对路径
    <com.zebra.mobilesafe.ui.FocusTextView  
        android:singleLine="true"  
        android:ellipsize="marquee"  
        android:text="使用自定义TextView的跑马灯效果"  
        android:textSize="18sp"  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        />  

这样就可以在TextView中实现跑马灯效果了。