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

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

未用自定义TextView实现跑马灯代码:<Buttonandroid: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 stubreturn true;}}然后在android的xml文件中,引用自定义实现,路径要是类的绝对路径 <com.zebra.mobilesafe.ui.FocusTextViewandroid:singleLine="true"android:ellipsize="marquee"android:text="使用自定义TextView的跑马灯效果"android:textSize="18sp"android:layout_width="fill_parent"android:layout_height="wrap_content"/>这样就可以在TextView中实现跑马灯效果了。

没有口水与汗水,就没有成功的泪水。

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

相关文章:

你感兴趣的文章:

标签云: