今天总结了一下Notification的使用,与大家分享一下。

MainActivity.java:

本文参考:http://www.jb51.net/article/36567.htmhttp://www.cnblogs.com/linjiqin/archive/2011/12/14/2288074.html

public class MainActivity extends Activity {

    private Button btn;
private NotificationManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// showNotification();
// showNotification2();
// showNotification3();
// showNotification4();
// showNotification5();
showNotification6();
this.btn = (Button) this.findViewById(R.id.button1);
this.btn.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
clearNotification();
}
});
}
/**
* 自定义Notification布局
*/
private void showNotification6() {
RemoteViews remoteViews = new RemoteViews(getPackageName(),
R.layout.custom_notification);
Intent intent = new Intent(this, SecondActivity.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
intent, 0);
//点击时给SecondActivity发送一条广播
remoteViews.setOnClickPendingIntent(R.id.paly_pause_music,
pendingIntent);
Intent intent1 = new Intent(this,SecondActivity.class);
remoteViews.setOnClickPendingIntent(R.id.paly_pause_music, PendingIntent.getActivity(this, 0, intent1, 0));
NotificationCompat.Builder builder = new Builder(this);
builder.setContent(remoteViews).setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)).setOngoing(true)
.setTicker("music is playing");
manager.notify(0, builder.build());
}
/**
* 大布局Picture类型notification
* 这个方法貌似还有一点问题
*/
private void showNotification5() {
NotificationCompat.BigPictureStyle pictureStyle = new BigPictureStyle();
pictureStyle.setBigContentTitle("BigContentTitle")
.setSummaryText("Summary Text").bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));
Notification notification = new NotificationCompat.Builder(this)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
.setTicker("showBigView_pic").setContentInfo("ContentInfo")
.setContentTitle("ContentTitle").setContentText("ContentText")
.setStyle(pictureStyle)
.setAutoCancel(true).setDefaults(Notification.DEFAULT_ALL)
.build();
manager.notify(3, notification);
}
/**
* 带进度条的通知栏
*/
private void showNotification4() {
final NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
.setSmallIcon(R.drawable.ic_launcher)
.setTicker("showProgressBar")
.setContentInfo("ContentInfo")
.setOngoing(true)
.setContentTitle("ContentTitle")
.setContentText("ContentText");
new Thread(new Runnable() { @Override
public void run() {
int progress = 0;
for(progress=0;progress<100;progress+=5){
//将第三个参数改为true,进度条会变为无明显进度的样式
builder.setProgress(100, progress, true);
manager.notify(0, builder.build());
try {
Thread.sleep(1000);
} catch (Exception e) {
}
}
//线程执行完毕之后,修改通知栏的显示
builder.setContentTitle("Download complete").setProgress(0, 0, false).setOngoing(false);
manager.notify(0, builder.build());
}
}).start(); }
/**
* 大通知栏
*/
private void showNotification3() {
NotificationCompat.BigTextStyle textStyle = new BigTextStyle();
textStyle.setBigContentTitle("BigContentTitle")
.setSummaryText("Summary Text")
.bigText("I'm Big Text......................................................................");
Notification notification = new NotificationCompat.Builder(this)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
.setSmallIcon(R.drawable.ic_launcher)
.setTicker("Ticker")
.setContentInfo("ContentInfo")
.setContentTitle("ContentTitle")
.setContentText("ContentText")
.setStyle(textStyle)
.setAutoCancel(true).setDefaults(Notification.DEFAULT_ALL).build();
manager.notify(0, notification);
}
/**
* 小通知栏
*/
private void showNotification2() {
Notification notification = new NotificationCompat.Builder(this)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
.setSmallIcon(R.drawable.ic_launcher)
.setTicker("showNormal")
.setContentInfo("ContextInfo")
.setContentTitle("ContentTitle")
.setContentText("ContentText")
.setNumber(45)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.build();
Intent notificationIntent =new Intent(MainActivity.this, SecondActivity.class);
PendingIntent contentItent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.contentIntent=contentItent;
manager.notify(0, notification);
}
/**
* 在状态栏显示通知
*/
private void showNotification(){
// 创建一个NotificationManager的引用
NotificationManager notificationManager = (NotificationManager)
this.getSystemService(android.content.Context.NOTIFICATION_SERVICE); // 定义Notification的各种属性
Notification notification =new Notification(R.drawable.ic_launcher,
"系统测试", System.currentTimeMillis());
//FLAG_AUTO_CANCEL 该通知能被状态栏的清除按钮给清除掉
//FLAG_NO_CLEAR 该通知不能被状态栏的清除按钮给清除掉
//FLAG_ONGOING_EVENT 通知放置在正在运行
//FLAG_INSISTENT 是否一直进行,比如音乐一直播放,知道用户响应
// notification.flags |= Notification.FLAG_ONGOING_EVENT; // 将此通知放到通知栏的"Ongoing"即"正在运行"组中
// notification.flags |= Notification.FLAG_NO_CLEAR; // 表明在点击了通知栏中的"清除通知"后,此通知不清除,经常与FLAG_ONGOING_EVENT一起使用
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
//DEFAULT_ALL 使用所有默认值,比如声音,震动,闪屏等等
//DEFAULT_LIGHTS 使用默认闪光提示
//DEFAULT_SOUNDS 使用默认提示声音
//DEFAULT_VIBRATE 使用默认手机震动,需加上<uses-permission android:name="android.permission.VIBRATE" />权限
notification.defaults = Notification.DEFAULT_LIGHTS;
//叠加效果常量
//notification.defaults=Notification.DEFAULT_LIGHTS|Notification.DEFAULT_SOUND;
notification.ledARGB = Color.BLUE;
notification.ledOnMS =5000; //闪光时间,毫秒 // 设置通知的事件消息
CharSequence contentTitle ="系统消息"; // 通知栏标题
CharSequence contentText ="系统正在运行...."; // 通知栏内容
Intent notificationIntent =new Intent(MainActivity.this, SecondActivity.class); // 点击该通知后要跳转的Activity
PendingIntent contentItent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this, contentTitle, contentText, contentItent); // 把Notification传递给NotificationManager
notificationManager.notify(0, notification);
}
//删除通知
private void clearNotification(){
// 启动后删除之前我们定义的通知
NotificationManager notificationManager = (NotificationManager) this
.getSystemService(NOTIFICATION_SERVICE);
notificationManager.cancel(0); }
}

关键代码文中已有注释,完整代码下载。如有错误之后欢迎大家一起讨论。

版权声明:本文为博主原创文章,未经博主允许不得转载。若有错误地方,还望批评指正,不胜感激。

android开发之Notification学习笔记的更多相关文章

  1. android开发之broadcast学习笔记 分类: android 学习笔记 2015-07-19 16:33 32人阅读 评论(0) 收藏

    android中的广播用的太多了,今天稍微总结一下. 按注册方式分为两种: 1.静态注册广播: 静态注册广播就是在androidManifest.xml文件中注册广播,假设我们要实现这样一个效果,在一 ...

  2. android开发之broadcast学习笔记

    android中的广播用的太多了,今天稍微总结一下. 按注册方式分为两种: 1.静态注册广播: 静态注册广播就是在androidManifest.xml文件中注册广播,假设我们要实现这样一个效果,在一 ...

  3. Android开发之Notification通知

    消息通知使我们很常见的,当收到一条消息的时候,通知栏会显示一条通知: 直接看代码: public class MainActivity extends Activity { private Notif ...

  4. Android开发之Notification的简单使用

    创建Notification    Buider 一个Builder至少包含以下内容: 一个小的icon,用setSmallIcon())方法设置 一个标题,用setContentTitle())方法 ...

  5. IOS开发之Swift学习笔记

    1.因为存储属性要求初始化,我们可以使用lazy修饰符来延迟初始化.

  6. 【Android UI】Android开发之View的几种布局方式及实践

    引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理 ...

  7. Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab

     今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可 ...

  8. android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序

    android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序     在应用里使用了后台服务,并且在通知栏推送了消息,希望点击这个消息回到activity ...

  9. Android开发之旅3:android架构

    引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWorld Android 开发之旅:HelloWorld项目的目录结构 我们对android有了个大致的了解,知道如何搭建andr ...

随机推荐

  1. Linq 数据合并,比较,连接,交叉 维恩图工具

    Except 返回包含两个不同之处的linq结果集 Intersect 返回两个容器中共同的数据项 Union 返回所有成员,相同的成员出现多次,将只返回一个 Concat 返回所有数据项

  2. MVC架构学习

    作为一名小小的GreenBird,学习MVC呢,已经花费了2天了,期间得到了美丽的学姐的帮助,初步整理了一下. 首先,学习MVC呢就先以一个标准的MVC的简单的例子来入手,然后根据学姐的PPT,我用v ...

  3. 解决类型“System.Web.UI.UpdatePanel”不具有名为“Gridview”的公共属性,

    类型“system.web.ui.updatepanel” 不具有名为“XXX”的公共属性,其实原因很简单.就是少了一个<ContentTemplate></ContentTempl ...

  4. python 文件及文件夹操作

    python 文件.目录操作(新增.移动.删除等) python 文件夹与文件操作 mport string, os, sys dir = '/var' print '----------- no s ...

  5. MATLAB中的结构数组

    MATLAB中的结构数组 结构数组: 结构是包含一组记录的数据类型,而记录则是存储在相应的字段中.结构的字段可以是任意一种MATLAB数据类型的变量或者对象.结构类型的变量也可以是一维的.二维的或多维 ...

  6. 介绍一个好用的软件--多个WIN远程连接

    MultiDesk v3.162015-03-16 http://www.syvik.com/multidesk/index_chs.htm MultiDesk 是一个选项卡(TAB标签)方式的远程桌 ...

  7. 李洪强iOS开发之-环信01_iOS SDK 前的准备工作

    李洪强iOS开发之-环信01_iOS SDK 前的准备工作 1.1_注册环信开发者账号并创建后台应用 详细步骤:  注册并创建应用 注册环信开发者账号 第 1 步:在环信官网上点击“即时通讯云”,并点 ...

  8. Qt中事件处理的方法(图文并茂,仔细看看)

    http://blog.csdn.net/qing666888/article/details/14111271 http://blog.csdn.net/qing666888/article/det ...

  9. Qt动画与Qt坐标小记

    Qt动画 转载自: <http://jingyan.baidu.com/article/154b46315757b628ca8f4116.html> 和  <http://blog. ...

  10. struts1 工作原理

    struts1的原理和工作流程 struts1的工作原理或者说工作流程: 1.在web应用程序启动就会加载ActionServlet,ActionServlet从配置文件struts-config.x ...