文档章节

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

鬼风
 鬼风
发布于 2016/02/18 14:01
字数 450
阅读 302
收藏 1
  • 基本的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());
        }




© 著作权归作者所有

鬼风
粉丝 13
博文 116
码字总数 32745
作品 0
苏州
Android工程师
私信 提问
【学习笔记】Android 5.X UI 设计初识

Android 5.x系列开始使用新的设计风格Material Design来统一整个Android系统的界面设计风格。 1、材料的形态模拟 材料的形态模拟是Material Design中最核心也是改变最大的一个设计,Google通...

小树coding
2016/02/23
69
0
【学习笔记】ListView初识

处理空ListView 之前在做空数据的时候,会在ListView同界面再放一个其它控件,然后在ListView数据为空时,将控件显示,有数据再隐藏。 最近发现有方法直接处理:ListView处理空数据时,可用通...

小树coding
2016/01/17
76
0
Android 5.X的新特性实例

导语 Android 5.X新特性实例,理论知识戳这里。 主要内容 Android5.X切换动画 Toolbar的使用 基本的Notification 折叠式Notification 悬挂式Notification 具体内容 效果图: Android5.X切换动...

一个有故事的程序员
2017/10/24
0
0
Android 5.X的新特性及Material Design

导语 说来惭愧,Android8.0奥利奥都出了,我还在学5.0的新特性,看来得再努把力了,Material Design动画确实好看,查看实例戳这里。 主要内容 Android5.X UI设计初步 Palette 视图与阴影 Ti...

一个有故事的程序员
2017/10/24
0
0
【学习笔记】重构 初识一

将与业务无关的封装到类库中,可以重复使用 我的Module类库结构图: activity包中存放的是与业务无关的Activity基类。可以将基类BaseActivity封装到类库里,这里是与业务无关的公用逻辑,主项...

小树coding
2016/02/03
55
0

没有更多内容

加载失败,请刷新页面

加载更多

任正非对华为热点问题的回应亮了,终于知道华为为什么能扛过这一次的冲击!

任正非对华为热点问题的回应亮了,终于知道华为为什么能扛过这一次的冲击! 如果你是华为的老板,看到一条传遍网络的“美国封锁华为”、“华为禁令”的消息,你会怎么办? 昨天上午,华为创始...

forespider
45分钟前
2
0
Java HTTP 组件库选型看这篇就够了

最近项目需要使用 Java 重度调用 HTTP API 接口,于是想着封装一个团队公用的 HTTP client lib. 这个库需要支持以下特性: 连接池管理,包括连接创建和超时、空闲连接数控制、每个 host 的连...

Java面经
45分钟前
4
0
nginx 重启

在 nginx.config 配置目录下 输入命令: nginx -s reload 在 nginx 中,如果我修改了一个配置文件,或者新增了一个配置文件。按照群里网友的描述,我需要关闭 nginx,或者重启 nginx,比较麻...

MrBoyce
46分钟前
0
0
Cesium中级5 - Terrain 地形

Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ CesiumJS支持对与水流相关的海洋、湖泊和河流以及全球高分辨率地形进行流式处理和可视化。查看山峰、山谷...

Cesium中文网
59分钟前
0
0
搭建jupyter+nginx服务

Tips:该文章面向Mac和centos用户,如果是Windows用户,请先安装虚拟机。 概述 Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。 Jupyter ...

阿dai学长
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部