在 android 系统中,在应用程序可能会遇到几种情况需要通知用户,有的需要用户回应,有的则不需要,例如:

* 当保存文件等事件完成,应该会出现一个小的消息,以确认保存成功。

* 如果应用程序在后台运行,需要用户的注意,应用程序应该创建一个通知,允许用户在他或她的回应提供便利

* 如果应用程序正在执行的工作,用户必须等待(如装载文件),应用程序应该显示进度或等待提醒。

针对这些情况, android 都提供了不同的提醒方式。主要包括下面几种:

1. Toast Notification 是指出现在屏幕上的暂时性通知,这种通知用于传达一些告知类型的消息,短暂停留后会自动消失,无需用户交互。比如告知下载已完成等。 (Toast Noification 这个说法最早是源于一个前 MSN 员工的提法, 因为 MSN 的消息提醒是从底部向上轻弹,形式上很像一个面包从烤面包机中弹起的样子,所以称之为 Toast Noification 。 )

2. Status Bar Notification 是指以一个图标或者滚动条文本的形式出现在系统顶部状态栏上的通知。当应用程序处于后台运行状态时,这种方式比较合适。这种通知形式的好处是既能即使被关注到,又无需打断当前任务,可以从顶部下拉查看通知摘并做选择性处理。

3. Dialog Notification 类似于 iOS 的 Alert Notification ,以对话窗口的形式出现在屏幕上,用于重要或需及时处理的通知。

下面我们先了解以下 Android notification 的整个架构。前二种提醒方式都是由 NotificationManagerService ,而 Dialog Notification ,则是弹出一个窗口形 式实现的,因为这种提醒方式大多是针对当前应用程序或进程,所以它只是一种简单且直观的表达方式。

二、 Notification的使用

1.Toast
Toast 是 Android 中用来显示显示信息的一种机制,和 Dialog 不一样的是, Toast 是没有焦点的,而且 Toast 显示的时间有限,过一定的时间就会自动消失

  1. // 使用 TOAST 方法显示结果内容
  2. Toast textToast=Toast.makeText(this, " 提示内容 ", Toast.LENGTH_LONG);
  3. //... 这里也可以对 Toast 添加一些属性
  4. textToast.show();

2. StatusBar Notification

StatusBar Notification 是在系统状态栏上 增加了一个状态栏图标,并在“通知“窗口中显示提示信息。当用户选择展开邮件, Android 就会发送一个通知(通常是推出一个活动)定义的意向。您也可以配置通知,提醒和声音,震动的用户,并在设备上闪烁的灯光。

这样的通知是很理想的工作时,您的应用程序在后台服务,需要通知有关事件的用户。如果您需要提醒有关事件已经发生,而你的活动仍可以在当前焦点,此时可以考虑使用一个对话框通知代替。

StatusBar Notification 基本步骤如下:

1 )得到 NotificationManager :

  1. String ns = Context.NOTIFICATION_SERVICE;
  2. NotificationManager mNotificationManager = (NotificationManager) getSystemService( ns );

2 )创建一个新的 Notification 对象:

  1. Notification notification = new Notification();
  2. notification.icon = R.drawable.notification_icon;

也可以使用稍微复杂一些的方式创建 Notification :

  1. int icon = R.drawable.notification_icon; //通知图标
  2. CharSequence tickerText = "Hello"; // 状态栏 (Status Bar) 显示的通知文本提示
  3. long when = System.currentTimeMillis(); // 通知产生的时间,会在通知信息里显示
  4. Notification notification = new Notification(icon, tickerText, when) ;

3 )填充 Notification 的各个属性:

  1. Context context = getApplicationContext();
  2. CharSequence contentTitle = "My notification";
  3. CharSequence contentText = "Hello World!";
  4. Intent notificationIntent = new Intent(this, MyClass.class);
  5. PendingIntent contentIntent = PendingIntent.getActivity(this, 0,notificationIntent, 0);
  6. notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

Notification 提供了丰富的手机提示方式:

a) 在状态栏 (Status Bar) 显示的通知文本提示,如:

  1. notification.tickerText = "hello";

b) 发出提示音,如:

  1. notification.defaults |= Notification.DEFAULT_SOUND;
  2. notification.sound = Uri.parse("file:/ sdcard /notification/ringer.mp3");
  3. notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");

c) 手机振动,如:

  1. notification.defaults |= Notification.DEFAULT_VIBRATE;
  2. long[] vibrate = {0,100,200,300};
  3. notification.vibrate = vibrate ;

d)LED 灯闪烁,如:

  1. notification.defaults |= Notification.DEFAULT_LIGHTS;
  2. notification.ledARGB = 0xff00ff00;
  3. notification.ledOnMS = 300;
  4. notification.ledOffMS = 1000;
  5. notification.flags |= Notification.FLAG_SHOW_LIGHTS;

e) 添加 remote view

通过 RemoteViews 设置 notification 中 View 的属性

  1. notification.contentView = new RemoteViews(getApplication().getPackageName(), R.layout.custom_dialog);
  2. notification.contentView.setProgressBar(R.id.pb, 100, 0, false);
  3. notification.contentView.setTextViewText(R.id.tv, " 进度 " + _progress+ "%");

4 )发送通知:

  1. private static final int ID_NOTIFICATION = 1;
  2. mNotificationManager.notify(ID_NOTIFICATION, notification);

3.Dialog Notification

3.1 AlertDialog

为了创建一个警告对话框,使用 AlertDialog.Builder 子类。通过 AlertDialog.Builder

(Context) 获取一个构造器然后使用这个类的公共方法来定义警告对话框的所有属性。当得到构造器后,通过 create(). 方法来获取警告对话框对象。有时我是不调用 create() 的,而是在设置好了后直接调用 show() 显示 AlertDialog 。

  1. AlertDialog.Builder builder=newAlertDialog.Builder(this);
  2. builder.setMessage("Areyousureyouwanttoexit?") ;
  3. AlertDialog alert=builder.create();

3.2 ProcessDialog

ProgressDialog 是 AlertDialog 类的一个扩展,可以为一个未定义进度的任务显示一个旋转轮形状的进度动画,或者为一个指定进度的任务显示一个进度条。

  1. ProgressDialog progressDialog=newProgressDialog(getApplicationContext());
  2. progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
  3. progressDialog.setIcon(R.drawable.alert_dialog_icon);
  4. progressDialog.setMessage("Loading...");
  5. progressDialog.setCancelable(false);
 

3、android notification 详细用法的更多相关文章

  1. 2、android Service 详细用法

    定义一个服务 在项目中定义一个服务,新建一个ServiceTest项目,然后在这个项目中新增一个名为MyService的类,并让它继承自Service,完成后的代码如下所示: ? 1 2 3 4 5 ...

  2. 4、android BroadcastReceiver详细用法

    BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播. 在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这 ...

  3. Android logcat详细用法

      admin| 2011-10-29 11:16| 分类:学习文档| Android logcat | 评论:[0]| Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和 ...

  4. Android webservice的用法详细讲解

    Android webservice的用法详细讲解 看到有很多朋友对WebService还不是很了解,在此就详细的讲讲WebService,争取说得明白吧.此文章采用的项目是我毕业设计的webserv ...

  5. Android Notification通知详细解释

    Android Notification通知具体解释  Notification: (一).简单介绍:         显示在手机状态栏的通知. Notification所代表的是一种具有全局效果的通 ...

  6. Android命令行工具logcat详细用法!

    logcat是Android中一个命令行工具,可以用于得到程序的log信息. 见板凳详细说明!     本贴内容来自网络,引用网址为:http://hi.baidu.com/%C9%C1%D2%AB% ...

  7. android的logcat详细用法!

    from://http://www.miui.com/article-272-1.html [技术交流]android的logcat详细用法! logcat是Android中一个命令行工具,可以用于得 ...

  8. Android开发中Context类的作用以及Context的详细用法

    Android中Context的作用以及Context的详细用法 本文我们一起来探讨一下关于Android中Context的作用以及Context的详细用法,这对我们学习Android的资源访问有很大 ...

  9. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

随机推荐

  1. Android_按两次返回键退出程序和长按返回键退出程序

    以上两个功能主要是参考了一下博客的: http://blog.csdn.net/chenshijun0101/article/details/7682210 http://blog.csdn.net/ ...

  2. C语言笔试常考知识点

    1. const 关键字 a)  const int a; b)  int const a; c)  const int *a; d)  int * const a; e)  int const * ...

  3. PDO处理大批量数据的入库

    <?php //最东端 东经135度2分30秒 //最西端 东经73度40分 //最南端 北纬3度52分 //最北端 北纬53度33分 //转换为度的单位$dbName = 'txhl';//数 ...

  4. [CCF] Z字形扫描

    CCF Z字形扫描 感觉和LeetCode中的ZigZag还是有一些不一样的. 题目描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z ...

  5. SerialChat与Arduino的配合使用

    最近在开发过程中,用到了Arduino开发板以及其IDE:Arduino,这个IDE使用起来很方便,编码也很简单,但有一点美中不足的是Arduino只能输出数值,不能绘图,所以就用到了另外一款串口调试 ...

  6. python文件和目录操作方法大全(含实例)

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目 ...

  7. EasyUI中动态生成标签页

    这是最近学到的内容,当时是有思路但是不知道怎么获取当前的点击对象,就没有实现功能,通过更深入的学习,我知道了不仅仅是Java,Oracle中有一个this,同样的EasyUI中也存在一个this,来获 ...

  8. XMLHttpRequest 加载进度

    XMLHttpRequest 相关资料请移步这里直接查看,我这里就不在赘述: https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpReque ...

  9. iOS - Git 代码版本管理

    1.Git Git 是用 C 语言开发的分布版本控制系统.版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态).另一个状态可以是不同的文件,也可以是不同的文件内容. ...

  10. PHP的autoload机制的实现解析

    在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实现对类进行复用,同时将来维护时也很便利 一.autoload机制概述 在使用PHP的OO模式开发系 ...