第一种方法,设置textView的属性
<com.example.glide.MarqueeView
android:id="@+id/marqueeView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="心中有阳光,脚底有力量!心中有阳光,脚底有力量!心中有阳光,脚底有力量!"
android:textSize="40sp"
android:textColor="#ff0000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/banner" />
上面属性,这几个属性的意义
android:ellipsize="marquee" //跑马灯效果
android:focusable="true" //焦点获取第一步
android:focusableInTouchMode="true" //焦点获取第二步
android:marqueeRepeatLimit="marquee_forever" //循环显示
此控件是继承TextView控件,故继承类
public class MarqueeView extends TextView {
public MarqueeView(Context context) {
super(context);
}
public MarqueeView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public MarqueeView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean isFocused() {
return true;
}
}
通过上面两步,就可以实现跑马灯的效果
第二种方式 采用第三方开源库
GitHub地址
https://github.com/sunfusheng/MarqueeView
1、gradle
implementation 'com.sunfusheng:MarqueeView:1.4.1'
2、配置xml文件
<com.sunfusheng.marqueeview.MarqueeView
android:id="@+id/marqueeView"
android:layout_width="match_parent"
android:layout_height="30dp"
app:mvAnimDuration="1000"
app:mvDirection="bottom_to_top"
app:mvInterval="3000"
app:mvTextColor="@color/white"
app:mvTextSize="14sp"
app:mvSingleLine="true"
app:mvFont="@font/huawenxinwei"/>
详细属性参考GitHub
3、显示数据
String message = "心中有阳光,脚底有力量!心中有阳光,脚底有力量!心中有阳光,脚底有力量!";
marqueeView.startWithText(message);
// 在代码里设置自己的动画
marqueeView.startWithText(message, R.anim.anim_bottom_in, R.anim.anim_top_out);
更多功能参考GitHub