1.引入依赖
implementation ‘com.gongwen:marqueelibrary:1.1.3’
2.添加混合库
在 gradle.properties 添加 android.enableJetifier=true
3.布局xml
<!--设置垂直:不要添加inAnimation和outAnimation即可!-->
<com.gongwen.marqueen.SimpleMarqueeView
android:id="@+id/simpleMarqueeView"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginStart="32dp"
android:layout_marginEnd="16dp"
android:flipInterval="2500"
android:inAnimation="@anim/in_right"
android:outAnimation="@anim/out_left"
app:layout_constraintBottom_toBottomOf="@+id/textView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView"
app:layout_constraintTop_toTopOf="@+id/textView"
app:marqueeAnimDuration="2000"
app:smvTextColor="@color/black"
app:smvTextEllipsize="end"
app:smvTextGravity="center_vertical"
app:smvTextSingleLine="true"
app:smvTextSize="15sp" />
4.Java代码
final List<String> datas = Arrays.asList("《赋得古原草送别》", "离离原上草,一岁一枯荣。", "野火烧不尽,春风吹又生。", "远芳侵古道,晴翠接荒城。", "又送王孙去,萋萋满别情。");
//SimpleMarqueeView<T>,SimpleMF<T>:泛型T指定其填充的数据类型,比如String,Spanned等
SimpleMF<String> marqueeFactory = new SimpleMF(getActivity());
marqueeFactory.setData(datas);
binding.simpleMarqueeView.setMarqueeFactory(marqueeFactory);
binding.simpleMarqueeView.startFlipping();
binding.simpleMarqueeView.setOnItemClickListener(new OnItemClickListener<TextView, String>() {
@Override
public void onItemClickListener(TextView mView, String mData, int mPosition) {
/**
* 注意:
* 当MarqueeView有子View时,mView:当前显示的子View,mData:mView所填充的数据,mPosition:mView的索引
* 当MarqueeView无子View时,mView:null,mData:null,mPosition:-1
*/
Toast.makeText(getActivity(), String.format("mPosition:%s,mData:%s,mView:%s,.", mPosition, mData, mView), Toast.LENGTH_SHORT).show();
}
});