Notification通知

Notification是用于在状态栏显示通知信息的控件。

实现通知的功能其实很简单,

那么,第一步:

       我们需要一个Manager,获取系统的NotificationManager;

NotificationManager manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);

       然后创建一个builder用来设置通知属性,例如标题title,图标icon,内容等,并通过Builder构建Notification对象

Notification.Builder builder=new Notification.Builder(***.this);

设置大图标

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher);

builder.setLargerIcon(bitmap);

设置消息来时的消息

builder.setTicker("你有一条消息");

设置通知栏标题

builder.setContentTitle("这是通知栏标题");

 设置通知内容

builder.setContentText("这是通知内容");

 设置小图标

builder.setSmallIcon(R.mipmap.ic_launcher);

设置点击取消通知

builder.setDefaults(Notification.FLAG_AUTO_CANCEL);

或者(builder.setAutoCancel(true))

侧滑不消失

builder.setOngoing(true);

创建一个PendingIntent跳转,表明点击要执行的跳转

Intent intent = new Intent(***.this,***1.class);

PendingIntent pendingIntent=PendingIntent.getActivity(***.this,100,intent,PendingIntent.FLAG_UPDATE_CURRENT)

上面有四个参数,

第一个参数是传上下文对象;

第二个参数是返回的状态码;

第三个参数是跳转的Intent

第四个参数是通知与页面的更新类型

关于第四个参数的其他类型:

  FLAG_ONE_SHOT    表示返回的PendingIntent仅能执行一次,执行完后自动取消

  FLAG_NO_CREATE    表示如果描述的PendingIntent不存在,并不创建相应的PendingIntent,而是返回NULL

  FLAG_CANCEL_CURRENT   表示相应的PendingIntent已经存在,则取消前者,然后创建新的PendingIntent

  FLAG_UPDATE_CURRENT   表示更新的PendingInt

然后执行pendingIntent

builder.setContentIntent(pendingIntent);

根据builder创建notification

Notification notification=builder.builder();

利用manager将通知显示出来

manager.notif(100,nitofication);


同样,如果想手动取消通知,先拿到manager

然后取消通知(根据id号确定对象);

manager.cancelAll();取消全部通知

manager.cacell(ID);取消相应id的通知

设置自定义通知

如果想自定义通知的样式,利用RemoteViews也可以做到;

RemoteViews是一种远程的View,表示的是一种View结构,它可以在其他进程中显示,

由于在其他进程中显示,所以不能通过findViewById的方法来获取到RemoteVIew中的控件,

为了能够更新界面,RemoteVIews提供了一系列的方法用于跨进程更新UI,

具体方法:

首先创建remoteViews对象

RemoteViews view =new  RemoteVIews(getPackageName(),R.layout.****布局文件****);

设置RemoteView对象属性

views.setTextViewText(R.id.****,“要更改的内容”);

builder.setContent(views);

设置自定义通知的点击事件;

创建一个PendingIntent

Intent intent1=new Intent(*****.this,******.class);

PendingIntent pendingIntent1=PendingIntent.getActivity(****.this,100,intent1,PendingIntent.FLAG_UPDATE_CURRENT);

设置并关联响应事件

views.setOnClickpendingIntent(R.id.***,PendingIntent1);

















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值