1,一个好用的跑马灯library库:
开发当中好用的开源库能帮程序员省很多时间,省得自己造轮子,所以有好用的库要赶紧积累起来哦。
该库源码GitHub地址:https://github.com/gongwen/MarqueeViewLibrary
2,效果图
3,使用
Module的gradle:
compile'com.gongwen:marqueelibrary:1.1.1
简单使用:
xml:
android:id="@+id/simple_marquee_view"
android:layout_width="match_parent"
android:layout_height="@dimen/dimen_50dp"
android:background="@color/colorTextBg"
android:flipInterval="2500"
android:paddingLeft="@dimen/dimen_10dp"
app:smvTextColor="@color/colorBlack"
app:smvTextGravity="center_vertical"
app:smvTextSize="@dimen/text_size_15sp"
android:inAnimation="@anim/in_top"
android:outAnimation="@anim/out_bottom"
app:marqueeAnimDuration="2000"/>
逻辑:
SimpleMarqueeView mSimpleMarqueeView = (SimpleMarqueeView) findViewById(R.id.simple_marquee_view);
finalList datas =Arrays.asList(getString(R.string.text_one),getString(R.string.text_two),getString(R.string.text_three),getString(R.string.text_four));
SimpleMF marqueeFactory =newSimpleMF(this);
marqueeFactory.setData(datas);
mSimpleMarqueeView.setMarqueeFactory(marqueeFactory);
mSimpleMarqueeView.startFlipping();
点击事件监听:
marqueeFactory.setOnItemClickListener(newMarqueeFactory.OnItemClickListener() {
@Override
public voidonItemClickListener(MarqueeFactory.ViewHolder holder) {
Toast.makeText(MainActivity.this, holder.data, Toast.LENGTH_SHORT).show();
}
});
通过属性inAnimation和outAnimation设置不同的移入移出效果,如效果图所示。
另外,还可以自定义MarqueeFactory来设置不同类型ItemView
xml:
android:id="@+id/marquee_view_4"
android:layout_width="match_parent"
android:layout_height="@dimen/dimen_50dp"
android:background="@color/colorTextBg"
android:flipInterval="2500"
android:paddingLeft="10dp"
app:smvTextColor="@color/colorBlack"
app:smvTextGravity="center_vertical"
app:smvTextSize="@dimen/text_size_15sp"
app:marqueeAnimDuration="2000"/>
自定义MarqueeFactory:
public classComplexViewMFextendsMarqueeFactory {
privateLayoutInflaterinflater;
publicComplexViewMF(Context mContext) {
super(mContext);
inflater= LayoutInflater.from(mContext);
}
@Override
protectedRelativeLayout generateMarqueeItemView(ItemBean data) {
RelativeLayout view = (RelativeLayout)inflater.inflate(R.layout.item,null);
((TextView) view.findViewById(R.id.tv_title)).setText(data.getTitle());
((TextView) view.findViewById(R.id.tv_second_title)).setText(data.getSecondTitle());
((TextView) view.findViewById(R.id.tv_time)).setText(data.getTime());
return view;
}
}
即可实现列表滚动效果,如效果图所示。