`
yidongkaifa
  • 浏览: 4070864 次
文章分类
社区版块
存档分类
最新评论

Android--状态栏的图标和文字提醒/NotificationManager与Notification对象的应用

 
阅读更多

首先,我们需要看一张截图,说明这个例子的作用是什么。


这个例子用到的东西很多,首先,我们需要现在布局文件中定义一个Spinner,代码如下:

 <Spinner
    android:id="@+id/mySpinner"
    android:layout_width="200px"
    android:layout_height="wrap_content"
    android:layout_x="30px"
    android:layout_y="60px"
  />

当然,有了Spinner之后,我们需要定义其中子TextView显示的方式,需要一个以TextView为根标签的布局文件,代码如下:

 <TextView  
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/text1"
    android:layout_width="fill_parent"
    android:layout_height="30sp"
    android:singleLine="true"
    android:textSize="20sp"
    style="?android:attr/spinnerDropDownItemStyle"
  />

生成Notification的代码如下:

 /* 建立新的Intent,作为点选Notification留言条时,
     * 会执行的Activity */ 
    Intent notifyIntent=new Intent(this,EX05_08_1.class);  
    notifyIntent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK);
    /* 建立PendingIntent作为设定递延执行的Activity */ 
    PendingIntent appIntent=PendingIntent.getActivity(EX05_08.this,0,
                                                      notifyIntent,0);
       
    /* 建立Notication,并设定相关参数 */ 
    Notification myNoti=new Notification();
    /* 设定statusbar显示的icon */
    myNoti.icon=iconId;
    /* 设定statusbar显示的文字讯息 */
    myNoti.tickerText=text;
    /* 设定notification发生时同时发出预设声音 */
    myNoti.defaults=Notification.DEFAULT_SOUND;
    /* 设定Notification留言条的参数 */
    myNoti.setLatestEventInfo(EX05_08.this,"MSN登入状态",text,appIntent);
    /* 送出Notification */
    myNotiManager.notify(0,myNoti);

下面给出完整的程序代码:

1.Notification打开的页面代码:

/* 当user点击Notification留言条时,会执行的Activity */
public class EX05_08_1 extends Activity 
{
  @Override 
  protected void onCreate(Bundle savedInstanceState) 
  { 
    super.onCreate(savedInstanceState);
    /* 发出Toast */
    Toast.makeText(EX05_08_1.this, "这是模拟MSN切换登录状态的程序", Toast.LENGTH_LONG).show(); 
    finish();
    }
  }

2.主程序代码:

public class EX05_08 extends Activity
{
  /*声明对象变量*/
  private NotificationManager myNotiManager;
  private Spinner mySpinner;
  private ArrayAdapter<String> myAdapter;
  private static final String[] status =
  { "在线","离开","忙碌中","马上回来","脱机" };
  
  @Override
  protected void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    /* 载入main.xml Layout */
    setContentView(R.layout.main);
    
    /* 初始化对象 */
    myNotiManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    mySpinner=(Spinner)findViewById(R.id.mySpinner);
    myAdapter=new ArrayAdapter<String>(this,
                      android.R.layout.simple_spinner_item,status);
    /* 套用myspinner_dropdown自定义下拉菜单样式 */
    myAdapter.setDropDownViewResource(R.layout.myspinner_dropdown);
    /* 将ArrayAdapter加入Spinner对象中 */
    mySpinner.setAdapter(myAdapter);

    /* 将mySpinner加入OnItemSelectedListener */
    mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener()
    {
      @Override
      public void onItemSelected(AdapterView<?> arg0,View arg1,
                                 int arg2,long arg3)
      {
        /* 依照选择的item来判断要发哪一个notification */
        if(status[arg2].equals("在线"))
        {
          setNotiType(R.drawable.msn,"在线");
        }
        else if(status[arg2].equals("离开"))
        {
          setNotiType(R.drawable.away,"离开");
        }
        else if(status[arg2].equals("忙碌中"))
        {
          setNotiType(R.drawable.busy,"忙碌中");
        }
        else if(status[arg2].equals("马上回来"))
        {
          setNotiType(R.drawable.min,"马上回来");
        }
        else
        {
          setNotiType(R.drawable.offine,"脱机");
        }
      }

      @Override
      public void onNothingSelected(AdapterView<?> arg0)
      {
      }
    });
  }
  
  /* 发出Notification的method */
  private void setNotiType(int iconId, String text)
  {
    /* 建立新的Intent,作为点选Notification留言条时,
     * 会执行的Activity */ 
    Intent notifyIntent=new Intent(this,EX05_08_1.class);  
    notifyIntent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK);
    /* 建立PendingIntent作为设定递延执行的Activity */ 
    PendingIntent appIntent=PendingIntent.getActivity(EX05_08.this,0,
                                                      notifyIntent,0);
       
    /* 建立Notication,并设定相关参数 */ 
    Notification myNoti=new Notification();
    /* 设定statusbar显示的icon */
    myNoti.icon=iconId;
    /* 设定statusbar显示的文字讯息 */
    myNoti.tickerText=text;
    /* 设定notification发生时同时发出预设声音 */
    myNoti.defaults=Notification.DEFAULT_SOUND;
    /* 设定Notification留言条的参数 */
    myNoti.setLatestEventInfo(EX05_08.this,"MSN登入状态",text,appIntent);
    /* 送出Notification */
    myNotiManager.notify(0,myNoti);
  } 
}


分享到:
评论

相关推荐

    android 状态栏的图标与文字提醒 NotificationManager与Notification

    android 状态栏的图标与文字提醒 NotificationManager与Notification

    Android 在状态栏添加Notification信息图标及提示.rar

    这个例子演示Android 在状态栏添加Notification信息图标及提示,相信大家对这个功能已经不陌生了,手机中安装的APP,一般都会在后台运行,时不时会在手机顶部的状态栏中显示应用的图标,滑出状态栏会看到详细的信息...

    Android应用图标在状态栏上显示实现原理

    一、前方 在研究《Android类似360,QQ管家那样的悬浮窗》突发奇想,想把应用的图标也显示到状态栏上,类似手机QQ,而有消息来时改变状态栏上的图标显示。 二、原理 其实很研究完后,才发现,很简单: 2.1 显示图标在...

    android实现状态栏添加图标的函数实例

    本文实例讲述了android实现状态栏添加图标的函数。分享给大家供大家参考。具体如下: private void showNotification() { // 创建一个NotificationManager的引用 NotificationManager notificationManager = ...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    5.8 状态栏的图标与文字提醒——NotificationManager与Notification对象的应用 5.9 搜索手机通讯录自动完成——使用ContentResolver 5.10 取得联系人资料——Provider.Contact的使用 5.11 制作有图标的文件资源管理...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    5.8 状态栏的图标与文字提醒——NotificationManager与Notification对象的应用 5.9 搜索手机通讯录自动完成——使用ContentResolver 5.10 取得联系人资料——Provider.Contact的使用 5.11 制作有图标的文件资源管理...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    5.8 状态栏的图标与文字提醒——NotificationManager与Notification对象的应用 5.9 搜索手机通讯录自动完成——使用ContentResolver 5.10 取得联系人资料——Provider.Contact的使用 5.11 制作有图标的文件资源管理...

    Android应用开发揭秘pdf高清版

    4.2.21 状态栏提示(Notification、NotificationManager) 4.2.22 对话框中的进度条(ProgressDialog) 4.3 界面布局 4.3.1 垂直线性布局 4.3.2 水平线性布局 4.3.3.相对布局(RelativeLayout) 4.3.4 表单布局...

    Google Android SDK开发范例大全的目录

    5.8 状态栏的图标与文字提醒——NotificationManager与Notification对象的应用-p178 5.9 搜索手机通讯录自动完成——使用ContentResolver-p82 5.10 取得联系人资料——Provider.Contact的使用 5.11 制作有图标的文件...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    5.8 状态栏的图标与文字提醒——NotificationManager与Notification对象的应用 5.9 搜索手机通讯录自动完成——使用ContentResolver 5.10 取得联系人资料——Provider.Contact的使用 5.11 制作有图标的文件资源...

    《Android应用开发揭秘》附带光盘代码.

     4.2.21 状态栏提示(Notification、NotificationManager)  4.2.22 对话框中的进度条(ProgressDialog)  4.3 界面布局  4.3.1 垂直线性布局  4.3.2 水平线性布局  4.3.3.相对布局(RelativeLayout)  4.3.4 表单...

    Google Android SDK 开发范例大全01

    5.8 状态栏的图标与文字提醒——NotificationManager与Notification对象的应用-p178 5.9 搜索手机通讯录自动完成——使用ContentResolver-p82 5.10 取得联系人资料——Provider.Contact的使用 5.11 制作有图标的文件...

    Google Android SDK 开发范例大全02

    5.8 状态栏的图标与文字提醒——NotificationManager与Notification对象的应用-p178 5.9 搜索手机通讯录自动完成——使用ContentResolver-p82 5.10 取得联系人资料——Provider.Contact的使用 5.11 制作有图标的文件...

    Google Android sdk 开发范例大全 部分章节代码

    5.8 状态栏的图标与文字提醒——NotificationManager与Notification对象的应用-p178 5.9 搜索手机通讯录自动完成——使用ContentResolver-p82 5.10 取得联系人资料——Provider.Contact的使用 5.11 制作有图标的文件...

    《Android应用开发揭秘》源码

     4.2.21 状态栏提示(Notification、NotificationManager)  4.2.22 对话框中的进度条(ProgressDialog)  4.3 界面布局  4.3.1 垂直线性布局  4.3.2 水平线性布局  4.3.3.相对布局(RelativeLayout)  4.3.4 表单...

    Google+Android+SDK开发范例大全

    5.7 图文可视化提醒——Toast与LinearLayoutView 5.8 状态栏的图标与文字提醒——NotificationManager与Notification对象的应用 5.9 搜索手机通讯录自动完成——使用ContentResolver 5.10 取得联系人资料——...

    Google Android SDK开发范例大全(完整版)

    5.8 状态栏的图标与文字提醒——NotificationManager与Notification对象的应用 5.9 搜索手机通讯录自动完成——使用ContentResolver 5.10 取得联系人资料——Provider.Contact的使用 5.11 制作有图标的文件资源管理...

    Android开发之使用通知栏显示提醒信息的方法

    本文实例讲述了Android开发之使用通知栏显示提醒信息的方法。分享给大家供大家参考,具体... //初始化通知对象 p1:通知的图标 p2:通知的状态栏显示的提示 p3:通知显示的时间 Notification notification = new Notifica

Global site tag (gtag.js) - Google Analytics