Android系列讲座(1):Notification 与状态栏信息

简介:
本文为原创,如需转载,请注明作者和出处,谢谢!  

     Notification Toast 都可以起到通知、提醒的作用。但它们的实现原理和表现形式却完全不一样。 Toast 其实相当于一个组件( Widget )。有些类似于没有按钮的对话 框。而 Notification 是显示在屏幕上方状态栏中的信息。还有就是 Notification 需要用 NotificationManager 来管理,而 Toast 只需要简单地创建 Toast 对象即可。

下面来看一下创建并显示一个Notification的步骤。创建和显 示一个Notification需要如下5步:

1. 通过getSystemService方法获得一个NotificationManager对象。

2. 创建一个Notification对象。每一个Notification对应一个Notification对象。在这一步需要设置显示在屏幕上方状态栏的通知消息、通知消息前方的图像资源ID和发出通知的时间。一般为当前时间。

3. 由于Notification可以与应用程序脱离。也就是说,即使应用程序被关闭,Notification仍然会显示在状态栏 中。当应用程序再次启动后,又可以重新控制这些Notification。如清除或替换它们。因此,需要创建一个PendingIntent对象。该对象由Android系统负责维护,因此,在应用程序关闭后,该对象仍然不会被释放。

4. 使用Notification类的setLatestEventInfo方法设置Notification的详细信息。

5. 使用NotificationManager类的notify方法显示Notification消息。在这一步需要指定标识Notification的唯一ID。这个ID必须相对于同一个NotificationManager对象是唯一的,否则就会覆盖相同IDNotificaiton

心动不如行动,下面我们来演练一下如何在状 态栏显示一个Notification,代码如下:

//   第1步
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//   第2步
Notification notification =  new Notification(R.drawable.icon, "您有新消息了", System.currentTimeMillis());
//   第3步
PendingIntent contentIntent = PendingIntent.getActivity( this, 0, getIntent(), 0);
//   第4步
notification.setLatestEventInfo( this, "天气预报", "晴 转多云", contentIntent);
//   第5步
notificationManager.notify(R.drawable.icon, notification);

下面的代码使用showNotification方法显示了3Notification消息。

  

showNotification("今 天非常高兴", "今天考试得了全年级第一",
        "数学100分、语文99分、英语100分,yeah!", R.drawable.smile, R.drawable.smile);
showNotification("这是为什么呢?", "这 道题为什么会出错呢?", "谁有正确答案啊.",
        R.drawable.why, R.drawable.why);
showNotification("今天心情不好", "也 不知道为什么,这几天一直很郁闷.", "也许应该去公园散心了",
        R.drawable.why, R.drawable.wrath);
其中第 2 个和第 3 Notification 使用的是同一个 ID R.drawabgle.why ),因此,第 3 Notification 会覆盖第 2 Notification

在显示Notification时还可以设置显示通 知时的默认发声、震动和Light效果。要实现这个功能需要设置Notification类的defaults属性,代码如下:

  

notification.defaults = Notification.DEFAULT_SOUND;         //   使用默认的声音
notification.defaults = Notification.DEFAULT_VIBRATE;         //   使用默认的震动
notification.defaults = Notification.DEFAULT_LIGHTS;         //   使用默认的Light
notification.defaults = Notification.DEFAULT_ALL;             //   所有的都使用默认值
    注意:设置默认发声、震动和 Light 的方法是 setDefaults 。该 方法与 showNotification 方法的实现代码基本相同,只是在调用 notify 方法之前需要设置 defaults 属性( defaults 属性必须在 调用 notify 方法之前调用,否则不起作用)。在设置默认震动效果时还需要在 AndroidManifest.xml 文件中通过 <uses-permission> 标签设置 android.permission.VIBRATE 权限。

    如果要清除某个消息,可以使用NotificationManager类 的cancel方 法,该方法只有一个参数,表示要清除的NotificationID。使用cancelAll可以清除当前NotificationManager对象中的所有Notification

    运行本节的例子,单击屏幕上显示Notification的按钮,会显示如 图1所示的消息。每一个消息会显示一会,然后就只显示整个Android系统(也包括其他应用程序) 的Notification(只显示图像部分)。如图2所示。如果将状态栏拖下来,可以看 到Notification的详细信息和发出通知的时间(也就是Notification类的构造方法的第3个参数值),如图3所 示。当单击【清除通知】按钮,会清除本应用程序显示的所有Notification,清除后的效果如图4所示。

               图1


                图2


                图3


               图4

本文转自银河使者博客园博客,原文链接http://www.cnblogs.com/nokiaguy/archive/2010/07/13/1776190.html如需转载请自行联系原作者


银河使者

相关文章
|
11月前
|
Java Android开发
Android系统 修改无源码普通应用为默认Launcher和隐藏Settings中应用信息图标
Android系统 修改无源码普通应用为默认Launcher和隐藏Settings中应用信息图标
1392 0
|
11月前
|
编解码 开发工具 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
594 2
|
6月前
|
Java Unix Linux
Android Studio中Terminal运行./gradlew clean build提示错误信息
遇到 `./gradlew clean build`命令执行出错时,首先应检查错误信息的具体内容,这通常会指向问题的根源。从权限、环境配置、依赖下载、版本兼容性到项目配置本身,逐一排查并应用相应的解决措施。记住,保持耐心,逐步解决问题,往往复杂问题都是由简单原因引起的。
612 2
|
11月前
|
Android开发
Android 状态栏WiFi图标的显示逻辑
Android 状态栏WiFi图标的显示逻辑
293 0
|
8月前
|
API Android开发 开发者
Android经典实战之用WindowInsetsControllerCompat方便的显示和隐藏状态栏和导航栏
本文介绍 `WindowInsetsControllerCompat` 类,它是 Android 提供的一种现代化工具,用于处理窗口插入如状态栏和导航栏的显示与隐藏。此类位于 `androidx.core.view` 包中,增强了跨不同 Android 版本的兼容性。主要功能包括控制状态栏与导航栏的显示、设置系统窗口行为及调整样式。通过 Kotlin 代码示例展示了如何初始化并使用此类,以及如何设置系统栏的颜色样式。
367 2
|
8月前
|
API Android开发 Kotlin
Android实战经验分享之如何获取状态栏和导航栏的高度
在Android开发中,掌握状态栏和导航栏的高度对于优化UI布局至关重要。本文介绍两种主要方法:一是通过资源名称获取,简单且兼容性好;二是利用WindowInsets,适用于新版Android,准确性高。文中提供了Kotlin代码示例,并对比了两者的优缺点及适用场景。
606 1
|
9月前
|
API Android开发
Android 监听Notification 被清除实例代码
Android 监听Notification 被清除实例代码
|
10月前
|
API Android开发
31. 【Android教程】状态栏通知:Notification
31. 【Android教程】状态栏通知:Notification
684 1
|
10月前
|
存储 Android开发
详细解读Android获取已安装应用信息(图标,名称,版本号,包)
详细解读Android获取已安装应用信息(图标,名称,版本号,包)
177 0
|
11月前
|
XML 存储 测试技术
Android系统 添加动态控制SystemUI状态栏、导航栏和下拉菜单
Android系统 添加动态控制SystemUI状态栏、导航栏和下拉菜单
1815 1

热门文章

最新文章