Android —— Notification(二)
来源:互联网 发布:linux安装内核开发包 编辑:程序博客网 时间:2024/05/22 02:40
- 基本Notification
- 折叠式Notification
- 悬挂式Notification
- 显示等级的Notification
Google在Android 5.0 上又进一步改进了通知栏,优化了Notification。当长按Notification的时候,会显示消息来源。Notification会有一个从白色到灰色的动画切换效果,最终显示发出这个Notification的调用者。同时,在Android 5.X 设备上,锁屏状态下我们也可以看见Notification通知了。
基本Notification
/** * 给点击Notification后要执行的操作增进一个Intent,由于这个Intent不是马上执行的,而是由用户触发的, * 所以Android给这样的Intent提供了一个PendingIntent来帮助完成这样的延迟操作。 */ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com")); // 构造PendingIntent PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); // 创建Notification对象 Notification.Builder builder = new Notification.Builder(this); // 设置Notification的各种属性 builder.setSmallIcon(R.mipmap.ic_launcher); builder.setContentIntent(pendingIntent); builder.setAutoCancel(true); builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); builder.setContentTitle("Basic Notifications"); builder.setContentText("I am a basic notification"); builder.setSubText("it is really basic"); // 通过NotificationManager来发出Notification NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); //调用notify方法时,需要传进去一个ID。每个Notification都会有一个ID,这个ID就是用来区分不同的APP的Notification的。 notificationManager.notify(NOTIFICATION_ID_BASIC, builder.build());
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
折叠式Notification
折叠式Notification也是一种自定义视图的Notification,常常用于显示长文本。它拥有两个视图状态,一个是普通状态下的视图状态,另一个是展开状态下的视图状态。
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.sina.com")); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); Notification.Builder builder = new Notification.Builder(this); builder.setSmallIcon(R.mipmap.ic_launcher); builder.setContentIntent(pendingIntent); builder.setAutoCancel(true); builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); //通过RemoteViews来创建自定义的Notification视图 RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification); contentView.setTextViewText(R.id.textView, "show me when collapsed"); RemoteViews expandedView = new RemoteViews(getPackageName(), R.layout.notification_expanded); Notification notification = builder.build(); //将一个视图指定为Notification正常状态下的视图 notification.contentView = contentView; //将一个视图指定为Notification展开时的视图 notification.bigContentView = expandedView; NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); nm.notify(NOTIFICATION_ID_COLLAPSE, notification);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
悬挂式Notification
这种被称为Headsup的Notification方式,可以在屏幕上方产生Notification且不会打断用户的操作,能给用户以Notification形式的通知。
Notification.Builder builder = new Notification.Builder(this) .setSmallIcon(R.mipmap.ic_launcher) .setPriority(Notification.PRIORITY_DEFAULT) .setCategory(Notification.CATEGORY_MESSAGE) .setContentTitle("Headsup Notification") .setContentText("I am a Headsup notification.") .setSubText("Heads-Up Notification on Android 5.0"); Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setClass(this, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); //通过setFullScreenIntent将一个Notification变成悬挂式Notification builder.setFullScreenIntent(pendingIntent, true); NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); nm.notify(NOTIFICATION_ID_HEADSUP, builder.build());
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
显示等级的Notification
Android 5.X 将Notification分成了三个等级。
- VISIBILITY_PRIVATE——表明只有当没有锁屏的时候会显示
- VISIBILITY_PUBLIC——标明在任何情况下都会显示
- VISIBILITY_SECRET——表明在pin、password等安全锁和没有锁的情况下才能够显示
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.visibility_radio_group); Notification.Builder builder = new Notification.Builder(this) .setContentTitle("Notification for Visibility Test") //设置Notification显示的位置 .setCategory(Notification.CATEGORY_EMAIL) //设置Notification背景颜色 .setColor(Color.RED); switch (radioGroup.getCheckedRadioButtonId()) { case R.id.radio_button_public: //设置Notification的显示等级 builder.setVisibility(Notification.VISIBILITY_PUBLIC); builder.setContentText("Public"); builder.setSmallIcon(R.mipmap.ic_public); break; case R.id.radio_button_private: builder.setVisibility(Notification.VISIBILITY_PRIVATE); builder.setContentText("Private"); builder.setSmallIcon(R.mipmap.ic_private); break; case R.id.radio_button_secret: builder.setVisibility(Notification.VISIBILITY_SECRET); builder.setContentText("Secret"); builder.setSmallIcon(R.mipmap.ic_secret); break; } NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); nm.notify(NOTIFICATION_ID_VISIBILITY, builder.build());
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
程序运行效果图如下:
阅读全文
0 0
- Android —— Notification(二)
- Android ApiDemo学习(二)notification——1 IncomingMessage
- Android Notification 基础 (二)
- Android ApiDemo学习(二)notification——3 NotifyWithText——Toast(提示)
- Android ApiDemo学习(二)notification——2 Notifying Service Controller
- Android——通知(Notification)
- Android——Notification(一)
- iOS开发——Push Notification(二)
- Android学习——Notification
- Android——Notification通知
- Android中的通知—Notification
- Android中的通知—Notification
- Android中的通知—Notification .
- Android中的通知—Notification
- Android—Notification通知详解
- Android中的通知—Notification
- Android中的通知—Notification
- Android组件11—Notification
- java中字符串反转
- Android应用程序开发以及背后的设计思想深度剖析(1)
- Android 开发者应该知道的学习站点
- c++标准输入输出流的控制符
- Java 数据库连接
- Android —— Notification(二)
- 牛人博客
- java中的迭代器
- 350. Intersection of Two Arrays II
- wxPython之解决闪烁
- codeforces #352(div1)-Robin Hood
- [绍棠] SourceTree过期,需要注册导入 SourceTree License 许可证
- 【初看TCP】基本知识与三次握手--使用echo服务抓包
- 素数判定的常用 【在线 or 离线】