Android类似于滚动的通知栏实现
控件类似于网页上的滚动播报栏
图片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类似于滚动的通知栏实现相关推荐
- android 底部通知,Android Fragment实现底部通知栏
Android Fragment实现底部通知栏,供大家参考,具体内容如下 截图如下: 1. 第一步先要创建fragment(动态注册) 然后将两个勾选取消掉(还有一种是自己手动创建) 会自动生成相对应 ...
- Android View滚动、拉伸到顶/底部弹性回弹复位
<Android View滚动.拉伸到顶/底部弹性回弹复位> 我在上一篇文章介绍了如何实现一个Android ListView拉到顶/底部后,像橡皮筋一样弹性回弹复位(<And ...
- Android 循环滚动控件ViewFlipper,可实现跑马灯或轮播图效果
ViewFlipper--Android循环滚动控件 1.效果如下: 2.实现方法 (1)创建进出动画 上下滚动动画 y_in.xml <?xml version="1.0" ...
- Android 上下滚动字幕实现
首先values文件夹下添加或创建attrs文件,如下: <?xml version="1.0" encoding="utf-8"?> <re ...
- android如何实现QQ信息通知,android NotificationListenerService监听通知栏(qq 微信 短信)...
[实例简介] android NotificationListenerService 监听通知栏,android NotificationListenerService 监听通知栏 android N ...
- android通知栏的点击事件,Android监听消息通知栏点击事件
Android监听消息通知栏点击事件 使用BroadCastReceiver 1 新建一个NotificationClickReceiver 类,并且在清单文件中注册!! public class N ...
- android开发文字滚动代码,android实现滚动文本效果
本文实例为大家分享了android实现滚动文本效果的具体代码,供大家参考,具体内容如下 效果图 实现方法 直接上代码 首先是一个自定义layout,继承自FrameLayout public clas ...
- android 底部回弹,Android View滚动、拉伸到顶/底部弹性回弹复位
<Android View滚动.拉伸到顶/底部弹性回弹复位> 我在上一篇文章介绍了如何实现一个Android ListView拉到顶/底部后,像橡皮筋一样弹性回弹复位(<And ...
- Android自定义滚动选择器
Android自定义滚动选择器 实现图片的效果 代码如下 package com.linzihui.widget;import android.annotation.SuppressLint; imp ...
最新文章
- docker load 出错 open /var/lib/docker/tmp/docker-import-837327978/bin/json: no such file or directory
- 第十五届全国大学生智能汽车竞赛 车模检查手册
- 题目1209:最小邮票数
- 【NLP】基于GloVe词向量的迁移学习
- md5与des算法有何不同_Python算法详解:为什么说算法是程序的灵魂?
- 斯坦福所倡导的设计思维_针对高科技项目的有效开发商倡导
- 【大数据】通过女票的淘宝历程,大白话讲解大数据各个方向的分工
- mysql 字符串 索引优化_轻松优化MySQL-之索引优化1
- 【渝粤教育】电大中专药物分析技术基础_1作业 题库
- 装ubuntu_系统安装_win10下安装Ubuntu后,启动时无win10选项的解决办法。
- “谷姐”社交搜索平台在深上线
- 用了40年,我们在元宇宙中打开了通往未来世界一道门
- 《最好的告别》:如何优雅地走向生命终点
- 获取当天日期的前一天或前几天,查询一天内的数据
- Dockerfile制作容器--ssh容器,详细步骤与指令介绍
- WebGIS前端框架(openlayers,mapbox,leaflet)图形图像底层渲染原理分析
- Ansys在高分屏电脑下的显示以及Fluent的图形显示界面黑屏问题
- 集智全球开源 聚合中国力量 Tungsten Fabric中文社区成立大会暨社区第一次全员大会成功举行
- android path拆分_Android知识总结——Path常用方法解析
- 【Python量化策略】SMA双均线策略
热门文章
- Linux扩展SWAP分区
- n阶乘的c语言代码,求10000的阶乘(c语言代码实现)
- python数据整理代码_熬夜整理的资料:分享Python数据可视化图表代码和案例给大家...
- 【Linux 内核 内存管理】内存管理架构 ④ ( 内存分配系统调用过程 | 用户层 malloc free | 系统调用层 brk mmap | 内核层 kmalloc | 内存管理流程 )
- 【Java 并发编程】线程锁机制 ( 悲观锁 | 乐观锁 | CAS 三大问题 | ABA 问题 | 循环时间长问题 | 多个共享变量原子性问题 )
- 【计算理论】计算理论总结 ( 下推自动机计算过程 | 上下文无关文法 CFG 转为下推自动机 PDA ) ★★
- 【Kotlin】Kotlin 委托 ( 使用 by 关键字进行接口委托 )
- js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)...
- 2019年猪年海报PSD模板-第四部分
- CodeForces - 833B The Bakery