您的位置:首页 > 移动开发 > Android开发

Android之手机通知栏Notification介绍(一)

2016-07-01 23:09 731 查看

                                             Notification的介绍

一:Notification的简介

   Notification是显示在手机状态栏的通知,

手机状态栏位于手机屏幕的最上方,那里一般

显示了手机当前的网络状态,电池状态,时间等。

  Notification所代表的是一种具有全局效果的通知,

程序一般通过NotificationManager服务来发送Notification.

Android3.0增加Notification.Builder类,

通过该类允许开发者更轻松地创建Notification对象。

二:Notification使用的步骤:
a)获取NotificationManager对象

NotificationManager nm =getSystemService(NOTIFICATION_SERVICE);

b)创建Notification对象,有如下步骤:

    1)获取Notification.Builder对象

    2)调用Notification.Builder的setXXX方法设置属性.
其中的属性并不是全部设置,但是必须设置三项

        setSmallIcon(),setContentText(),setCotentTitle()。

    3)调用Notification.Builder的build方

     法创建Notification对象(Android 16之后)

c)通过NotificationManager发送Notification

     nm.notify(index,Notification);

注意:取消通知nm.cancel(index)

1)常用的属性方法:

setContentText():设置通知内容

setSamllIcon():为通知设置小图标

setContentTitle():设置通知标题

setLargeIcon():为通知设置大图标,使用BitmapFactory创建图片。

         Bitmap btm=BitmapFactory.decodeResource
(getResources(),R.drawable.msg);

setContentInfo()设置通知信息

setWhen(System.currentTimeMillis())设置时间

setContentIntent():设置点击通知后将要启动的程序组件对应的PendingIntent。

setAutoCancel():设置点击通知后,状态自动删除通知

setTicker():设置通知的提示内容

2)设置提示响应方法:

setDefaults():设置通知为默认音效、振动、闪屏.

     Notification.DEFAULT_SOUND:使用默认声音

     Notification.DEFAULT_VIBRATE:设置默认振动

     Notification.DEFAULT_LIGHTS:设置使用默认闪光灯

     Notification.ALL:设置使用默认声音,振动,闪光灯

setSound(Uri.parse("file:///sdcard/apple.mp3")):设置自定义声音

setVibrate(new long[]{10,50,100,150}):设置自定义振动.时长的单位是毫秒.
  数组中数字的含义依次是[静止时长,震动时长,静止时长,震动时长..] 

setLights(int argb, int onMs, int offMs):设定前置LED灯的闪烁速率,
持续毫秒数,停顿毫秒数

     注意:需要添加闪光灯和振动器的权限

      android.permission.FALSHLIGHT

      android.permission.VIBRATE

3)进度条样式的通知:

setProgress(int max,int progress,boolean indeterminate)

          方法用于设置进度条,max用于设定进度的最大数,
 progress用于设定当前的进度,
 indeterminate用于是否是一个确定进度值的进度条。
 通过indeterminate的设置,可以实现两种不同样式的进度条
 ,一种是有进度的(false),一种是循环流动的(true)。

4)Notification视觉风格:

   Notification有两种视觉风格,

   一种是标准视图(Normal view)、

   一种是大视图(Big view)。标准视图在Android中各版本是通用的,

   但是对于大视图而言,仅支持Android4.1+的版本。

   从官方文档了解到,一个标准视图显示的大小要保持在64dp高,

   宽度为屏幕标准。标准视图的通知主体内容有一下几个p1.png;
a)通知标题。
b)大图标。
c)通知内容。
d)通知消息。
e)小图标。
f)通知的时间,一般为系统时间,也可以使用setWhen()设置.

  而对于大视图(Big View)而言,它的细节区域只能显示256dp高度的内容,

  并且只对Android4.1+之后的设备才支持,使用NotificationCompat.Builder

  或者Notification.Builder来创建通知和设置通知的属性。

  它比标准视图不一样的地方,

  均需要使用setStyle()方法设定,它大致的效果如p2.png:

  setStyle()传递一个NotificationCompat.Style对象,

  它是一个抽象类,Android为我们提供了三个实现类,

  用于显示不同的场景。分别是:

NotificationCompat.BigPictureStyle, 在细节部分显示一个256dp高度的位图。

NotificationCompat.BigTextStyle,在细节部分显示一个大的文本块。

NotificationCompat.InboxStyle,在细节部分显示一段行文本。

  如果仅仅显示一个图片,使用BigPictureStyle是最方便的;

    如果需要显示一个富文本信息,则可以使用BigTextStyle;

    如果仅仅用于显示一个文本的信息,那么使用InboxStyle即可。

    后面会以一个示例来展示InboxStyle的使用,

       该内部类中的方法addLine()添加一行

                        setBigContentTitle:设置标题
setSummaryText:设置落名

4)自定义View通知:

  setContent(RemoteViews view)可以自定义view.

但是对于通知而言,因为它的全局性,并不能简

单的通过inflate获取出一个View,因为可能触发

通知的时候,响应的App已经关闭,无法获取当指

定的XML布局文件。所以需要使用单独的一个

RemoteViews类来操作。

   RemoteViews,描述了一个视图层次的结构,可以

显示在另一个进程。层次结构也是从布局文件中

“获取”出一个视图,这个类,提供了一些基本的

操作求改其布局的内容。

RemoteViews提供了多个构造函数,一般使用

RemoteViews(String packageName,int layoutId)。

第一个参数为包的名称,第二个为layout资源的Id。

当获取到RemoteViews对象之后,可以使用它的一系列

setXxx()方法通过控件的Id设置控件的属性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息