一、概述

     Notification这个部件的功能是在状态栏里显示消息提醒,比如有未读的短信或者是未接的电话,那么状态栏里都会有显示,更或者是从某个应用(比如QQ,酷我音乐等等)里按Home键回到桌面,这时状态栏里也会显示这个应用的图标,这就是Notification。

二、要求

程序主界面上有一个Button按钮,当用户点击这个按钮时状态栏会显示一则通知,当按住状态栏下拉时可以看到这个通知在下拉列表里,此时点击这个通知就跳转到另一个界面(相当于查看这个通知)并且能将这个通知在状态栏里取消。

三、实现

新建工程MyNotice,在/res/layout/main.xml文件里添加一个Button:

 <Button
android:id="@+id/mbutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Notice"
/>

完整的main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" /> <Button
android:id="@+id/mbutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Notice"
/> </LinearLayout>

修改后的MyNoticeActivity.java文件

 1 package com.nan.notice;
2
3 import android.app.Activity;
4 import android.app.Notification;
5 import android.app.NotificationManager;
6 import android.app.PendingIntent;
7 import android.content.Intent;
8 import android.os.Bundle;
9 import android.view.View;
10 import android.widget.Button;
11
12
13 public class MyNoticeActivity extends Activity
14 {
15 //通知的编号
16 static final int MYNOTICE = 0;
17
18 //定义各个对象
19 private Button mButton = null;
20 private NotificationManager mNotificationManager = null;
21 private Intent mIntent = null;
22 private Notification mNotification = null;
23 private PendingIntent mPendingIntent = null;
24
25
26 /** Called when the activity is first created. */
27 @Override
28 public void onCreate(Bundle savedInstanceState)
29 {
30 super.onCreate(savedInstanceState);
31 setContentView(R.layout.main);
32
33 //mButton实例化
34 mButton = (Button)findViewById(R.id.mbutton);
35 //mNotificationManager实例化
36 mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
37
38 mIntent = new Intent();
39 //设置要跳转到的Activity
40 mIntent.setClass(MyNoticeActivity.this, Activity2.class);
41 //设置点击下拉状态栏列表里的这个通知时所要显示的Activity
42 mPendingIntent = PendingIntent.getActivity(MyNoticeActivity.this, 0, mIntent, 0);
43 mNotification = new Notification();
44 //设置在通知栏里显示的图标
45 mNotification.icon = R.drawable.ic_launcher;
46 //设置在通知栏里显示的文本
47 mNotification.tickerText = "Button 通知...";
48 //设置通知铃声
49 mNotification.defaults = Notification.DEFAULT_SOUND;
50 //设置在下拉状态栏时所显示的关于这个通知的内容
51 mNotification.setLatestEventInfo(MyNoticeActivity.this, "Button", "Button通知", mPendingIntent);
52 //设置按钮监听
53 mButton.setOnClickListener(new View.OnClickListener()
54 {
55 @Override
56 public void onClick(View v)
57 {
58 // TODO Auto-generated method stub
59 //执行这个通知
60 mNotificationManager.notify(MYNOTICE, mNotification);
61
62 }
63 });
64
65 }
66
67 }

在/src里添加一个名为Activity2.java文件:

 1 package com.nan.notice;
2
3 import android.app.Activity;
4 import android.app.NotificationManager;
5 import android.os.Bundle;
6
7
8 public class Activity2 extends Activity
9 {
10 //与MyNoticeActivity.java中定义的值相同
11 static final int MYNOTICE = 0;
12
13 private NotificationManager mNotificationManager = null;
14
15 /** Called when the activity is first created. */
16 @Override
17 public void onCreate(Bundle savedInstanceState)
18 {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.activity2);
21
22 mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
23
24 }
25
26 @Override
27 public void onResume()
28 {
29 super.onResume();
30 //在Activity显示完成后取消在状态栏里的这个通知
31 mNotificationManager.cancel(MYNOTICE);
32 }
33
34 }

在/res/layout里添加一个activity2.xml文件

 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6
7 <TextView
8 android:layout_width="fill_parent"
9 android:layout_height="wrap_content"
10 android:text="Button Notificition"
11 android:textSize="30px"
12 />
13
14 </LinearLayout>

在AndroidManifest.xml文件里声明多一个activity

<activity
android:name=".Activity2"
>
</activity>

好了,运行程序后,如下

点击按钮后,可以看到状态栏里显示一个消息:

按住状态栏然后下拉,可以看到有一条提示:

点击这条提示,进入到这条提示的内容,同时状态栏里的这个通知也消失了:

要求完成!

Android应用开发基础篇(2)-----Notification(状态栏通知)的更多相关文章

  1. Android应用开发基础篇(1)-----Button

    Android应用开发基础篇(1)-----Button   一.概述        Button,顾名思义就是按钮的意思,它主要的功能是响应用户按下按钮时的动作. 二.应用      新建一个工程, ...

  2. Android应用开发基础篇(3)-----ListView

    一.概述 ListView是一个列表显示控件,它的应用非常广泛,在很多应用程序中都可以看到它的身影,比如来电通,网易新闻等等,特别是QQ.因此非常有必要熟练掌握它. 二.要求 能够利用ListView ...

  3. Android应用开发基础篇(4)-----TabHost(选项卡)

    一.概述 TabHost是一种用来显示标签的组件,不清楚?看一下来电通这个应用就知道了.这个组件用起来与其他组件不太一样,它需要继承TabActivity这个类,还有它的布局文件与我们平时用的也有些不 ...

  4. Android应用开发基础篇(14)-----自定义标题栏

    一.概述 每一个应用程序默认的标题栏(注意与状态栏的区别)只有一行文字(新建工程时的名字),而且颜色.大小等都是固定的,给人的感觉比较单调.但当程序需要美化的时候,那么修改标题栏是就是其中一项内容,虽 ...

  5. Android应用开发基础篇(12)-----Socket通信

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/03/2378669.html 一.概述 网络通信无论在手机还是其他设备上都应用得非常广泛,因此掌 ...

  6. Android应用开发基础篇(12)-----Socket通信(转载)

    转自:http://www.devdiv.com/android_socket_-blog-258060-10594.html 一.概述 网络通信无论在手机还是其他设备上都应用得非常广泛,因此掌握网络 ...

  7. Android应用开发基础篇(16)-----ScaleGestureDetector(缩放手势检测)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/11/2390274.html 一.概述 ScaleGestureDetector这个类是专门用来 ...

  8. Android应用开发基础篇(15)-----URL(获取指定网址里的图片)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/10/2389190.html 一.概述 URL,说白了就是一个网络地址(网址),通常一个网址里包 ...

  9. Android应用开发基础篇(13)-----GestureDetector(手势识别)

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/05/2381025.html 一.概述 GestureDetector是一个用于识别手势的类,这 ...

随机推荐

  1. MapReduce ---- TD-IDF

    1.TF-IDF TF-IDF(term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明.描述单个term与特定document的相关 ...

  2. cocos2d-x -------之笔记篇 环境的安装

    cocos2d-x -------之笔记篇 环境的安装 使用到的工具有VS2010  cygwin android-NDK eclipse android SDK 1.首先是android相关环境的安 ...

  3. junwong 9个杀手级 JVM 编程语言

    http://www.oschina.net/question/213217_45561

  4. Autoconf/Automake工具简介

    在linux下编程的时候,有时候工程项目很大,文件比较多,此时需要使用自动创建Makefile文件功能.也就是使用Autoconf/Automake工具自动生成Makefile,为编译程序带来了方便, ...

  5. css样式实现字体删除线效果

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  6. c#读取xml文件配置文件Winform及WebForm-Demo具体解释

    我这里用Winform和WebForm两种为例说明怎样操作xml文档来作为配置文件进行读取操作. 1.新建一个类,命名为"SystemConfig.cs".代码例如以下: < ...

  7. 整理Linux查看系统日志的一些经常使用命令

    整理Linux查看系统日志的一些经常使用命令 last -a 把从何处登入系统的主机名称或ip地址,显示在最后一行. -d 指定记录文件.指定记录文件.将IP地址转换成主机名称. -f <记录文 ...

  8. ASP连接sql server实例解析

    1.首先确定自己的iis没有问题 2.其次确定自己sqlserver没有问题 然后在iis的文件夹wwwroot里,建立一个文件 名为testSqlServer.asp,编写代码例如以下就可以 < ...

  9. VBA 开发学习--基础语法

    MsgBox "开始学习VBA" '提示框 Dim str As String '声明str变量是string类型 Let str = "一起来看流星雨" '给 ...

  10. JavaScript 开发经验整理

    前言 今年接触了一个B/S的项目,总结了一些JavaScript开发经验,整理些有用的内容与大家分享. 本文会持续更新... 1.实现代码访问的控制 随着项目JavaScript代码库扩大,本应被控制 ...