-
实现的效果:
是一个滚动的公告栏,是这样的:
可以看到这个公告栏一方面是滚动,另外一方面是可点击。
实现的思路:
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地址>> -
文章来源:http://blog.csdn.net/ganshenml/article/details/53384939
Android 滚动的公告栏
最新推荐文章于 2023-12-20 10:13:37 发布
-
实现的效果:
是一个滚动的公告栏,是这样的:
可以看到这个公告栏一方面是滚动,另外一方面是可点击。
实现的思路:
1.textView放在ViewFlipper中实现滑动效果(可设置左右、或者上下滚动),很明显这应该是自定义view;
2.利用textView的点击事件即可实现点击;
OK,先看看自定义view的代码:
然后,主Activity异常简单(还是封装得好):
Git地址>> -
文章来源:http://blog.csdn.net/ganshenml/article/details/53384939