控件类似于网页上的滚动播报栏

图片1:

图片2:

如上图,实现滚动栏里多条消息的自切换;

点击后获取具体内容。

简单是实现代码:

public class PublicNoticeView extends LinearLayout {

private static final String TAG = "LILITH"; private Context mContext;private ViewFlipper viewFlipper;private View scrollTitleView;private Intent intent;

    Handler mHandler = new Handler(){        @Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stub            switch (msg.what) {case 1:

//bindNotices();                break;

case -1:break;            }        }    };

/**     * 构造     * @param context*/public PublicNoticeView(Context context) {super(context);        mContext = context;        init();        }

public PublicNoticeView(Context context,AttributeSet attrs) {super(context, attrs);        mContext = context;        init();

    }

/**     * 网络请求后返回公告内容进行适配*/protected void bindNotices() {// TODO Auto-generated method stub        viewFlipper.removeAllViews();int i = 0;while(i<5){            String text = "公告:中奖了 5000w-------";            TextView textView = new TextView(mContext);            textView.setText(text);            textView.setOnClickListener(new NoticeTitleOnClickListener(mContext,i+text));            LayoutParams lp = new LinearLayout.LayoutParams(                    LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);            viewFlipper.addView(textView,lp);            i++;        }    }

private void init(){        bindLinearLayout();        Message msg = new Message();        msg.what = 1;        mHandler.sendMessageDelayed(msg, 3000);

    }

/**     * 初始化自定义的布局*/public void bindLinearLayout() {        scrollTitleView = LayoutInflater.from(mContext).inflate(                R.layout.main_public_notice_title, null);        LayoutParams layoutParams = new LinearLayout.LayoutParams(                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);        addView(scrollTitleView, layoutParams);

        viewFlipper = (ViewFlipper) scrollTitleView                .findViewById(R.id.flipper_scrollTitle);        viewFlipper.setInAnimation(AnimationUtils.loadAnimation(mContext, android.R.anim.slide_in_left));        viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(mContext, android.R.anim.slide_out_right));        viewFlipper.startFlipping();        View v = viewFlipper.getCurrentView();

    }

/**     * 获取公告资讯*/public void getPublicNotices(){//网络请求获取    }

/**     * 公告title监听     * @author Nono     **/class NoticeTitleOnClickListener implements OnClickListener{private Context context;private String titleid;

public NoticeTitleOnClickListener(Context context, String whichText){this.context = context;this.titleid = whichText;        }public void onClick(View v) {// TODO Auto-generated method stub            disPlayNoticeContent(context,titleid);        }

    }

/**     * 显示notice的具体内容     * @param context     * @param titleid*/public void disPlayNoticeContent(Context context, String titleid) {// TODO Auto-generated method stub        Toast.makeText(context, titleid, Toast.LENGTH_SHORT).show();        intent = new Intent(context, InformationContentActivity.class);        intent.putExtra("tag", titleid);        ((Activity)context).startActivity(intent);    }

}

代码简单分析:
1.构造初始化,默认无网络情况下客户端两条信息滚动(比如公司简介,网址,以及一些介绍)。因为改两条数据我是xml写死的。没做点击处理。
具体布局xml:

?xml version="1.0" encoding="utf-8"?><LinearLayout android:layout_width="fill_parent"    android:layout_height="wrap_content" android:orientation="horizontal"    xmlns:android="http://schemas.android.com/apk/res/android">

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"         android:layout_width="wrap_content" android:layout_marginRight="10dip"        android:layout_height="fill_parent" android:src="@drawable/main_notice1"        android:layout_gravity="center" android:gravity="center"/><ViewFlipper android:layout_gravity="center" android:padding="5dip"        android:id="@+id/flipper_scrollTitle" android:background="@drawable/main_notice_bg"        android:layout_width="fill_parent" android:layout_height="fill_parent"        android:layout_margin="0.0dip" android:flipInterval="5000"        android:layout_weight="1.0">

<TextView android:gravity="center" android:id="@+id/scrollTile_hd"            android:layout_width="fill_parent" android:layout_height="fill_parent"            android:text="@string/default_notice1"/><TextView android:gravity="center" android:id="@+id/scrollTile_hm"            android:layout_width="fill_parent" android:layout_height="fill_parent"            android:text="@string/default_notice2" /></ViewFlipper></LinearLayout>

用ViewFliper作为滚动布局的root,5000秒滚动。至于上下滚,左右滚,效果可自定义;
2.网络请求获取数据:
public void getPublicNotices(){
//网络请求获取
}后,通过handler来刷新view
此处我模拟了一个
protected void bindNotices();
动态添加子view;
3.

<pre name="code" class="java"><pre name="code" class="java">protected void bindNotices() {// TODO Auto-generated method stub        viewFlipper.removeAllViews();int i = 0;while(i<5){            String text = "公告:中奖了 5000w-------";            TextView textView = new TextView(mContext);            textView.setText(text);            textView.setOnClickListener(new NoticeTitleOnClickListener(mContext,i+text));            LayoutParams lp = new LinearLayout.LayoutParams(                    LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);            viewFlipper.addView(textView,lp);            i++;        }    }

绑定前,我是把默认的两个view去掉了。然后动态添加,并给每个view设置监听事件
点击可以以dialog或是activity显示具体的数据和内容。

基本代码如上

总结:1.自定义view;
2.简单的借助了viewflipper控件;
3.动态添加view;
4.点击事件;

原文:http://blog.csdn.net/nono_love_lilith/article/details/7074800#

转载于:https://www.cnblogs.com/shanzei/archive/2012/04/06/2419384.html

Android类似于滚动的通知栏实现相关推荐

  1. android 底部通知,Android Fragment实现底部通知栏

    Android Fragment实现底部通知栏,供大家参考,具体内容如下 截图如下: 1. 第一步先要创建fragment(动态注册) 然后将两个勾选取消掉(还有一种是自己手动创建) 会自动生成相对应 ...

  2. Android View滚动、拉伸到顶/底部弹性回弹复位

     <Android View滚动.拉伸到顶/底部弹性回弹复位> 我在上一篇文章介绍了如何实现一个Android ListView拉到顶/底部后,像橡皮筋一样弹性回弹复位(<And ...

  3. Android 循环滚动控件ViewFlipper,可实现跑马灯或轮播图效果

    ViewFlipper--Android循环滚动控件 1.效果如下: 2.实现方法 (1)创建进出动画 上下滚动动画 y_in.xml <?xml version="1.0" ...

  4. Android 上下滚动字幕实现

    首先values文件夹下添加或创建attrs文件,如下: <?xml version="1.0" encoding="utf-8"?> <re ...

  5. android如何实现QQ信息通知,android NotificationListenerService监听通知栏(qq 微信 短信)...

    [实例简介] android NotificationListenerService 监听通知栏,android NotificationListenerService 监听通知栏 android N ...

  6. android通知栏的点击事件,Android监听消息通知栏点击事件

    Android监听消息通知栏点击事件 使用BroadCastReceiver 1 新建一个NotificationClickReceiver 类,并且在清单文件中注册!! public class N ...

  7. android开发文字滚动代码,android实现滚动文本效果

    本文实例为大家分享了android实现滚动文本效果的具体代码,供大家参考,具体内容如下 效果图 实现方法 直接上代码 首先是一个自定义layout,继承自FrameLayout public clas ...

  8. android 底部回弹,Android View滚动、拉伸到顶/底部弹性回弹复位

     <Android View滚动.拉伸到顶/底部弹性回弹复位> 我在上一篇文章介绍了如何实现一个Android ListView拉到顶/底部后,像橡皮筋一样弹性回弹复位(<And ...

  9. Android自定义滚动选择器

    Android自定义滚动选择器 实现图片的效果 代码如下 package com.linzihui.widget;import android.annotation.SuppressLint; imp ...

最新文章

  1. docker load 出错 open /var/lib/docker/tmp/docker-import-837327978/bin/json: no such file or directory
  2. 第十五届全国大学生智能汽车竞赛 车模检查手册
  3. 题目1209:最小邮票数
  4. 【NLP】基于GloVe词向量的迁移学习
  5. md5与des算法有何不同_Python算法详解:为什么说算法是程序的灵魂?
  6. 斯坦福所倡导的设计思维_针对高科技项目的有效开发商倡导
  7. 【大数据】通过女票的淘宝历程,大白话讲解大数据各个方向的分工
  8. mysql 字符串 索引优化_轻松优化MySQL-之索引优化1
  9. 【渝粤教育】电大中专药物分析技术基础_1作业 题库
  10. 装ubuntu_系统安装_win10下安装Ubuntu后,启动时无win10选项的解决办法。
  11. “谷姐”社交搜索平台在深上线
  12. 用了40年,我们在元宇宙中打开了通往未来世界一道门
  13. 《最好的告别》:如何优雅地走向生命终点
  14. 获取当天日期的前一天或前几天,查询一天内的数据
  15. Dockerfile制作容器--ssh容器,详细步骤与指令介绍
  16. WebGIS前端框架(openlayers,mapbox,leaflet)图形图像底层渲染原理分析
  17. Ansys在高分屏电脑下的显示以及Fluent的图形显示界面黑屏问题
  18. 集智全球开源 聚合中国力量 Tungsten Fabric中文社区成立大会暨社区第一次全员大会成功举行
  19. android path拆分_Android知识总结——Path常用方法解析
  20. 【Python量化策略】SMA双均线策略

热门文章

  1. Linux扩展SWAP分区
  2. n阶乘的c语言代码,求10000的阶乘(c语言代码实现)
  3. python数据整理代码_熬夜整理的资料:分享Python数据可视化图表代码和案例给大家...
  4. 【Linux 内核 内存管理】内存管理架构 ④ ( 内存分配系统调用过程 | 用户层 malloc free | 系统调用层 brk mmap | 内核层 kmalloc | 内存管理流程 )
  5. 【Java 并发编程】线程锁机制 ( 悲观锁 | 乐观锁 | CAS 三大问题 | ABA 问题 | 循环时间长问题 | 多个共享变量原子性问题 )
  6. 【计算理论】计算理论总结 ( 下推自动机计算过程 | 上下文无关文法 CFG 转为下推自动机 PDA ) ★★
  7. 【Kotlin】Kotlin 委托 ( 使用 by 关键字进行接口委托 )
  8. js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)...
  9. 2019年猪年海报PSD模板-第四部分
  10. CodeForces - 833B The Bakery