简单实现Android滚动公告栏

 更新时间:2017年01月23日 11:39:34   作者:ganshenml  
这篇文章主要为大家详细介绍了如何简单实现Android滚动公告栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实现的效果,是一个滚动的公告栏,是这样的:

可以看到这个公告栏一方面是滚动,另外一方面是可点击。

实现的思路:

1.textView放在ViewFlipper中实现滑动效果(可设置左右、或者上下滚动),很明显这应该是自定义view;

2.利用textView的点击事件即可实现点击;

OK,先看看自定义view的代码:

public class MarqueeTextView extends LinearLayout { 
 
 private Context mContext; 
 private ViewFlipper viewFlipper; 
 private View marqueeTextView; 
 private String[] textArrays; 
 private MarqueeTextViewClickListener marqueeTextViewClickListener; 
 
 public MarqueeTextView(Context context) { 
 super(context); 
 mContext = context; 
 initBasicView(); 
 } 
 
 
 public MarqueeTextView(Context context, AttributeSet attrs) { 
 super(context, attrs); 
 mContext = context; 
 initBasicView(); 
 } 
 
 public void setTextArraysAndClickListener(String[] textArrays, MarqueeTextViewClickListener marqueeTextViewClickListener) {//1.设置数据源;2.设置监听回调(将textView点击事件传递到目标界面进行操作) 
 this.textArrays = textArrays; 
 this.marqueeTextViewClickListener = marqueeTextViewClickListener; 
 initMarqueeTextView(textArrays, marqueeTextViewClickListener); 
 } 
 
 public void initBasicView() {//加载布局,初始化ViewFlipper组件及效果 
 marqueeTextView = LayoutInflater.from(mContext).inflate(R.layout.marquee_textview_layout, null); 
 LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
 addView(marqueeTextView, layoutParams); 
 viewFlipper = (ViewFlipper) marqueeTextView.findViewById(R.id.viewFlipper); 
 viewFlipper.setInAnimation(AnimationUtils.loadAnimation(mContext, R.anim.slide_in_bottom));//设置上下的动画效果(自定义动画,所以改左右也很简单) 
 viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(mContext, R.anim.slide_out_top)); 
 viewFlipper.startFlipping(); 
 } 
 
 public void initMarqueeTextView(String[] textArrays, MarqueeTextViewClickListener marqueeTextViewClickListener) { 
 if (textArrays.length == 0) { 
 return; 
 } 
 
 int i = 0; 
 viewFlipper.removeAllViews(); 
 while (i < textArrays.length) { 
 TextView textView = new TextView(mContext); 
 textView.setText(textArrays[i]); 
 textView.setOnClickListener(marqueeTextViewClickListener); 
 LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
 viewFlipper.addView(textView, lp); 
 i++; 
 } 
 } 
 
 public void releaseResources() { 
 if (marqueeTextView != null) { 
 if (viewFlipper != null) { 
 viewFlipper.stopFlipping(); 
 viewFlipper.removeAllViews(); 
 viewFlipper = null; 
 } 
 marqueeTextView = null; 
 } 
 } 
 
} 

然后,主Activity异常简单(还是封装得好):

public class MainActivity extends AppCompatActivity { 
 private MarqueeTextView marqueeTv; 
 private String [] textArrays = new String[]{"this is content No.1","this is content No.2","this is content No.3"}; 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 marqueeTv = (MarqueeTextView) findViewById(R.id.marqueeTv); 
 
 marqueeTv.setTextArraysAndClickListener(textArrays, new MarqueeTextViewClickListener() { 
 @Override 
 public void onClick(View view) { 
 startActivity(new Intent(MainActivity.this,AnotherActivity.class)); 
 } 
 }); 
 } 
 
 @Override 
 protected void onDestroy() { 
 marqueeTv.releaseResources(); 
 super.onDestroy(); 
 } 
} 

Git地址>>https://github.com/ganshenml/MarqueeTextViewApp

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android利用Hero实现列表与详情页无缝切换动画

    Android利用Hero实现列表与详情页无缝切换动画

    本文我们将利用Hero动画实现一个简单案例:实现列表与详情页无缝切换动画,文中的示例代码讲解详细,感兴趣的小伙伴可以动手尝试一下
    2022-06-06
  • Android实现RecyclerView添加分割线的简便方法

    Android实现RecyclerView添加分割线的简便方法

    这篇文章主要介绍了Android实现RecyclerView添加分割线的简便方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Android标题栏中添加返回按钮功能

    Android标题栏中添加返回按钮功能

    标题栏中的返回按钮在实际使用中用的比较多,今天就来讲讲我在项目开发中的使用经历,需要的朋友参考下吧
    2017-04-04
  • Android读取串口数据的操作指南

    Android读取串口数据的操作指南

    在Android系统上读取串口数据是一个常见的需求,特别是当我们需要与硬件设备进行通信时,本文给大家介绍了Android读取串口数据的操作指南,文中有详细的步骤和代码示例,帮助你更好地理解和实现串口通信,需要的朋友可以参考下
    2024-05-05
  • Android协程的7个重要知识点汇总

    Android协程的7个重要知识点汇总

    在现代Android应用开发中,协程(Coroutine)已经成为一种不可或缺的技术,它不仅简化了异步编程,还提供了许多强大的工具和功能,可以在高阶场景中发挥出色的表现,本文将深入探讨Coroutine重要知识点,帮助开发者更好地利用Coroutine来构建高效的Android应用
    2023-09-09
  • Android实现登录邮箱的自动补全功能

    Android实现登录邮箱的自动补全功能

    这篇文章主要为大家详细介绍了Android实现登录邮箱的自动补全功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • 详细解读Android系统中的application标签

    详细解读Android系统中的application标签

    这篇文章主要介绍了Android系统中的application标签,以application来声明App是Android入门学习中的基础知识,需要的朋友可以参考下
    2016-04-04
  • Android实现点击WebView界面中图片滑动浏览与保存图片功能

    Android实现点击WebView界面中图片滑动浏览与保存图片功能

    大家在日常使用spp流量文章的时候经常会遇到这样的一个功能,点击文章的图片进入图片的浏览模式,可以左右滑动图片浏览,并且可以实现保存图片的功能,所以本文主要就介绍了在Android如何实现点击WebView界面中图片滑动浏览与保存图片功能,需要的朋友可以参考下。
    2017-04-04
  • Android 补间动画及组合AnimationSet常用方法详解

    Android 补间动画及组合AnimationSet常用方法详解

    这篇文章主要为大家介绍了Android 补间动画及组合AnimationSet常用方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Android实现循环轮播跑马灯的效果

    Android实现循环轮播跑马灯的效果

    这篇文章主要介绍了为大家详细介绍了如何通过Android实现循环轮播跑马灯的效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-05-05

最新评论