Notification通知发出会会显示到任务栏中
1.先获取通知管理者:
//第一步:获取通知管理者! 这是一个系统级别的服务! manager = ((NotificationManager) getSystemService(NOTIFICATION_SERVICE));
任务栏中显示的通知样式有很多:
public void onClick(View view) { //创建一个通知建造者对象! final Notification.Builder builder = new Notification.Builder(this); switch (view.getId()) { case R.id.simple_bt: //简单的通知 小图片 文本和标题 基本上是 通知必备的属性 //设置通知展示的小图片 builder.setSmallIcon(R.mipmap.ic_launcher); //设置通知的标题 builder.setContentTitle("提示"); //设置通知展示的文本 builder.setContentText("欢乐代购~!!!!40抵100元!大家快来抢购数量有限!"); //使用Manager 将通知发送出去 //参数1 表示这个通知的id 自定义的 //参数2 通知对象 manager.notify(10, builder.build()); break; case R.id.volume_bt: //复杂的通知 builder.setSmallIcon(R.mipmap.ic_launcher_round); builder.setContentTitle("注意!"); builder.setContentText("敌军还有30秒抵达战场!我方士兵出击!"); //在任务栏里面显示文本提示 builder.setTicker("您有新消息来啦~"); //设置默认方式 builder.setDefaults(Notification.DEFAULT_ALL); //点击通知后 是否自动消失 builder.setAutoCancel(true); //点击通知跳转到另一个页面 Intent intent = new Intent(this, SecondActivity.class); /** * 定义一个PendingIntent 延迟意图 * 参数一:上下文对象 * 参数二: 请求码 * 参数三 :intent对象 * 参数四:表示类别 了解 * FLAG_ONE_SHOT 推荐使用 只是用这一次,对象就会回收 * FLAG_CANCEL_CURRENT 取消当前的再次创建一个 * FLAG_NO_CREATE 没有则创建 * FLAG_UPDATE_CURRENT 将当前的 更新后 再使用 */ PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); //设置延迟跳转 builder.setContentIntent(pendingIntent); //发送这个通知 manager.notify(11, builder.build()); break; case R.id.list_bt: //列表 builder.setSmallIcon(R.mipmap.ic_launcher); builder.setContentTitle("江南皮革厂倒闭了!"); builder.setContentText("买一送一买不了吃亏买不了上当!"); //设置列表 Notification.InboxStyle style = new Notification.InboxStyle(); builder.setStyle(style); String[] list = {"皮鞋不要钱", "皮带随便拿", "皮衣买一赠一", "要啥有啥", "不吃亏", "不上当!"}; style.setBigContentTitle("宣传:"); for (int i = 0; i < list.length; i++) { //添加列表中的每一行 style.addLine(list[i]); } //发送当前的通知 manager.notify(12, builder.build()); break; case R.id.big_bt: //大图 builder.setSmallIcon(R.mipmap.f007); builder.setContentTitle("新消息"); //创建大图Style Notification.BigPictureStyle bigPictureStyle = new Notification.BigPictureStyle(); //设置大图图片 bigPictureStyle.bigLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ddd)); //设置style builder.setStyle(bigPictureStyle); //发出通知 manager.notify(13, builder.build()); break; case R.id.progress_bt: //进度条 builder.setSmallIcon(R.mipmap.f007); builder.setContentTitle("下载进度:"); builder.setContentText("正在玩命儿加载中..."); //模拟一个下载过程 new Thread() { @Override public void run() { super.run(); for (int i = 0; i < 100; i++) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } /** * 参数1:最大值 * 参数2:当前的进度 * 参数3: 是否模糊显示 true就是模糊的 false 就是准确的 带有刻度的! */ builder.setProgress(100, i, false); manager.notify(16, builder.build()); } //下载完成后 取消通知 根据id 来进行操作! manager.cancel(16); //全部取消 // manager.cancelAll(); } }.start(); break; case R.id.custom_bt: //自定义的 //通知 显示的自定义视图必须使用这个视图对象 RemoteViews views = new RemoteViews(getPackageName(), R.layout.custom_layout); //设置视图对象图片 views.setImageViewResource(R.id.show_iv, R.mipmap.ddd); //设置视图文本 views.setTextViewText(R.id.show_tv, "大家好啊更新文本"); builder.setSmallIcon(R.mipmap.f007); // 设置自定义视图 builder.setCustomContentView(views); //发出通知 manager.notify(18, builder.build()); break; }