第三方开源库:TextView相关:MarqueeView
来源:互联网 发布:网络聊天软件 编辑:程序博客网 时间:2024/06/05 20:42
MarqueeViewDemo
github:https://github.com/gongwen/MarqueeViewLibrary
通过MarqueeFactory来提供各种样式的跑马灯View,支持自定义跑马灯ItemView。
下面是官方的README.md
效果图
使用
Gradle:
compile 'com.gongwen:marqueelibrary:1.0.4'
属性
通过自定义MarqueeFactory来设置ItemView
继承自MarqueeFactory,通过泛型指定ItemView类型以及ItemData类型,之后实现generateMarqueeItemView方法,提供ItemView,并为ItemView设置数据即可。
例如:
public class NoticeMF extends MarqueeFactory<TextView, String> { private LayoutInflater inflater; public NoticeMF(Context mContext) { super(mContext); inflater = LayoutInflater.from(mContext); } @Override public TextView generateMarqueeItemView(String data) { TextView mView = (TextView) inflater.inflate(R.layout.notice_item, null); mView.setText(data); return mView; }}
设置列表数据
适用于仅设置一次数据源
MarqueeFactory<TextView, String> marqueeFactory = new NoticeMF(this);marqueeFactory.setData(datas);
适用于多次设置数据源
MarqueeFactory<TextView, String> marqueeFactory = new NoticeMF(this);marqueeFactory.resetData(datas);
设置事件监听
marqueeFactory.setOnItemClickListener(new MarqueeFactory.OnItemClickListener<TextView, String>() { @Override public void onItemClickListener(MarqueeFactory.ViewHolder<TextView, String> holder) { Toast.makeText(MainActivity.this, holder.data, Toast.LENGTH_SHORT).show(); }});
MarqueeView设置Factory
marqueeView.setMarqueeFactory(marqueeFactory);
start
marqueeView3.startFlipping();
下面是我的Demo
public class MainActivity extends AppCompatActivity { private MarqueeView marqueeView1; private List<String> datas; private MarqueeView marqueeView2; private MarqueeView marqueeView3; private Info info; private MarqueeView marqueeView4; private Toast toast; private ArrayList<Info> infos; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); datas = Arrays.asList("《赋得古原草送别》", "离离原上草,一岁一枯荣。", "野火烧不尽,春风吹又生。", "远芳侵古道,晴翠接荒城。", "又送王孙去,萋萋满别情。"); toast = Toast.makeText(MainActivity.this, "", Toast.LENGTH_SHORT); initViews1();//简单模式 initViews2();//xml设置自定义动画 initViews3();//java设置自定义动画 initViews4();//自定义marquee的View } private void initViews1() { TextViewFactory factory = new TextViewFactory(MainActivity.this); factory.setData(datas); factory.setOnItemClickListener(new MarqueeFactory.OnItemClickListener<TextView, String>() { @Override public void onItemClickListener(MarqueeFactory.ViewHolder<TextView, String> holder) { toast.setText(holder.data); toast.show(); } }); marqueeView1 = (MarqueeView) findViewById(R.id.marqueeView1); marqueeView1.setMarqueeFactory(factory); marqueeView1.startFlipping(); } private void initViews2() { TextViewFactory factory = new TextViewFactory(MainActivity.this); factory.resetData(datas); marqueeView2 = (MarqueeView) findViewById(R.id.marqueeView2); marqueeView2.setMarqueeFactory(factory); marqueeView2.startFlipping(); } private void initViews3() { TextViewFactory textViewFactory = new TextViewFactory(MainActivity.this); textViewFactory.setData(datas); marqueeView3 = (MarqueeView) findViewById(R.id.marqueeView3); marqueeView3.setMarqueeFactory(textViewFactory); marqueeView3.setAnimDuration(2000); marqueeView3.setInterval(2500); marqueeView3.setAnimateFirstView(true); marqueeView3.setAnimInAndOut(android.R.anim.slide_in_left, android.R.anim.slide_out_right); marqueeView3.startFlipping(); } private void initViews4() { CustomViewFactory factory = new CustomViewFactory(MainActivity.this); initData(); factory.setData(infos); factory.setOnItemClickListener(new MarqueeFactory.OnItemClickListener<RelativeLayout, Info>() { @Override public void onItemClickListener(MarqueeFactory.ViewHolder<RelativeLayout, Info> holder) { toast.setText(holder.data.getTitle()); toast.show(); } }); marqueeView4 = (MarqueeView) findViewById(R.id.marqueeView4); marqueeView4.setMarqueeFactory(factory); marqueeView4.startFlipping(); } private void initData() { infos = new ArrayList<>(); for (int i = 0; i < 3; i++) { info = new Info(); info.setTitle("Title+" + i); info.setContent("content+" + i); info.setTime("time+" + i); infos.add(info); } }}
TextViewFactory
public class TextViewFactory extends MarqueeFactory<TextView,String> { private final LayoutInflater inflater; private TextView tv; public TextViewFactory(Context mContext) { super(mContext); inflater = LayoutInflater.from(mContext); } @Override public TextView generateMarqueeItemView(String data) { tv = (TextView) inflater.inflate(R.layout.textview, null); tv.setText(data); return tv; }}
CustomViewFactory:
public class CustomViewFactory extends MarqueeFactory<RelativeLayout,Info> { private final LayoutInflater inflater; private RelativeLayout custom_view; private TextView tv_title; private TextView tv_content; private TextView tv_time; public CustomViewFactory(Context mContext) { super(mContext); inflater = LayoutInflater.from(mContext); } @Override public RelativeLayout generateMarqueeItemView(Info data) { custom_view = (RelativeLayout) inflater.inflate(R.layout.custom_view, null); tv_title = (TextView) custom_view.findViewById(R.id.tv_title); tv_content = (TextView) custom_view.findViewById(R.id.tv_content); tv_time = (TextView) custom_view.findViewById(R.id.tv_time); tv_title.setText(data.getTitle()); tv_content.setText(data.getContent()); tv_time.setText(data.getTime()); return custom_view; }}
textview.xml
<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:ellipsize="end" android:maxLines="1" android:padding="15dp" android:textSize="15sp"/>
custom_view.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" android:layout_margin="10dp"> <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Title"/> <TextView android:id="@+id/tv_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tv_title" android:text="content"/> <TextView android:id="@+id/tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:text="时间:2017-2-13"/></RelativeLayout>
demo
https://git.oschina.net/libraryDemo/MarqueeView01
0 0
- 第三方开源库:TextView相关:MarqueeView
- textview相关
- TextView相关
- TextView相关
- TextView相关
- TextView相关
- TextView相关
- 第三方开源库:TabLayout相关
- 【TextView】Android TextView相关操作
- 第三方开源库:EditText相关:GridPasswordView
- 第三方开源库:Title_Bar相关:AwesomeBar
- Android第三方开源库:PopupWindow相关
- MarQueeView垂直滚动广告
- 第三方开源库:nineoldandroid:ValueAnimator 动态设置textview的高
- TextView 相关属性
- textview显示相关
- Android TextView相关属性
- Textview相关知识
- Java中的Servlet
- PostgreSQL学习篇16.3 检查备库及流复制情况
- DotNetBat中supergridcontrol控件一些使用技巧
- 学习HLSL以来的一点心得(一):调试
- 48、Power Query-大量复杂数据的整理汇总
- 第三方开源库:TextView相关:MarqueeView
- 数据结构与算法--链表(1)
- 开源大数据处理工具汇总(上)
- 启动tomcat的时候就报错“Server Tomcat v7.0 Server at localhost failed to start.”
- instancetype
- Apache最大连接数/apache并发数修改方法
- Java算法实现之桶排序
- Task async/await
- Android布局性能调优