在消息通知的时候,我们经常用到两个控件notification和toast。特别是重要的和需要长时间显示的信息,用notification最合适不过了。他可以在顶部显示一个图标以标示有了新的通知,当我们拉下通知栏的时候,可以看到详细的通知内容。
最典型的应用就是未看短信和未接来电的显示,还有qq微信,我们一看就知道有一个未接来电或者未看短信,收到qq离线信息。同样,我们也可以自定义一个notification来定义我们自己的程序想要传达的信息。
notification我把他分为两种,一种是默认的显示方式,另一种是自定义的,今天为大家讲述默认的显示方式:
1、程序框架结构图如下
2、布局文件 main.xml 源码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<?xml version= "1.0" encoding= "utf-8" ?> <linearlayout xmlns:android= "http://schemas.android.com/apk/res/android" android:orientation= "vertical" android:layout_width= "fill_parent" android:layout_height= "fill_parent" > <textview android:layout_width= "fill_parent" android:layout_height= "wrap_content" android:gravity= "center" android:textcolor= "#eee" android:textstyle= "bold" android:textsize= "25sp" android:text= "notificationdemo实例" /> <button android:id= "@+id/btnsend" android:text= "send notification" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:layout_gravity= "center" /> </linearlayout> |
3、mainactivity.java源码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
package com.andyidea.notification; import android.app.activity; import android.content.intent; import android.os.bundle; import android.view.view; import android.widget.button; public class mainactivity extends activity { private button btnsend; //定义broadcastreceiver的action private static final string notificationdemo_action = "com.andyidea.notification.notificationdemo_action" ; /** called when the activity is first created. */ @override public void oncreate(bundle savedinstancestate) { super .oncreate(savedinstancestate); setcontentview(r.layout.main); btnsend = (button)findviewbyid(r.id.btnsend); btnsend.setonclicklistener( new view.onclicklistener() { @override public void onclick(view v) { intent intent = new intent(); intent.setaction(notificationdemo_action); sendbroadcast(intent); } }); } } |
4、布局文件 secondlayou.xml 源码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<?xml version= "1.0" encoding= "utf-8" ?> <linearlayout xmlns:android= "http://schemas.android.com/apk/res/android" android:orientation= "vertical" android:layout_width= "fill_parent" android:layout_height= "fill_parent" > <textview android:layout_width= "fill_parent" android:layout_height= "wrap_content" android:gravity= "center" android:textcolor= "#eee" android:textstyle= "bold" android:textsize= "25sp" android:text= "显示通知界面" /> <button android:id= "@+id/btncancel" android:text= "cancel notification" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:layout_gravity= "center" /> </linearlayout> |
5、secondactivity.java源码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
package com.andyidea.notification; import android.app.activity; import android.app.notification; import android.app.notificationmanager; import android.app.pendingintent; import android.content.intent; import android.os.bundle; import android.view.view; import android.widget.button; public class secondactivity extends activity { private button btncancel; //声明notification private notification notification; //声明notificationmanager private notificationmanager mnotification; //标识notification的id private static final int id = 1 ; @override protected void oncreate(bundle savedinstancestate) { super .oncreate(savedinstancestate); setcontentview(r.layout.secondlayout); btncancel = (button)findviewbyid(r.id.btncancel); //怎样获得notificationmanager的实例? string service = notification_service; mnotification = (notificationmanager)getsystemservice(service); //获得notification的实例 notification = new notification(); //设置该图标 会在状态栏显示 int icon = notification.icon = android.r.drawable.stat_sys_phone_call; //设置提示信息 string tickertext = "test notification" ; //设置显示时间 long when = system.currenttimemillis(); notification.icon = icon; notification.tickertext = tickertext; notification.when = when; intent intent = new intent( this , mainactivity. class ); pendingintent pi = pendingintent.getactivity( this , 0 , intent, 0 ); notification.setlatesteventinfo( this , "消息" , "sms android" , pi); mnotification.notify(id, notification); btncancel.setonclicklistener( new view.onclicklistener() { @override public void onclick(view v) { mnotification.cancel(id); //--->取消通知 } }); } } |
6、notificationreceiver.java源码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package com.andyidea.notification; import com.andyidea.notification.secondactivity; import android.content.broadcastreceiver; import android.content.context; import android.content.intent; public class notificationreceiver extends broadcastreceiver { @override public void onreceive(context context, intent intent) { //实例化intent intent i = new intent(); //在新任务中启动activity i.setflags(intent.flag_activity_new_task); //设置intent启动的组件名称 i.setclass(context, secondactivity. class ); //启动activity,显示通知 context.startactivity(i); } } |
7、程序运行效果如下:
以上就是针对android中notification使用方法进行的详细介绍,希望对大家的学习有所启发,帮助大家更好地学习android软件编程。