Notification(状态栏通知)

一、Notification用于状态栏显示通知的控件,在不同的设备上面Notification是不一样的

二、Notification的基本布局

元素组成:

Icon/Photo:大图标   Tiltle/Name:标题  Message:内容消息 Timestamp:通知的时间,默认是系统发出的时间,也可以通过setWhen()来设置  secondary Icon小图标

三、Notification的使用基本使用流程

状态通知栏主要涉及到了两个类:Notification和NotificationManager

Notification:通知信息类,他里面对应了通知栏的各个属性

NotificationManager:是状态栏通知的管理类,负责发通知、清楚通知等操作

step1:获得NotificationManager对象 NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

step2:创建一个通知栏的Builder构造类,Notification.Builder builder = new Notification.Builder(this);

step3:对Builder进行相关的设置,比如标题,内容,图标动作

step4:调用Builder的build()方法为notification赋值

step5:调用NotificationManager的notify()方法发送通知

此外我们还可以调用NotificationManager的cancel()方法取消通知

四、设置相关的一些方法

Notification.Builder mBuilder = new Notification.Builder(this);

后再调用下述的相关的方法进行设置,常用的方法如下:

  • setContentTitle(CharSequence):设置标题
  • setContentText(CharSequence):设置内容
  • setSubText(CharSequence):设置内容下面一小行的文字
  • setTicker(CharSequence):设置收到通知时在顶部显示的文字信息
  • setWhen(long):设置通知时间,一般设置的是收到通知时的System.currentTimeMillis()
  • setSmallIcon(int):设置右下角的小图标,在接收到通知的时候顶部也会显示这个小图标
  • setLargeIcon(Bitmap):设置左边的大图标
  • setAutoCancel(boolean):用户点击Notification点击面板后是否让通知取消(默认不取消)
  • setDefaults(int):向通知添加声音、闪灯和振动效果的最简单、 使用默认(defaults)属性,可以组合多个属性,
    Notification.DEFAULT_VIBRATE(添加默认震动提醒);
    Notification.DEFAULT_SOUND(添加默认声音提醒);
    Notification.DEFAULT_LIGHTS(添加默认三色灯提醒)
    Notification.DEFAULT_ALL(添加默认以上3种全部提醒)
  • setVibrate(long[]):设置振动方式,比如:
    setVibrate(new long[] {0,300,500,700});延迟0ms,然后振动300ms,在延迟500ms,
    接着再振动700ms,关于Vibrate用法后面会讲解!
  • setLights(int argb, int onMs, int offMs):设置三色灯,参数依次是:灯光颜色,
    亮持续时间,暗的时间,不是所有颜色都可以,这跟设备有关,有些手机还不带三色灯;
    另外,还需要为Notification设置flags为Notification.FLAG_SHOW_LIGHTS才支持三色灯提醒!
  • setSound(Uri):设置接收到通知时的铃声,可以用系统的,也可以自己设置,例子如下:
    .setDefaults(Notification.DEFAULT_SOUND) //获取默认铃声
    .setSound(Uri.parse("file:///sdcard/xx/xx.mp3")) //获取自定义铃声
    .setSound(Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "5"))
    //获取Android多媒体库内的铃声

  • setOngoing(boolean):设置为ture,表示它为一个正在进行的通知。他们通常是用来表示
    一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,
    同步操作,主动网络连接)

  • setProgress(int,int,boolean):设置带进度条的通知
    参数依次为:进度条最大数值,当前进度,进度是否不确定
    如果为确定的进度条:调用setProgress(max, progress, false)来设置通知,
    在更新进度的时候在此发起通知更新progress,并且在下载完成后要移除进度条
    ,通过调用setProgress(0, 0, false)既可。如果为不确定(持续活动)的进度条,
    这是在处理进度无法准确获知时显示活动正在持续,所以调用setProgress(0, 0, true)
    ,操作结束时,调用setProgress(0, 0, false)并更新通知以移除指示条
  • setContentIntent(PendingIntent):PendingIntent和Intent略有不同,它可以设置执行次数,
    主要用于远程服务通信、闹铃、通知、启动器、短信中,在一般情况下用的比较少。比如这里通过
    Pending启动Activity:getActivity(Context, int, Intent, int),当然还可以启动Service或者Broadcast
    PendingIntent的位标识符(第四个参数):
    FLAG_ONE_SHOT 表示返回的PendingIntent仅能执行一次,执行完后自动取消
    FLAG_NO_CREATE 表示如果描述的PendingIntent不存在,并不创建相应的PendingIntent,而是返回NULL
    FLAG_CANCEL_CURRENT 表示相应的PendingIntent已经存在,则取消前者,然后创建新的PendingIntent,
    这个有利于数据保持为最新的,可以用于即时通信的通信场景
    FLAG_UPDATE_CURRENT 表示更新的PendingIntent
    使用示例:

    //点击后跳转Activity
    Intent intent = new Intent(context,XXX.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
    mBuilder.setContentIntent(pendingIntent)
  • setPriority(int):设置优先级:

    优先级 用户
    MAX 重要而紧急的通知,通知用户这个事件是时间上紧迫的或者需要立即处理的。
    HIGH 高优先级用于重要的通信内容,例如短消息或者聊天,这些都是对用户来说比较有兴趣的。
    DEFAULT 默认优先级用于没有特殊优先级分类的通知。
    LOW 低优先级可以通知用户但又不是很紧急的事件。
    MIN 用于后台消息 (例如天气或者位置信息)。最低优先级通知将只在状态栏显示图标,只有用户下拉通知抽屉才能看到内容。

    对应属性:Notification.PRIORITY_HIGH..

五、基本使用实例

package com.example.test3;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.Button; public class MainActivity extends Activity implements View.OnClickListener{
private Button btn1;
private Button btn2;
// 两个相关类
private NotificationManager manager;
private Notification notification;
private static final int NOTIFYID_1 = 1;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
} @Override
public void onClick(View view) { switch (view.getId()){
case R.id.btn1:{
// 定义一个PendingIntent,点击Intent可以启动一个新的Intent
Intent intent = new Intent(MainActivity.this,OtherActivity.class);
PendingIntent pit =PendingIntent.getActivity(MainActivity.this,0,intent,0);
// 设置图片文字提示方式等等
Notification.Builder builder = new Notification.Builder(MainActivity.this);
builder.setContentTitle("叶良辰") //标题
.setContentText("我有一百种方法让你呆不下去~") //内容
.setSubText("——记住我叫叶良辰") //内容下面的一小段文字
.setTicker("收到叶良辰发送过来的信息~") //收到信息后状态栏显示的文字信息
.setWhen(System.currentTimeMillis()) //设置通知时间
.setSmallIcon(R.mipmap.ic_account) //设置小图标
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
.setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE) //设置默认的三色灯与振动器
.setAutoCancel(true) //设置点击后取消Notification
.setContentIntent(pit);
notification = builder.build();
manager.notify(NOTIFYID_1,notification);
break;
}
case R.id.btn2:{
manager.cancel(NOTIFYID_1);
break;
}
}
}
}

android中提示&对话框----Notification的更多相关文章

  1. android中提示&对话框----AlertDialog

    AlertDialog(对话框) 一.对话框的基本使用流程 step1:创建AlertDialog.Buider; step2:调用setIcon()设置图标,setTitle()或者setCusto ...

  2. android中提示&对话框----ProgressDialog&DatePickerDialog &TimePickerDialog&PopupWindow

    ProgressDialog(精度条对话框): 1.直接调用ProgressDialog提供的静态方法show()显示 2.创建ProgressDialog,再设置对话框的参数,最后show()出来 ...

  3. android中提示&对话框----Toast

    Toast(吐司) 一.Toast吐司是一种消息提示框,在手机屏幕中显示一个消息提示框,没有任何按钮,也不会获得焦点,一段时间后自动消失,常常在调试的时候用的较多. 二.使用 (1)直接调用Toast ...

  4. Android中的对话框AlertDialog使用技巧合集-转载

    Android中的对话框AlertDialog使用技巧合集     文章来自:http://blog.csdn.net/blue6626/article/details/6641105   今天我用自 ...

  5. Android中的通知—Notification 自定义通知

    Android中Notification通知的实现步骤: 1.获取NotificationManager对象NotificationManager的三个公共方法:①cancel(int id) 取消以 ...

  6. Android中Dialog对话框的调用及监听

    Android中经常会需要在Android界面上弹出一些对话框提示用户,比如App的退出的时候都会有各种框来挽留你的心,支付宝的时候输入密码的密码框,非常常见及其实用的功能,类似于JS中的alter, ...

  7. Android中Dialog对话框

    布局文件xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...

  8. android中常见对话框之一AlertDialog

    在Android应用中,有多种对话框:Dialog.AlertDialog.ProgressDialog.时间.日期等对话框. (1)Dialog类,是一切对话框的基类,需要注意的是,Dialog类虽 ...

  9. 【Android】Android中AlertDialog对话框的使用实例

    package com.ceac.deng; import android.R.string; import android.support.v7.app.ActionBarActivity; imp ...

随机推荐

  1. 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】

    点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...

  2. mysql六:数据备份、pymysql模块

    一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 掌握: #1. 测试+链接数据库 #2. 新建库 #3. 新建表,新增字段+类型+约束 #4. 设计表 ...

  3. 使用natapp本地映射外网服务

    官网:https://natapp.cn/ 软件很好用,这对于前端工程师来说,有了这个工具就很爽了,当你的领导或者不在你公司内网范围内的人,想要看你的页面效果,就很简单了. 详细的不用更多介绍,直接去 ...

  4. Disharmony Trees HDU - 3015

    Disharmony Trees HDU - 3015 One day Sophia finds a very big square. There are n trees in the square. ...

  5. A1055 The World's Richest(25 分)

    A1055 The World's Richest(25 分) Forbes magazine publishes every year its list of billionaires based ...

  6. TI C6000优化手册——让代码看起来像钉子

    DSP芯片的出现,是为了解决大量的数字运算问题.通过集成专用的加法器.乘法器.地址产生器.复杂逻辑等硬件单元,DSP能实现比普通单片机更快速的数字运算,使处理器更适用于实时性高.复杂度强的处理场合.也 ...

  7. thinkpad alert键一直处于按着的状态

    就是alert 一直默认按着的,具体原因,我还没有见过. 但是解决方法很简单,crlt+alert一块按,就好了.

  8. 1、IOS学习计划

    2015年12月10日 -- 2015年12月27日(一共3个周末,12个个工作日) 1.斯坦福公开课(IOS7应用开发) 一共18节课程,通过视频和demo建立感觉 2.千峰的OC课程 一共25节课 ...

  9. php字符串 函数

    strtolower()//字符串转化小写的字母 $str="abcdEfG";$s=strtolower($str); 输出:abcdefg; strtoupper();字符串转 ...

  10. sqlserver释放内存

    create procedure sp_clearmemasbegin dbcc freeproccache dbcc freesessioncache dbcc freesystemcache('a ...