乐读文学

Android从入门到精通

乐读文学 > 科普学习 > Android从入门到精通

第48页

书籍名:《Android从入门到精通》    作者:明日科技


Toast  toast=new  Toast(this);



toast.setDuration(Toast.LENGTH_SHORT);  //设置持续时间



toast.setGravity(Gravity.CENTER,  0,  0);  //设置对齐方式



LinearLayout  ll=new  LinearLayout(this);  //创建一个线性布局管理器



ImageView  iv=new  ImageView(this);  //创建一个ImageView



iv.setImageResource(R.drawable.alerm);  //设置要显示的图片



iv.setPadding(0,  0,  5,  0);  //设置ImageView的内边距



ll.addView(iv);  //将ImageView添加到线性布局管理器中



TextView  tv=new  TextView(this);  //创建一个TextView



tv.setText("我是通过构造方法创建的消息提示框");  //为TextView设置文本内容



ll.addView(tv);  //将TextView添加到线性布局管理器中



toast.setView(ll);  //设置消息提示框中要显示的视图



toast.show();  //显示消息提示框

运行本实例,首先显示如图4.14所示的消息提示框,过一段时间后,该消息提示框消失,然后显示如图4.15所示的消息提示框,再过一段时间,该消息提示框也自动显示消息。





图4.14 消息提示框(一)  图4.15 消息提示框(二)

4.2.2 使用Notification在状态栏上显示通知

在使用手机时,当有未接来电或是新短消息时,手机会给出相应的提示信息,这些提示信息通常会显示到手机屏幕的状态栏上。Android也提供了用于处理这些信息的类,它们是Notification和NotificationManager。其中,Notification代表的是具有全局效果的通知;而NotificationManager则是用于发送Notification通知的系统服务。

使用Notification和NotificationManager类发送和显示通知也比较简单,大致可以分为以下4个步骤。

(1)调用getSystemService()方法获取系统的NotificationManager服务。

(2)创建一个Notification对象,并为其设置各种属性。

(3)为Notification对象设置事件信息。

(4)通过NotificationManager类的notify()方法发送Notification通知。

下面通过一个具体的实例说明如何使用Notification在状态栏上显示通知。

例4.12   在Eclipse中创建Android项目,名称为4.12,实现在状态栏上显示通知和删除通知。(实例位置:光盘\TM\sl\4\4.12)

(1)修改新建项目的res\layout目录下的布局文件main.xml,将默认添加的TextView组件删除,然后添加两个普通按钮,一个用于显示通知,另一个用于删除通知。由于此处的布局代码比较简单,这里就不再给出。

(2)在主活动MainActivity.java的onCreate()方法中,调用getSystemService()方法获取系统的NotificationManager服务,关键代码如下:

//获取通知管理器,用于发送通知



final  NotificationManager  notificationManager  =



(NotificationManager)  getSystemService(NOTIFICATION_SERVICE);

(3)获取“显示通知”按钮,并为其添加单击事件监听器,在重写的onClick()方法中,首先通过无参的构造方法创建一个Notification对象,并设置其相关属性,然后通过通知管理器发送该通知,接下来通过构造方法Notification(int  icon,  CharSequence  tickerText,  long  when)创建一个通知,并为其设置事件信息,最后通过通知管理器发送该通知,具体代码如下:

Button  button1  =  (Button)  findViewById(R.id.button1);  //获取“显示通知”按钮



//为“显示通知”按钮添加单击事件监听器



button1.setOnClickListener(new  OnClickListener()  {



@Override



public  void  onClick(View  v)  {



Notification  notify  =  new  Notification();  //创建一个Notification对象



notify.icon  =  R.drawable.advise;



notify.tickerText  =  "显示第一个通知";



notify.when  =  System.currentTimeMillis();  //设置发送时间



notify.defaults  =  Notification.DEFAULT_ALL;  //设置默认声音、默认振动和默认闪光灯



notify.setLatestEventInfo(MainActivity.this,  "无题",  "每天进步一点点",  null);  //设置事件信息



notificationManager.notify(NOTIFYID_1,  notify);  //通过通知管理器发送通知



//添加第二个通知



Notification  notify1  =  new  Notification(R.drawable.advise2,



"显示第二个通知",  System.currentTimeMillis());



notify1.flags|=Notification.FLAG_AUTO_CANCEL;  //打开应用程序后图标消失



Intent  intent=new  Intent(MainActivity.this,ContentActivity.class);



PendingIntent  pendingIntent=PendingIntent.getActivity(MainActivity.this,  0,  intent,  0);



notify1.setLatestEventInfo(MainActivity.this,  "通知",



"查看详细内容",  pendingIntent);  //设置事件信息



notificationManager.notify(NOTIFYID_2,  notify1);  //通过通知管理器发送通知



}



});

注意:  上面代码中加粗的部分,用于为第一个通知设置使用默认声音、默认振动和默认闪光灯。也就是说,程序中要访问系统闪光灯和振动器,需要在AndroidManifest.xml中声明使用权限,具体代码如下: