Android中实现跑马灯效果

android中实现跑马灯有三种方式
第一种,比较简单,直接用textView来实现。

    android:singleLine="true"
    android:ellipsize="marquee"
    android:text="大王让我来巡山,寻了南山寻北山"
    android:background="@color/colorAccent"
    android:textSize="30sp"
    android:textColor="#ffffff"
    android:padding="10dp"
    android:focusableInTouchMode="true"
    android:marqueeRepeatLimit="marquee_forever"
    android:focusable="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

直接在布局文件中使用这个textview即可,其中的关键代码是:

     android:singleLine="true" //设置文字只显示一行
     android:ellipsize="marquee"// 设置无法显示的文字的显示方式为跑马灯
     android:marqueeRepeatLimit="marquee_forever"//设置跑马灯的重复方式
     android:text="大王让我来巡山,寻了南山寻北山"//注意文字一定要长,否则无效果
     android:focusableInTouchMode="true" //通过触摸方式获取焦点
     android:focusable="true"//获取焦点

第二种,继承TextView
public class MyTextView extends TextView {

public MyTextView(Context context) {
    super(context);
}

public MyTextView(Context context,  AttributeSet attrs) {
    super(context, attrs);
}

public MyTextView(Context context,  AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}

   //重写这个方法,强制返回true
	    @Override
public boolean isFocused() {
    return true;
    }
}

在布局中使用
 <com.bawie.MyTextView
    android:singleLine="true"
    android:ellipsize="marquee"
    android:text="大王让我来巡山,寻了南山寻北山"
    android:background="@color/colorAccent"
    android:textSize="30sp"
    android:textColor="#ffffff"
    android:padding="10dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
核心代码:

android:singleLine="true"
android:ellipsize="marquee"
android:text="大王让我来巡山,寻了南山寻北山"

可以看到,少了焦点处理的那些内容。
这两种方式,我们均无法控制文字的滚动速度和方向

第三种方式,自定义View

猜你喜欢

转载自blog.csdn.net/wzj_8899174/article/details/83866224