【学习笔记】Android5.X Notification新功能初识

人盡茶涼 提交于 2020-03-01 13:46:24
  • 基本的Notification

    /**
         * 基本的Notification
         */
        private void notificationBasic(){
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com"));
            //构造pendingIntent
            PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
            //创建Notification对象
            Notification.Builder builder = new Notification.Builder(this);
            //设置Notification的各种属性
            builder.setSmallIcon(R.mipmap.ic_launcher);
            builder.setContentIntent(pendingIntent);
            builder.setAutoCancel(true);
            builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
            builder.setContentTitle("Basic Notification");
            builder.setContentText("这是一个基本通知");
            builder.setSubText("副标题");
            //通过NotificationManager来发出Notification
            NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
            notificationManager.notify(NOTIFICATION_ID_BASIC, builder.build());
        }



    效果:



  • 折叠式的Notification

    /**
         * 折叠式的Notification
         */
        private void notificationCollapsed(){
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com"));
            //构造pendingIntent
            PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
            //创建Notification对象
            Notification.Builder builder = new Notification.Builder(this);
            //设置Notification的各种属性
            builder.setSmallIcon(R.mipmap.ic_launcher);
            builder.setContentIntent(pendingIntent);
            builder.setAutoCancel(true);
            builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
    
            //通过RemoteViews来创建自定义的Notification视图
            RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification);
            contentView.setTextViewText(R.id.textView, "show me whe collapsed");
    
            Notification notification = builder.build();
            notification.contentView = contentView;
    
            //通过RemoteViews来创建自定义的Notification视图
            RemoteViews expandedView = new RemoteViews(getPackageName(), R.layout.notification_expanded);
            notification.bigContentView = expandedView;
    
            NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
            nm.notify(NOTIFICATION_ID_COLLAPSE, notification);
        }







  • 悬挂式的Notification

    /**
         * 悬挂式的Notification
         */
        private void notificationHeadSup(){
            Notification.Builder builder = new Notification.Builder(this)
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setPriority(Notification.PRIORITY_DEFAULT)
                    .setCategory(Notification.CATEGORY_MESSAGE)
                    .setContentTitle("悬挂式通知")
                    .setContentText("这是一个悬挂式通知");
    
            Intent push = new Intent();
            push.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            push.setClass(this, NotificationActivity.class);
            PendingIntent pi = PendingIntent.getActivity(this, 0, push, PendingIntent.FLAG_CANCEL_CURRENT);
            builder.setContentText("android5.0悬挂式通知")
                    .setFullScreenIntent(pi, true);
    
            NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
            nm.notify(NOTIFICATION_ID_HEADSUP, builder.build());
        }





  • 显示等级的Notification

    /**
         * 显示等级的Notification
         * Android 5.X将Notification分成了三个等级
         * VISIBILITY_PRIVATE 表示只有当没有锁屏的时候会显示
         * VISIBILITY_PUBLIC 表示在任何情况下都会显示
         * VISIBILITY_SECRET 表明在pin、password等安全锁和没有锁屏的情况下才能够显示
         */
        private void notificationVisibility(){
            Notification.Builder builder = new Notification.Builder(this)
                    .setContentTitle("Notification for Visibility Test")
                    .setColor(getResources().getColor(R.color.colorAccent));
            switch (rgVisibility.getCheckedRadioButtonId()){
                case R.id.rdo_private:
                    builder.setVisibility(Notification.VISIBILITY_PRIVATE);
                    builder.setContentText("Private");
                    builder.setSmallIcon(R.mipmap.ic_private);
                    break;
                case R.id.rdo_public:
                    builder.setVisibility(Notification.VISIBILITY_PUBLIC);
                    builder.setContentText("Public");
                    builder.setSmallIcon(R.mipmap.ic_public);
                    break;
                case R.id.rdo_secret:
                    builder.setVisibility(Notification.VISIBILITY_SECRET);
                    builder.setContentText("Secret");
                    builder.setSmallIcon(R.mipmap.ic_secret);
                    break;
            }
            NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
            nm.notify(NOTIFICATION_ID_VISIBILITY, builder.build());
        }




易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!