Notification是一种让你的应用程序在不使用Activity的情况下警示用户,Notification是看不见的程序组件警示用户有需要注意的事件发生的最好途径。

作为UI部分,Notification对移动设备来说是最适合不过的了。用户可能随时都带着手机在身边。一般来说,用户会在后台打开几个程序,但不会注意它们。在这样的情形下,当发生需要注意的事件时,能够通知用户是很重要的。

Notification由NotificationManger统一管理,目前包含的能力有:

  • 创建一个状态条图标。
  • 在扩展的状态条窗口中显示额外的信息(和启动一个Intent)。
  • 闪灯或LED。
  • 电话震动。
  • 发出听得见的警告声(铃声,保存的声音文件)。

调用系统API的Notification                                                       

public void click1(View view) {
//1.获取系统通知的管理者
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//2.初始化一个notification的对象
Notification notification = new Notification(R.drawable.notification, "我是滚动的文本", System.currentTimeMillis() );
//3.设置notification的具体参数
notification.flags = Notification.FLAG_AUTO_CANCEL;
// notification.sound = Uri.parse(uriString);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);
notification.setLatestEventInfo(this, "我是大的标题", "我是标题下面的内容", contentIntent);
//4.直接把消息给 notification的管理者
nm.notify(0, notification);
}

自定义Notification                                                                     

public class MainActivity extends Activity {

    protected int mProgress;
private Notification notification;
private RemoteViews rv;
private NotificationManager nm;
private PendingIntent contentIntent; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); } public void clicklala(View view)
{
//1.获取系统通知的管理者
nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//2.初始化一个notification的对象
long when = System.currentTimeMillis();
String tickerText = "iiiipppp";
notification = new Notification(R.drawable.ic_launcher,tickerText,when);
//3.设置notification的具体参数
//不能手动清理掉
notification.flags = Notification.FLAG_AUTO_CANCEL;
// notification.contentView = 自定义的notification view
rv = new RemoteViews(getPackageName(), R.layout.notify);
rv.setTextViewText(R.id.tv_rv, "我是自定义的notification");
rv.setProgressBar(R.id.pb_rv, 100, 0, false);
notification.contentView = rv; Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
contentIntent = PendingIntent.getActivity(this, 0, intent, 0);
notification.contentIntent = contentIntent; //4.直接把消息给 notification的管理者
nm.notify(0, notification); // 启动多线程更新Notification提醒。
new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 20; i++) {
mProgress = (i + 1) * 5;
try {
if (i < 19) {
Thread.sleep(1000);
} else {
Thread.currentThread().interrupt();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
Message message = new Message();
mHandler.sendMessage(message);
}
}
}).start();
}
private Handler mHandler = new Handler() {
public void handleMessage(Message message) { //设置RemoteView组件中进度条的进度值。
rv.setProgressBar(R.id.pb_rv, 100, mProgress, false);
rv.setTextViewText(R.id.tv_rv, "Download:" + mProgress + "%");
//给Notification设置布局。
notification.contentView = rv;
/给Notification设置Intent,单击Notification会发出这个Intent。
notification.contentIntent = contentIntent;
//发送Notification提醒。
nm.notify(0, notification);
super.handleMessage(message);
}
};
}

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_rv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="haha"
/>
<ProgressBar
style="@android:style/Widget.ProgressBar.Horizontal"
android:id="@+id/pb_rv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>

我是天王盖地虎的分割线                                                              

源代码:http://pan.baidu.com/s/1dD1Qx01

notification入门.zip

转载请注明出处:http://www.cnblogs.com/yydcdut

Android -- 系统和自定义Notification的更多相关文章

  1. Android系统对话框——自定义关闭

    Android系统对话框--自定义关闭 Dialog是我们在项目中经常用到的,5.x以后的Dialog也很好看,很安卓风,Android也给我们提供了新的包,低版本可以显示一样的效果.我们在使用的导入 ...

  2. Android系统中自定义按键的短按、双击、长按事件

    在项目中碰到这样的问题: 由于系统中的按键在底层做了重新定义或者新增了按键,此时需要在APP层对按键事件(keyevent)做分解处理,模拟Android系统做法,把keyevent分解成: 1.单击 ...

  3. android:使用RemoteView自定义Notification

    //网上相关内容较少,遂记录下来,备忘. //依然以音乐播放器demo为例. 效果截图 //锤子手机上的效果 step1 准备自定义layout 常规的实现方式,并不会因为是用于notificatio ...

  4. Android系统修改之Notification布局修改(一)

    源码基于Android4.4 相关布局文件的位置: frameworks/base/core/res目录下: 1. notification_template_base.xml 2. notifica ...

  5. 第13讲- Android之消息提示Notification

    第13讲 Android之消息提示Notification .Notification Notification可以理解为通知的意思一般用来显示广播信息,通知可以显示到系统的上方的状态栏(status ...

  6. Android系统编程入门系列之应用级文件在应用程序间的共享

    在上篇文章了解到应用级文件只能被其所创建的应用程序所访问,那么其他应用程序是不是就无论如何都无法访问了呢?肯定不是的,只要文件经过其创建的应用程序授权,还是可以被其他应用程序所访问的.这也就是应用级文 ...

  7. Android自定义Notification并没有那么简单

    背景 最近需要实现一个自定义Notification的功能.网上找了找代码,解决方案就是通过RemoteViews来实现.但是在实现过程中遇到不少问题,网上也没有很好的文章描述这些问题,所以在这里做个 ...

  8. Android系统在新进程中启动自定义服务过程(startService)的原理分析

    在编写Android应用程序时,我们一般将一些计算型的逻辑放在一个独立的进程来处理,这样主进程仍然可以流畅地响应界面事件,提高用户体验.Android系统为我们提供了一个Service类,我们可以实现 ...

  9. 【转】Android 系统菜单与自定义菜单

    Android 系统菜单与自定义菜单实现方法如下:系统菜单显示DefaultMenu.java package com.wxz.menu; import com.wxz.menu.R; import  ...

随机推荐

  1. ICE::Handle 使用崩溃问题

    简单例子如下: #include "Ice/Ice.h" #include "IceUtil/IceUtil.h" #include "Printer ...

  2. 青客宝团队Consul内部分享ppt

    青客宝团队Consul内部分享ppt   https://mp.weixin.qq.com/s?src=3&timestamp=1503647705&ver=1&signatu ...

  3. Android四种Activity的加载模式

    建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型 http://www.cnblogs.com/ghj1976/archive/2011/04 ...

  4. Python 訪问 LinkedIn (API)

    CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-16 @author: guaguastd @name: l ...

  5. code.google.com/p/log4go 下载失败

    用 glide 下载 goim 的依赖包时报错,提示: code.google.com/p/log4go 找不到,即下载失败 主要是 code.google.com 网站已关闭导致的, 有人把它 fo ...

  6. Why I don’t read books

    http://dougmccune.com/blog/2007/03/23/why-i-dont-read-books/ I’ve never read a programming book. I r ...

  7. SAP BAPI一览 史上最全

    全BADI一览  List of BAPI's       BAPI WG Component Function module name Description Description Obj. Ty ...

  8. Android Service总结03 之被启动的服务 -- Started Service

    Android Service总结03 之被启动的服务 -- Started Service 版本 版本说明 发布时间 发布人 V1.0 添加了Service的介绍和示例 2013-03-17 Sky ...

  9. 下载企业级证书打包的app 出现“无法下载应用程序”的问题

    问题描述:在下载企业级证书打包的app 出现“无法下载应用程序”的问题 解决办法:原来是生成plist文件时,设置url犯了一个致命的低级错误.如下

  10. vs已停止工作

    第一步: 开始-->所有程序-->Microsoft Visual Studio 2012-->VisualStudio Tools-->VS2012 开发人员命令提示(以管理 ...