简单实现Android滚动公告栏

Danica ·
更新时间:2024-11-14
· 667 次阅读

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

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

实现的思路:

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开发之横向滚动/竖向滚动的ListView(固定列头)android实现上下滚动的TextViewandroid TextView不用ScrollViewe也可以滚动的方法Android中实现多行、水平滚动的分页的Gridview实例源码android 实现ScrollView自动滚动的实例代码android开发教程之文本框加滚动条scrollviewandroid ListView自动滚动方法Android GridView实现滚动到指定位置的方法Android实现字幕滚动的方法android listview 水平滚动和垂直滚动的小例子



公告栏 Android

需要 登录 后方可回复, 如果你还没有账号请 注册新账号