Notification通知+双击退出操作

Notification通知

通知类型特殊方法
普通通知
进度条通知builder.setProgress(100,50,true);
自定义通知builder.setContent(remoteViews);

一.普通通知 (效果+代码)
在这里插入图片描述
代码如下:

 button1.setOnClickListener(new View.OnClickListener() {
            @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
            @Override
            public void onClick(View v) {
//              通知管理者
                NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//              通知构建者
                Notification.Builder builder = new Notification.Builder(MainActivity.this);

//              必须设置的属性,不设置没有通知显示
                builder.setSmallIcon(R.mipmap.ic_launcher);
//              其他属性
                builder.setContentTitle("我是标题");
                builder.setContentText("我是内容");
                builder.setContentInfo("我是附加信息");
                builder.setTicker("我是提示信息");
//              设置通知自动消失
                builder.setAutoCancel(true);
//              设置通知的效果  震动,音效,呼吸灯
                builder.setDefaults(Notification.DEFAULT_ALL);

                Intent intent = new Intent(MainActivity.this, Main2Activity.class);
//              上下文,请求码,intent对象,flag
                PendingIntent activity = PendingIntent.getActivity(MainActivity.this, 100, intent, PendingIntent.FLAG_ONE_SHOT);
//              设置跳转
                builder.setContentIntent(activity);

//              发送通知
                manager.notify(1,builder.build());
            }
        });

这样我们就完成的上面的效果图

二.自定义通知 (效果+代码)
在这里插入图片描述
代码如下:

//      自定义通知
        button2.setOnClickListener(new View.OnClickListener() {
            @TargetApi(Build.VERSION_CODES.N)
            @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
            @Override
            public void onClick(View v) {
//              通知管理者
                NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//              通知构建者
                Notification.Builder builder = new Notification.Builder(MainActivity.this);

//              必须设置的属性,不设置没有通知显示
                builder.setSmallIcon(R.mipmap.qqyinle);

//              设置自定义布局
                RemoteViews remoteViews = new RemoteViews(getPackageName(),R.layout.layout);
                builder.setContent(remoteViews);
//              安卓7版本以后的手机调用方法
//              builder.setCustomContentView(remoteViews);

//              发送通知
                manager.notify(2,builder.build());
            }
        });

这样我们就完成的上面的效果图

三.进度条通知 (效果+代码)
在这里插入图片描述
代码如下:

//      进度条通知
        button3.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.setSmallIcon(R.mipmap.ic_launcher);
               builder.setContentTitle("正在下载...");
               manager.notify(3,builder.build());

//             模拟下载
               final Timer timer = new Timer();
               timer.schedule(new TimerTask() {
                    int progress = 0;
                    @Override
                    public void run() {
                        builder.setProgress(100,progress+=10,false);
                        manager.notify(3,builder.build());
//						模拟安装
                        if (progress==100) {
                            builder.setProgress(100,100,true);
                            builder.setContentTitle("正在安装...");
                            manager.notify(3,builder.build());
                            try {
                                Thread.sleep(2000);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                            manager.cancel(3);
                            timer.cancel();
                            Message message = Message.obtain();
                            handler.sendMessage(message);
                        }
                    }
                },0,1000);
            }
        });
    }

这样我们就完成的上面的效果图

双击退出

Activity中重写onKeyDown方法

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
            long Time = System.currentTimeMillis();
            if (Time - l > 2000) {
                Toast.makeText(KeyEventActivity.this, "再按一次退出", Toast.LENGTH_SHORT).show();
                l = Time;
                return true;
            } else{
                finish();
            }
        }
        return super.onKeyDown(keyCode, event);
    }

这就是我所掌握的通知的所有知识与内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值