android 实现自己定义状态栏通知(Status Notification)

android 实现自己定义状态栏通知(Status Notification)

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

在android项目的开发中,有时为了实现和用户更好的交互,在通知栏这一小小的旮旯里,我们通常须要将内容丰富起来,这个时候我们就须要去实现自己定义的通知栏,比如以下360或者网易的样式:

android 实现自己定义状态栏通知(Status Notification)

首先我们要了解的是 自己定义布局文件支持的控件类型:Notification的自己定义布局是RemoteViews,因此,它仅支持FrameLayout、LinearLayout、RelativeLayout三种布局控件,同一时候支持AnalogClock、Chronometer、Button、ImageButton、ImageView、ProgressBar、TextView、ViewFlipper、ListView、GridView、StackView和AdapterViewFlipper这些UI控件。对于其它不支持的控件,使用时将会抛出ClassNotFoundException异常。

同一时候呢我们还要了解的是Notification支持的Intent类型(都是PendingIntent类的实例)。

以下就是详细的实现了:在这个通知栏里 我们放一个进度条

//Get the notification manager
    	String ns = Context.NOTIFICATION_SERVICE;
    	NotificationManager nm = 
    		(NotificationManager)ctx.getSystemService(ns);
    	
    	//Create Notification Object
		int icon = R.drawable.robot;
		CharSequence tickerText = "Hello";
		long when = System.currentTimeMillis();
		
		Notification notification = 
			new Notification(icon, tickerText, when);

		//Set ContentView using setLatestEvenInfo
	    Intent intent = new Intent(Intent.ACTION_VIEW);
	    intent.setData(Uri.parse("http://www.google.com"));
	    PendingIntent pi = PendingIntent.getActivity(ctx, 0, intent, 0);
//	    notification.setLatestEventInfo(ctx, "title", "text", pi);// 使用默认的样式
	    notification.contentIntent = pi;
	    notification.contentView = new RemoteViews(ctx.getPackageName(),R.layout.noti);
	    //Send notification
		nm.notify(1, notification);

实现的效果例如以下图:(右边为系统默认的样式)

android 实现自己定义状态栏通知(Status Notification)           android 实现自己定义状态栏通知(Status Notification)

这仅仅是一个简单的演示样例,为了实现我们自己的效果 我们仅仅须要改动布局文件就ok了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/118638.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java笔试题库及答案,看完必懂

    java笔试题库及答案,看完必懂阿里面试总结1.一面首先确认对阿里的意向度;其次面试官会针对你曾经做过的项目来做具体技术的交流,你对项目细节是不是掌握到位,以及java技术基础和原理掌握程序,比如并发编程以及数据库和JVM三个方面,也会交流到分布式、线程池的实现等等(重点考察有没有深入钻研技术和技术上的亮点);2.二面技术面,根据项目深入的了解技术实力,了解你的知识面、问题解决能力以及技术灵活运用能力,也通过这一过程考察团队合作能力、学习主动性和创新性,可以挑选2-3个做过的有典型性的项目做一个仔细技术回顾和自己独到的理解(这是加

  • SQL语句存储过程实例详解(面试宝典)「建议收藏」

    SQL语句存储过程实例详解(面试宝典)「建议收藏」本文用3个题目,从建立数据库到创建存储过程,详细讲解数据库的功能。这个问题面试的时候也是经常会用到的,比如写sql语句。题目1学校图书馆借书信息管理系统建立三个表:学生信息表:student字段名称数据类型说明stuIDchar(10)学生编号,主键stuName

  • MFC 读取EXCEL中数据[通俗易懂]

    MFC 读取EXCEL中数据[通俗易懂]MFC读取Excel例子(2013-01-1200:04:24)转载▼标签:365mfcit分类:MFC-office操作1.       首先要将excel类添加到工程中。在ClassWizard中,【AddClass】,在Excel的安装目录找到Excel.exe(Microsoft2003是Excel

  • mysql mediumtext 最大_mysql – TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT最大存储大小

    mysql mediumtext 最大_mysql – TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT最大存储大小上升到@Ankan-Zerob的挑战,这是我对每个文本类型中可以存储的最大长度的估计:Type|Bytes|Englishwords|Multi-bytewords———–+—————+—————+—————–TINYTEXT|255|±44…

  • 打印纸张尺寸换算_纸张尺寸对照表

    打印纸张尺寸换算_纸张尺寸对照表常用纸张的尺寸大小对照表-纸张规格对照表纸张的大小国际标准化组织的ISO216国际标准指明了大多数国家使用的标准纸张的尺寸。此标准源自德国,在1922年通过,定义了A、B、C三组纸张尺寸,C组纸张尺寸主要用于信封。另外,有些国家也有自己的标准,如美国,日本。这里主要是指办公用纸。下面是一些标准纸张的具体尺寸。单位:mmISO216AA0A1A2A3A4A5A…

  • python学习笔记 day22 面向对象(一)

    python学习笔记 day22 面向对象(一)1.人狗大战一个简单的小例子,定义一个Person(类)里面有人的很多属性,比如名字,性别,血量。攻击力,然后定义一个Dog(类),里面设置狗的很多属性,名字,血量,攻击力,种类等,然后又定义了两

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号