通知栏
1.普通通知
2.自定义通知
3.进度条通知
1.普通通知
代码如下
b1.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onClick(View v) {
//1.通知管理者
NotificationManager systemService = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//2.通知构建者
Notification.Builder builder = new Notification.Builder(MainActivity.this);
//必须设置一个小图标属性
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle("您中奖啦!");
builder.setContentText("今天你有一个1亿元大红包!!!");
builder.setContentInfo("我是附加信息");
builder.setTicker("我是提示信息");
//设置点击自动消失
builder.setAutoCancel(true);
builder.setDefaults(Notification.DEFAULT_ALL);//效果是震动 音效 呼吸灯
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
//1.上下文2.请求码3.intent 4.flag
PendingIntent activity = PendingIntent.getActivity(MainActivity.this, 100, intent, PendingIntent.FLAG_ONE_SHOT);
builder.setContentIntent(activity);
//3.发送通知
systemService.notify(1,builder.build());
}
});
2.自定义通知
代码如下
b2.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onClick(View v) {
NotificationManager systemService = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//2.通知构建者
Notification.Builder builder = new Notification.Builder(MainActivity.this);
//必须设置一个小图标属性
builder.setSmallIcon(R.drawable.tu);
//设置自定义布局
RemoteViews remoteViews = new RemoteViews(getPackageName(),R.layout.layout);
builder.setContent(remoteViews);//remoteview
remoteViews.setTextViewText(R.id.w1,"《沙雕》");
//设置点击自动消失
builder.setAutoCancel(true);
//3.发送通知
systemService.notify(1,builder.build());
}
});
3.进度条通知 分为两个 模拟下载通知
一个是下载中 一个是正在安装中
代码如下
b3.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onClick(View v) {
final NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
final Notification.Builder builder = new Notification.Builder(MainActivity.this);
builder.setContentTitle("正在下载");
builder.setSmallIcon(R.drawable.tu);
manager.notify(3,builder.build());
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
int a=0;
@Override
public void run() {
builder.setProgress(100,a+=10,false);
manager.notify(3,builder.build());
if(a==100){
builder.setContentTitle("正在安装");
builder.setProgress(100,a+=10,true);
manager.notify(3,builder.build());
try {
Thread.sleep(2000);
Message obtain = Message.obtain();
obtain.obj="s";
MainActivity.this.handler.sendMessage(obtain);
} catch (InterruptedException e) {
e.printStackTrace();
}
manager.cancel(3);
timer.cancel();
}
}
},0,1000);
}
});
双击关闭
代码如下
long pre;//记录上一次时间
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
long timeMillis = System.currentTimeMillis();
if((timeMillis-pre)<=1000){
pre=timeMillis;
finish();//退出关闭页面
}else{
pre=timeMillis;
Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
return false;
}
}
return super.onKeyDown(keyCode, event);
}