双击退出
自定义一个long值然后进行以下java代码
//双击退出
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK){
//判断用户两次按键的时间差是否在一个预期值之内,是的话直接直接退出,不是的话提示用户
if (System.currentTimeMillis() - n > 2000){
Toast.makeText(this, "确定要退出吗?", Toast.LENGTH_SHORT).show();
n = System.currentTimeMillis();
//当返回true时,表示已经完整地处理了这个事件,并不希望其他的回调方法再次进行处理
// 返回false时,表示并没有完全处理完该事件,更希望其他回调方法继续对其进行处理
return true;
}else {
finish();
}
}
return super.onKeyDown(keyCode, event);
}
Notitfcation 通知
简单通知没有任何交互 java代码
//发送简单通知
public void aaa(View view) {
//构造者
Notification.Builder builder = new Notification.Builder(this);
//设置属性
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle("我是标题");
builder.setContentText("内容");
//创建对象发送对象
Notification build = builder.build();
//获取通知管理器,负责发通知、清除通知等
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//发送通知 参数一 id 通知的id 参数二 通知对象
notificationManager.notify(1,build);
}
分组通知
//发送分组通知
public void aaa(View view) {
//获取通知管理器
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//构造者
Notification.Builder builder1 = new Notification.Builder(this);
Notification.Builder builder2 = new Notification.Builder(this);
Notification.Builder builder3 = new Notification.Builder(this);
builder1.setGroup("组");//分组 字符串一样为一组
builder1.setSmallIcon(R.mipmap.ic_launcher);
builder1.setContentTitle("标题1");
builder1.setContentText("内容1");
builder1.setGroupSummary(true);//隐藏
builder2.setGroup("组");
builder2.setSmallIcon(R.mipmap.ic_launcher);
builder2.setContentTitle("标题2");
builder2.setContentText("内容2");
builder3.setGroup("组");
builder3.setSmallIcon(R.mipmap.ic_launcher);
builder3.setContentTitle("标题3");
builder3.setContentText("内容3");
//发送通知 参数一 id 通知的id 参数二 通知对象
manager.notify(1, builder1.build());
manager.notify(2, builder2.build());
manager.notify(3, builder3.build());
}
进度条通知
//进度条通知
public void bbb(View view) {
//通知管理器
final NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//构造者
final Notification.Builder builder = new Notification.Builder(this);
//属性
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle("标题");
builder.setContentText("内容");
//延时器
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
//默认初始值
int n = 20;
@Override
public void run() {
n += 10;//每秒加10
builder.setContentText("进度为"+n);
//总值 当前值 是否模糊
builder.setProgress(100,n,false);
//更新通知(发送id相同的通知)
manager.notify(1,builder.build());
if (n >= 100){//判断进度大于100
builder.setContentText("正在安装...");
//模糊
builder.setProgress(0,0,true);
//更新
manager.notify(1,builder.build());
try {
//睡眠3秒 模拟安装过程时间
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//安装完了取消通知
manager.cancel(1);
timer.cancel();
}
}
},0,1000);
}
跳转通知
//跳转通知
public void ccc(View view) {
//通知管理器
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//构造者
Notification.Builder builder = new Notification.Builder(this);
//内容属性
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle("标题");
builder.setContentText("内容");
//intent跳转
Intent intent = new Intent(Main4Activity.this,Main3Activity.class);
//pendingintent 当前上下文 随意一个码 创建的intent
PendingIntent pendingIntent = PendingIntent.getActivity(Main4Activity.this,888,intent,Intent.FILL_IN_ACTION);
builder.setContentIntent(pendingIntent);//跳转
//级别 可以弹出来
builder.setPriority(Notification.PRIORITY_MAX);
builder.setDefaults(Notification.DEFAULT_ALL);
builder.setAutoCancel(true);//自动取消
manager.notify(1,builder.build());//发送通知
}
大图通知
//构造者
Notification.Builder builder = new Notification.Builder(MainActivity2.this);
//小图标 标题 大图通知不显示内容
builder.setSmallIcon(R.mipmap.ic_launcher);
builder.setContentTitle("标题");
//大图
Notification.BigPictureStyle bigPictureStyle = new Notification.BigPictureStyle();
bigPictureStyle.bigPicture(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));
//设置大图
builder.setStyle(bigPictureStyle);
//管理器发送通知
manager.notify(1,builder.build());