今天看了一下android的消息提示Notification,别且写了一个小例子,总结一下,一遍以后使用查找方便,同时希望能给需要的朋友提供帮助。
1.创建一个简单的Notification提示。
使用NotificationCompat.Builder对象指定Notification的UI内容与行为
setContentTitle()设置标题
setContentText( )设置内容
setSmallIcon()设置图标
setContentIntent()添加PendingIntent
使用NotificationManager对象。
notify()进行展示。
下面是一段示例代码:
private void showNotifi() {
// TODO Auto-generated method stub
NotificationManager manager=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Intent intent=new Intent(this,NotificationView.class);
intent.putExtra(“notifyId”, notifyId);
PendingIntent pendingIntent=PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder=new NotificationCompat.Builder(this);
builder.setContentIntent( pendingIntent);
builder.setContentTitle(“系统提示”);
builder.setContentText(“有新的版本更新”);
builder.setSmallIcon(R.drawable.ic_launcher);
manager.notify(notifyId, builder.build());
}
实现点击跳转的另个界面。另外Notification经持续可见。可以是在操作完成后用
NotificationManager 的cancel()方法取消。
2.Notification的更新。当对同一个时间触发多个Notification的时候,为了避免多次创建Notification。我们可以使用相同的Id.使用NotificationCompat.Builder的setNumber(number)展示消息的条数。
3.展示一个带进度条的Notification
要展示一个确定长度的进度条,调用 setProgress(max, progress, false))方法将进度条添加进notification,然后发布这
个notification,第三个参数是个boolean类型,决定进度条是 indeterminate (true) 还是 determinate (false)。在你操作进
行时,增加progress,更新notification。在操作结束时,progress应该等于max。一个常用的调用 setProgress())的方法
是设置max为100,然后增加progress就像操作的“完成百分比”。
当操作完成的时候,你可以选择或者让进度条继续展示,或者移除它。无论哪种情况下,记得更新notification的文字来
显示操作完成。移除进度条,调用setProgress(0, 0, false))方法.比如:
protected void showProgressNotation() {
// TODO Auto-generated method stub
final NotificationManager manager=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
final NotificationCompat.Builder builder=new NotificationCompat.Builder(this);
builder.setContentTitle("正在下载");
builder.setContentText("下载进度。。。。");
builder.setSmallIcon(R.drawable.ic_launcher);
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<100;i++){
try {
Thread.sleep(5*1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
builder.setProgress(100, i, false);
manager.notify(1, builder.build());
}
builder.setProgress(100, 0, false);
manager.notify(1, builder.build());
}
}).start();
}