前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android 实现自己定义状态栏通知(Status Notification)

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

作者头像
全栈程序员站长
发布2022-07-12 17:14:35
7620
发布2022-07-12 17:14:35
举报

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

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

android 实现自己定义状态栏通知(Status Notification)
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类的实例)。

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

代码语言:javascript
复制
//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)
android 实现自己定义状态栏通知(Status Notification)
android 实现自己定义状态栏通知(Status Notification)

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年12月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档