android学习之路之通知-Notification

一,简单的通知,NoTification,根据api的文档 要创建一个通知,必须要用三个方法
builder.setSmallIcon(R.drawable.ic_launcher);//图标
builder.setContentTitle("标题");//标题

builder.setContentText("内容");

1,创建一个Builder的对象,是在Notification的内部类 而不是在Dialog的内部类

Notification. Builder builder=new Notification.Builder(Content);

Content,是一个上下文对象

2,得到builder的实例后,设置通知的必要属性

builder.setSmallIcon(R.drawable.ic_launcher);//图标
builder.setContentTitle("标题");//标题

builder.setContentText("内容");

3.通过系统服务得到通知的管理者,

NotificationManager manager= (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

Context.NOTIFICATION_SERVICE :为上下文的一个常量,也可以说是一个标记



4.得到的管理者对象,调用notify(),方法发布通知

notify()有一个有两个参数的重载,第一个参数为int id即消息的ID,第一个参数为消息的实例

二,//大视图通知
public void OnclickBtn2(View v){

//创建消息对象
NotificationCompat.Builder builder  = new NotificationCompat.Builder(MainActivity.this);
//必有属性  
builder.setSmallIcon(R.drawable.ic_launcher);//图标
builder.setContentTitle("标题");//标题
builder.setContentText("内容");//内容
//样式
NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();
style.addLine("123");
style.addLine("456");
style.addLine("789");
style.addLine("jqk");
builder.setStyle(style);


Intent intent = new Intent(MainActivity.this, SecondActivity.class);
//延迟意图  只有点击通知的时候  intent才会被触发
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 1, intent, PendingIntent.FLAG_ONE_SHOT);
//将延迟意图放到通知中
builder.setContentIntent(pendingIntent);

//得到通知的管理者对象  通过系统服务获取的
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//通过管理者发送消息  参数1  消息的id  参数2:消息对象
manager.notify(1, builder.build());


}
//带进度条的通知
public void OnclickBtn3(View v){

//创建消息对象
final NotificationCompat.Builder builder  = new NotificationCompat.Builder(MainActivity.this);
//必有属性  
builder.setSmallIcon(R.drawable.ic_launcher);//图标
builder.setContentTitle("标题");//标题
builder.setContentText("内容");//内容
//得到通知的管理者对象  通过系统服务获取的
final NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

//模仿  下载
new Thread(){
@Override
public void run() {
// TODO Auto-generated method stub
super.run();

for(int i=0;i<100;i+=5){
/*

* 参数1:最大的进度
* 参数2:当前的进度
* 参数3:标志通知的样式  有没有明确的进度   false:有明确的进度  true :不明确的进度
*/
builder.setProgress(100, i, true);
manager.notify(2, builder.build());

try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

builder.setContentText("下载完成");
manager.notify(2, builder.build());

}
}.start();


}


四/**
* 自定义的通知
* @param v
*/
public void  OnclickBtn4(View v){

//创建消息对象
NotificationCompat.Builder builder  = new NotificationCompat.Builder(MainActivity.this);
//必有属性  
builder.setSmallIcon(R.drawable.ic_launcher);//图标
builder.setContentTitle("标题");//标题


//将xml布局转换成RemoteViews
RemoteViews rv = new RemoteViews(getPackageName(), R.layout.item);
rv.setTextViewText(R.id.tv1, "标题");
rv.setTextViewText(R.id.tv2, "内容");
rv.setImageViewResource(R.id.iv, R.drawable.ic_launcher);
builder.setContent(rv);

//得到通知的管理者对象  通过系统服务获取的
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//通过管理者发送消息  参数1  消息的id  参数2:消息对象
manager.notify(3, builder.build());

}


五,当点击通知的时候,PendingIntent(延迟意图),启动并跳转到另一个新的页面,这时,通知应该被销毁



public class SecondActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);


NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//取消固定id的通知
//manager.cancel(1);
manager.cancelAll();//将所有的通知全部取消
}


}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值