我们在实际开发中,经常会遇到这样一个问题,那就是当发生一些事件,为了友好,我们需要和用户交互,比如: 当一个事件比如发送短信结束时,应该出现一条消息确认保存成功。或者后台运行的应用程序需要用户关注,比如删除记录,或者是用户等待的时候看到的进度条或其他,这个时候我们就需要创建一个通知来和用户进行交互,那么今天就和大家分享一下这块的技术。
1.消息通知(Toast Notification)
一个消息条通知是一个在窗口表面弹出的信息。它只填充内容所需的空间并且用户当前活动仍然保持可见和可交互。这个通知自动渐入渐出,而且不接受交互事件。因为消息条可以从一个后台服务Service中创建,即便应用程序不可见,它也将呈现出来。
eg:建立一个消息通知
1)实例化一个Toast对象
Toast toast=Toast.makeText(context,text,duration)
说明:context是指当前的一个context对象,一般指当前应用的activity。。其次是显示的内容,最后一个参数是持续的时间
2)调用show方法显示即可
toast.show();
3)我们可以根据需要修改我们需要通知出现的位置,一般一个标准的消息条通知出现在屏幕底部附近的中间,水平方向显示,要想改变位置,我们通过setGravity(int,int,int)方法修改,参数分别是一个Gravity常量,x方向的偏移量,y方向的偏移量。
4)我们也可以通过setView来让这个消息通知的布局更漂亮。只需要定义好一个布局文件就可以实现了。
l 获取LayoutInflater
l 调用inflate方法创建View对象
l 调用toast的setView方法即可
注:LayoutInflater:被用来将一个xml布局文件实例化成为一个View对象,它一般不直接用,而是通过getLaoutInflater和getSystemService(String)去获取标准LayoutInflater实例。
2.状态条通知A Status Bar Notification
一个状态条通知添加一个图标到系统状态栏上(以及一个可选的滚动条文本信息)以及在这个“通知”窗口中的一个扩展消息。当用户选择这个扩展消息时,Android发出这个通知所定义的一个意图(通常是启动一个活动)。你也可以配置这个通知来通过一个声音,震动和设备上的闪烁灯来警告用户。
我们可以通过Activity和Service初始化一个状态条通知,创建通知,我们必须使用Notification和NotificationManager这两个类。利用Notification定义一些状态通知的属性,比如图标,扩展的消息,声音等,而NotificationManager是android系统执行管理所有的Notification。
Eg:
1)获取通知管理器
NotificationManager mNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
2)新建一个通知,指定其图标和标题
int icon = android.R.drawable.stat_notify_chat;
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, null, when);//第一个参数为图标,第二个参数为标题,第三个为通知时间
notification.defaults = Notification.DEFAULT_SOUND;//发出默认声音
//Intent openintent = new Intent(this, OtherActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(NotificationActivity.this, 0, null, 0);//当点击消息时就会向系统发送openintent意图
notification.setLatestEventInfo(NotificationActivity.this, "标题", "我是内容", contentIntent);
mNotificationManager.notify(0, notification);//发送通知
3.个对话框通知A Dialog Notification, 用于活动相关的通知
一个对话框通常是出现在当前活动前面的一个小窗口。背后的活动丢失焦点而由这个对话框接受所有的用户交互。对话框通常用做和运行中应用程序直接相关的通知和短暂活动。有以下几个对象对应相应的不同种类的对话框
1)AlertDialog
2)ProcessDialog
3)DatePickerDialo
4)TimePickerDailog