先上效果:
Android系统中TextView实现跑马灯效果,必须具备以下几个条件:
- android:singleLine=“true”
- android:ellipsize=“marquee”
- android:marqueeRepeatLimit=“marquee_forever”
- TextView必须单行显示,即内容必须超出TextView大小
- TextView要获得焦点才能滚动
示例布局如下:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.MarqueeActivity"
android:background="#3A3A3A"
>
<FrameLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
>
<TextView
android:id="@+id/tv"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="本直播不构成投资协议,产品的历史业绩不预示未的历史不预谨本直播不构成投资协议,产品的历史业绩不预示未的历史不预谨"
android:textColor="@color/white"
android:scrollHorizontally="true"
android:focusable="true"
android:focusableInTouchMode="true"
/>
</FrameLayout>
</android.support.constraint.ConstraintLayout>
逻辑处理如下:
package top.lc951.myandroid.activity;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.widget.TextView;
import top.lc951.myandroid.R;
/**
* 跑马灯效果
*
* */
public class MarqueeActivity extends AppCompatActivity {
public static void actionActivity(Context context){
Intent intent=new Intent(context,MarqueeActivity.class);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_marquee);
TextView textView=findViewById(R.id.tv);
textView.setSelected(true);//能动起来的关键代码
textView.setText("本直播不构成投资协议" +
",产品的历史业绩不预示未的历史不预谨本直播不构成投资协议" +
",产品的历史业绩不预示未的历史不预谨本直播不构成投资协议" +
",产品的历史业绩不预示未的历史不预谨本直播不构成投资协议" +
",产品的历史业绩不预示未的历史不预谨");
}
}
在没有textView.setSelected(true); 这一行怎么都动不了,参考过很多博客也是没有这行的,看了看日期的确是13年以前的技术博客了。
以前布局就可以动起来的,现在需要加这行才能跑动起来。
注意这行代码,如果跑动动画效果没有请检查一下这行代码
哦!
开源地址:https://gitee.com/lc951/my-android
有兴趣的可以去瞅瞅看,都是一些实用小demo