简单实现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

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

(0)

相关推荐

  • android listview 水平滚动和垂直滚动的小例子

    网上有很多解决 android listview 水平和垂直滚动的代码,我没有按照他们说的做(以前没搜到 O(∩_∩)O~) 我采用的是添加HorizontalScrollViewJava代码 复制代码 代码如下: < ScrollView android:id="@+id/ScrollView01" android:layout_height="300px" android:layout_x="16px" android:layout_y

  • Android中实现多行、水平滚动的分页的Gridview实例源码

    功能要求: (1)比如每页显示2X2,总共2XN,每个item显示图片+文字(点击有链接). 如果单行水平滚动,可以用Horizontalscrollview实现. 如果是多行水平滚动,则结合Gridview(一般是垂直滚动的)和Horizontalscrollview实现. (2)水平滚动翻页,下面有显示当前页的icon. 1.实现自定义的HorizontalScrollView(HorizontalScrollView.java): 因为要翻页时需要传当前页给调用者,所以fling函数中自己

  • Android GridView实现滚动到指定位置的方法

    当一个列表项目很多,并且每个项目可以进入到其它Activity或者Fragment时,保存之前列表的位置是一个比较不错的功能, 今天研究了一下怎么保存浏览位置,发现GridView和它的父类中有4个相关的方法: 复制代码 代码如下: public void smoothScrollToPosition (int position) 滚动到position指定的位置,api level 11之下可用 *当你滚动完后,返回列表,能正常滚动,但是你再次从列表的项目返回后,滚动失效,就是只能滚动一次,我

  • android 实现ScrollView自动滚动的实例代码

    有时候需要动态添加数据,屏幕显示满了,数据需要滚动展示.这里主要弄懂scrollTo(0, off)方法的含义喊用法. 含义不说了,大概意思就这样. 下面来看他的用法: 复制代码 代码如下: private void searchResultShow() { TextView textView = new TextView(AFSearchActivity.this);           textView.setText("Text View ");           Linear

  • android实现上下滚动的TextView

    一 说明    这里重要应用类 AutoTextView,这是一个自定义的类,继承至TextSwitcher,下面临 AutoTextView类做简要说明: 1. 该类应用的重点,在于设置两个动画, setInAnimation(...)  和 setOutAnimation(...),分离是文字进入的动画和文字退出的动画: 2. 类中定义了一个外部类-Rotate3dAnimation,重要靠该类实现文字进出动画,该外部类继承至Animation.说来偶合,这个恰好是在apiDemo中看到了,

  • Android实现字幕滚动的方法

    本文实例介绍了安卓Android实现字幕滚动效果的方法.主要是一个现成的Java类文件实现的,该程序由Android达人Tony编写,本次是转发,还望原作者Tony不要介意.这个Android字幕滚动类的自定义功能比较多,可定义当前滚动到结尾时的停顿时间,单位:毫秒,还可设置当前的滚动速度,值越小,速度越快. 主要实现代码如下: package com.tony.autoscroll; import android.content.Context; import android.os.Handl

  • android TextView不用ScrollViewe也可以滚动的方法

    代码 复制代码 代码如下: TextView textview = (TextView) findViewById(R.id.text);            /**             *              * 只有调用了该方法,TextView才能不依赖于ScrollView而实现滚动的效果.             * 要在XML中设置TextView的textcolor,否则,当TextView被触摸时,会灰掉.             */ textview.setMov

  • android ListView自动滚动方法

    复制代码 代码如下: <ListView android:id="listCWJ" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stackFromBottom="true" android:transcriptMode="alwaysScroll" />

  • android开发之横向滚动/竖向滚动的ListView(固定列头)

    由于项目需要,我们需要一个可以横向滚动的,又可以竖向滚动的 表格.而且又要考虑大数据量(行)的展示视图.经过几天的研究终于搞定,做了一个演示.贴图如下:      好吧.让我们看思路是什么样的: 1. 上下滚动直接使用 listView来实现. 2. 左右滚动使用HorizontalScrollView,来处理滚动.我写一个类MyHScrollView继承 自它. 2.1 . ListView里的每行(row)分为 两部分,不滚动的和可滚动的区域.比如本demo的第一列,就是静态的.而后面的所有

  • android开发教程之文本框加滚动条scrollview

    我们都知道EditText与TextView是Android的文本输入框和文本显示框,但是基于手机屏幕的大小因素,如果在需要输入较多文字或者显示较多内容的时候,手机屏幕是远远不够的,因此让文本框具有滚动条的功能是手机上必备的,下面介绍下如何加上滚动条.要加上滚动条,其实很简单,只需要在文本输入框或者文本显示框上面加上滚动条控件即可,该控件名字为ScrollView,以下我们对比下(以TextView举例). 复制代码 代码如下: //A.未加滚动效果 <TextView android:layo

随机推荐