Android有三种消息提示方式,分别是:状态栏通知、对话框通知和吐西(Toast)通知,下面记录这三种不同方式的用法以及区别:
一、状态栏通知(Notification)
通知用于在状态栏显示消息,消息到来时以图标方式表示,如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息。经典应用:QQ消息等。
实现代码如下:
Button btnNotifi = (Button) findViewById(R.id.btnNotifi);
//通知栏方式
btnNotifi.setOnClickListener(new OnClickListener() {//匿名内部类的方法,OnClickListener是一个接口。新手须知:此时并不是实例化接口
@Override
public void onClick(View v) {
//定义NotificationManager
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
//定义通知栏展现的内容信息
int icon = R.drawable.ic_launcher;//通知栏消息的图标
CharSequence tickerText = "我的通知栏标题";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
//定义下拉通知栏时要展现的内容信息
Context context = getApplicationContext();
CharSequence contentTitle = "我的通知栏标展开标题";
CharSequence contentText = "我的通知栏展开详细内容";
Intent notificationIntent = new Intent(MainActivity.this, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(MainActivity.this, 0,
notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText,
contentIntent);
//用mNotificationManager的notify方法通知用户生成标题栏消息通知
mNotificationManager.notify(1, notification);
}
});
效果示意图:
二、对话框通知(Dialog Notification)
当你的应用需要显示一个进度条或需要用户对信息进行确认时,可以使用对话框来完成。对话框形式略显粗鲁,不如下面的吐西方式来的温柔,所以如果不是重要消息而且不需要与用户进行交互,尽量避免使用。经典应用:退出提示确认等。
实现代码如下:
Button btnDialog = (Button) findViewById(R.id.btnDialog);
//对话框方式
btnDialog.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this);
//View viewAddEmployee = layoutInflater.inflate(R.layout.addemployee, null);
new AlertDialog.Builder(MainActivity.this)
.setTitle("chuanbo.Wei的对话框通知")
//.setView(View view)可以往里面添加widget
.setCancelable(false) //设置不能通过“后退”按钮关闭对话框
.setMessage("我是一个消息")
.setPositiveButton("知道了",
new DialogInterface.OnClickListener() {
@Override
/**
* 确定按钮的单击事件
*/
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton("返回",
new DialogInterface.OnClickListener() {
@Override
/**
* 后退按钮的单击事件
*/
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
})
.show();
}
});
效果示意图:
三、吐西通知(Tosat)
吐西方式的用户体验更友好,常用语一般的信息提示,如消息发送成功等。
实现代码如下:
Button btnTosat = (Button) findViewById(R.id.btnTosat);
//吐西方式
btnTosat.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast toast;// 吐西对象
// 用吐西的方式提示用户,三个参数分别为:上下文对象、提示消息、时长
toast = Toast.makeText(MainActivity.this, "我只是一个消息",
Toast.LENGTH_SHORT);
// Toast通知可以改变通知位置.
//toast.setGravity(Gravity.BOTTOM | Gravity.LEFT, 10, 10);
toast.show();
}
});
效果示意图: