Android 中通知的基本使用

通知--一般当我在手记下拉的时候会发现一排信息提示(天气情况,qq消息,UC推荐,58推荐等等),这些就是通知。


通知分为三种:普通广播  自定义广播   大视图广播。

普通广播的创建:

通知的内容和属性:NotificationCompat内部的builder类进行通知的内容进行设置,各种set方法;

通知的属性:通过Notification实例的falg设置通知属性;

通知实例的获得:通过Builder类的builder()方法创建;

通知的发送:通过notificationManger的notify()方法发送通知;

普通通知的创建发送以及方法讲解:

1.创建Notification的builder类

NotificationCompat.Builder  builder=new NotificationCompat.Builder(this);

2.利用builder实例设置Notification属性:

//设置通知标题栏内容

builder.setContentTitle("通知的标题")

//设置通知详细信息栏内容

.setContentText("通知的内容")

//设置大小图标会在下main继续讲

.setSmallIcon(R.mipmap.ic_launcher)

.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.aa))

.setTicker("状态栏中提示内容")

//设置通知栏点击执行的意图 pendingIntent(也就是点击完成跳转);

.setContentIntent(pendingIntent)

//设置通知集合的数量(没用到过)

.setNumber(6)

//通知产生的时间,会在通知信息里显示,一般是系统获取到的时间

//如果不写,默认为通知发出时系统的时间;

.setWhen(System.currentTimeMillis())

//设置该通知优先级(在广播中用过这个属性)

.setPriority(Notification.PRIORITY_DEFAULT)

//设置这个标志当用户单击面板就可以让通知将自动取消

.setAutoCancel(false)

//点击或则侧滑通知,通知不会消失;利用它设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)

.setOngoing(true);

//提示模式

.setDefaults(Notification.DEFAULT_VIBRATE)

方法详解:

.setSmallIcon(R.mipmap.ic_launcher)

.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.aa))

.setTicker("状态栏中提示内容")

第一种:当只设置了SmallIcon没有设置LargeIcon的时候:SmallIcon的图标将会出现在LargeIcon的位置,而小图标位置将不会又图标。

第二中:当既有SmallIcon又有LargeIcon的时候,LargeIcon将会出现在LargeIcon位置,SmallIcon也会出现在SmallIcon的位置;

setTicker()是在通知发出的时候,在状态栏弹出的提示内容(弹出提示的内容又小图标和Ticker方法中的内容)

注意:小图标必须有,否则将无法显示通知;

.setPriority(Notification.PRIORITY_DEFAULT)//设置通知的优先级别

Notification.PRIORITY_DEFAULT     默认

Notification.PRIORITY_HIGH             高

Notification.PRIORITY_LOW              低 

Notification.PRIORITY_MAX              最高

Notification.PRIORITY_MIN               最低

.setDefaults(int defaults)(需要 VIBRATE permission) ;

功能:向通知添加声音、闪灯和振动效果的最简单、使用默认(defaults)属性,可以组合多个属性

对应属性:

Notification.DEFAULT_VIBRATE    //添加默认震动提醒  

Notification.DEFAULT_SOUND    // 添加默认声音提醒

Notification.DEFAULT_LIGHTS// 添加默认三色灯提醒

Notification.DEFAULT_ALL// 添加默认以上3种全部提醒


setVibrate(long[] pattern)设置自定义震动模式

//延迟0ms,然后振动200ms,在延迟200ms,接着在振动300ms。

.setVibrate(new long[] {0,200,200,300});


//设定自定义灯光

.setLights(int RGB,int onTime,int lowLight)

参数说明:

RGB 表示灯光颜色、 onTime亮持续时间、lowLight暗的时间。

注意:只有在设置了标志符Flags为Notification.FLAG_SHOW_LIGHTS的时候,才支持三色灯提醒。

这边的颜色跟设备有关,不是所有的颜色都可以,要看具体设备。


设定自定义音乐

setSound(Uri music)

.setSound(Uri.parse("file:///sdcard/xx/xx.mp3"))


进度条的说明:

setProgress(int  max  ,int  value  ,boolean  sure);

参数说明:

max---进度条最大值;

value---进度条当前值;

sure----进度条进度是否确定;

            true为进度条不确定,max与value就不会在进度条中显示;

             false进度条确定,max与value正常显示

进度条取消:setProgress(0, 0, false)

方法版本问题:4.0后才可以在buidler中调用setProgress()方法;


//获得Notification实例

NotificationCompat  notificaton=builder.buidler();

//通过Notification的flag设置属性;

设置属性代码:

notification.flags = Notification.FLAG_AUTO_CANCEL;

提醒标志符成员:

Notification.FLAG_SHOW_LIGHTS      //三色灯提醒,在使用三色灯提醒时候必须加该标志符

Notification.FLAG_ONGOING_EVENT   //发起正在运行事件(活动中)

Notification.FLAG_INSISTENT//让声音、振动无限循环,直到用户响应(取消或者打开)

Notification.FLAG_ONLY_ALERT_ONCE//发起Notification后,铃声和震动均只执行一次

Notification.FLAG_AUTO_CANCEL      //用户单击通知后自动消失

Notification.FLAG_NO_CLEAR         //只有全部清除时,Notification才会清除,不清楚该通知(QQ的通知无法清除,就是用的这个)

Notification.FLAG_FOREGROUND_SERVICE    //表示正在运行的服务



自定以通知的基本使用:

自定布局的创建:

RemoteViews mRemoteViews = new RemoteViews(String packageName, int layoutId);

参数说明:packageName :报名,通过getPackageName()

                  layoutId:加载自定义布局ID;


设置自定义布局的属性:

设置的图片属性

mRemoteViews.setImageViewResource(int viewId, int srcId);

参数说明   viewId  为自定义布局中,Button等布局的ID;

                  srcId  为需要设置图片的ID;

设置点击意图:

mRemoteViews.setOnClickPendingIntent(int viewId,PendingIntent pendingIntent);

参数说明:viewId    为自定义布局中,Button等布局的ID;

                  pendingIntent   为点击相应按钮需要执行的意图;

添加自定义布局:

mBuilder.setContent(mRemoteViews)

NotificationManager的发送,更新,删除

notificationManager.cancel(int ID);

参数说名:ID为发送通知的时候设置的ID;取消该ID;

notify(int id, Notification notification); // 将通知加入状态栏,,标记为id

参数说明:id相当于notification的一一对应标志;

// 在Android进行通知处理,首先需要重系统哪里获得通知管理器NotificationManager,它是一个系统Service。

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

还有大图风格---尚未完成

你可能感兴趣的:(Android 中通知的基本使用)