Android 弹无虚发之第四弹:你应该掌握的Notification(Notification的通知栏常驻、Notification的各种样式、Notification点击无效)

Android的Notification是android系统中很重要的一个机制,产品人员常常利用通知栏的方式,跟用户进行弱沟通。拥有推送通知的app要比没有此类功能的app活跃率要高很多。另外类似于墨迹天气,清理大师等app,也会将通知栏常驻,利用自定义的布局,方便用户及时快捷的查看所需的信息和使用快捷的功能。所以Notification的使用,也在开发当中,使用的越来越频繁。今天我就来跟大家分享一下Notification的常用事项。

我不了解大家平时怎么使用Notification,我常常看到有些人的代码是这样写的:

Notification notification=new Notification(notificationIcon, notificationTitle, when);  
          
        notification.defaults=Notification.DEFAULT_ALL;  
          
        Intent intent=new Intent(MainActivity.this,SecondActivity.class);  
        PendingIntent pendingIntent=PendingIntent.getActivity(MainActivity.this, 0, intent, 0);  
        notification.setLatestEventInfo(this,"测试展开title", "测试展开内容",pendingIntent); 
。。。。。。。。。。。。。

具体的代码我就不贴全了,因为大家如果注意IDE的提示的话,就会发现,其实这是一种不推荐的用法,API的支持已经过时了。最新的Notification的用法,是推荐使用V4包下的NotificationCompat.Builder,利用它,进行各种设置,具体的用法先别着急,我们慢慢道来。

		NotificationCompat.Builder notifyBuilder = new NotificationCompat.Builder(
				this);
首先,我们需要先初始化一个notifyBuilder,然后利用它的各种set方法,进行相关设置,具体的设置,我们参考下图:

图示中的序号1,叫做Content title,通过这个方法来设置:

notifyBuilder.setContentTitle("This is My Notification");

图示中的序号3,叫做Content text,利用下面的方法来设置:

notifyBuilder.setContentText("Hello World");
图示中的需要5,叫做Small icon,利用下面的方法来设置:

notifyBuilder.setSmallIcon(R.drawable.small);
这三个参数的设定是必须的,每次调用Notification,必须得设定这三个参数。除去这三个以外,另外的2,4,6区域,分别是Large Icon,Content Info,Time,设置方法如下所示:

		// 如果不设置LargeIcon,那么系统会默认将上面的SmallIcon显示在通知选项的最左侧,右下角的小图标将不再显示
		Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.bigicon);
		notifyBuilder.setLargeIcon(bitmap);
		// 这里用来显示右下角的数字
		notifyBuilder.setNumber(10);
		notifyBuilder.setWhen(System.currentTimeMillis());

以上就是关于Notification的基本设置,下面,我们继续看看其它方面的设置,直接上代码:

// 将AutoCancel设为true后,当你点击通知栏的notification后,它会自动被取消消失
		notifyBuilder.setAutoCancel(true);
		// 将Ongoing设为true 那么notification将不能滑动删除
		// notifyBuilder.setOngoing(true);
		// 从Android4.1开始,可以通过以下方法,设置notification的优先级,优先级越高的,通知排的越靠前,优先级低的,不会在手机最顶部的状态栏显示图标
		notifyBuilder.setPriority(NotificationCompat.PRIORITY_MAX);
		// notifyBuilder.setPriority(NotificationCompat.PRIORITY_MIN);

		notifyBuilder.setTicker("Hi,Notification is here");
		
		// Uri uri =
		// Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.cat);
		// Uri uri = Uri.parse("file:///mnt/sdcard/cat.mp3");
		// notifyBuilder.setSound(uri);

		// Notification.DEFAULT_ALL:铃声、闪光、震动均系统默认。
		// Notification.DEFAULT_SOUND:系统默认铃声。
		// Notification.DEFAULT_VIBRATE:系统默认震动。
		// Notification.DEFAULT_LIGHTS:系统默认闪光。
		// notifyBuilder.setDefaults(Notification.DEFAULT_ALL);

		NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
		mNotificationManager.notify(NOTIFY_ID, notifyBuilder.build());
如上面的注释所示,如果你想点击完notification后,该通知自动消失,那么你就需要调用setAutoCancel(boolean b)这个方法,并且将其设为true,如果你想让你的通知栏常驻,用户无法滑动删除,也不能通过手机的清除键 删除,类似于墨迹天气等app的通知栏,那么你可以设置setOngoing方法,也设为true,这样,通知栏只能通过代码调用cancel方法才能消失,很霸道地,有木有!另外,从Android4.1时代开始,系统允许设置Notification的优先级,对于优先级高的通知,会排在 通知栏的前面,并在会在手机最上端的Status Bar显示一个图标,如果优先级设定的较低,那么就会被系统显示在通知栏的后面,并且Status Bar不再显示相应的图标,设置优先级的方法,就是调用setPriority(int p)。另外,当启动通知栏的时候,我们常常可以在手机最上端的Status Bar上面,会闪现一段提示语,用来提醒用户,这段提示语具体显示的文字,就是靠setTicker() 这个方法来实现的。除此之外,我们还可以设置,推送通知时的铃声、震动效果,闪光灯效果等等,具体的我就不一一列举了,参考上面的示例代码即可,需要注意一点的是,设置通知的铃声,除去调用系统自带的外,还有两种方式,分别是调用SD卡中的声音文件和项目工程自带的声音文件,这两种方式都需要用到Uri的地址,具体如何获取这两种的Uri,我已经在上面的代码中,写的很详细了,大家可以参考上面的代码,在自己的项目中实验一下。

说了这么多,还有最重要的一点没有讲,那就是在你设置完notification的各种属性后,你需要启动这个notification,否则就前功尽弃了,启动的方法,如上面的示例代码所示,你需要先获取一个NotificationManager的实例,然后调用notify的方法,notifyBuilder.build()这个方法,可以实例化一个notification的实例,另外,你还需要为这个notification分配一个独一无二的的id号,将来notification的更新和删除,都是依靠这个id号来做索引对应的。

  • 9
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值