今天总结了一下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. source insight 使用技巧

    一.在所有文件中查找字符串 1.菜单栏选择“search project” 2.在随便一个工程文件中把所要查找的字符串输入到空白的地方,然后点连接

  2. Word神器使用

    调整自动换行符的换行起始点: 拖拽下面的三角部分(三角下面的四边形部分不要碰),就可以调整自动编号的换行后的其实点在哪里.

  3. 【转】TypeScript中文入门教程

    目录 虽然我是转载的,但看在Copy这么多文章也是很幸苦的好吧,我罗列一个目录. 转载:<TypeScript 中文入门教程> 17.注解 (2015-12-03 11:36) 转载:&l ...

  4. 全连接的BP神经网络

    <全连接的BP神经网络> 本文主要描述全连接的BP神经网络的前向传播和误差反向传播,所有的符号都用Ng的Machine learning的习惯.下图给出了某个全连接的神经网络图. 1前向传 ...

  5. wordpress 如何从后台数据库修改theme(图文教程)

    我们在wordpress主题theme配置的时候,会从网站上下载比较流行的theme,使自己的blog看着很酷,也有不顺利的时候,你下载的theme有bug或者下载包出问题了,安装过后你的web页面不 ...

  6. Count The Pairs

    hdu4750:http://acm.hdu.edu.cn/showproblem.php?pid=4750 题意:给你一个带权无向图,然后让你求这样的点对s,t,使得s--t的所有路径上的最大的边的 ...

  7. 【uva11374】Airport Express 最短路

    题意: 在Iokh市中,机场快线是市民从市内去机场的首选交通工具.机场快线分为经济线和商业线两种,线路,速度和价钱都不同.你有一张商业线车票,可以坐一站商业线,而其他时候只能乘坐经济线.假设换乘时间忽 ...

  8. Spring MVC 解读——<mvc:annotation-driven/>(转)

    转自:http://my.oschina.net/HeliosFly/blog/205343 Spring MVC 解读——<mvc:annotation-driven/> 一.Annot ...

  9. ssh+c3p0调用存储过程、组拼STRUCT时仅使用一个connection的方法 c3p0代理类转原始类(connection)

    正常情况,我们会调用存储过程用hibernate提供的连接池代理连接类来调用存储过程,而用新建连接给存储过程组拼STRUCT. 但是这样感觉可以再一步的优化:调用存储过程与构建STRUCT用hiber ...

  10. TCP/IP FTP/TFTP

    引言 从一台计算机向另一台计算机传送文件是在连网或互联网环境中最常见的任务.而FTP和TFTP就是这样的协议. 关于文件传输协议FTP? 端口21使用服务TCP [FTP模型] FTP连接? 1.控制 ...