Android倚天剑之Notification之江南style

Notification使用指导与规范(原理篇) Notification使用指导与规范 阅读详情

传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.youkuaiyun.com/leverage_1229

        上回我们提到在4.0ICS之后,Google为Android平台的Notification这把“倚天剑”注入了更多新鲜的元素,使其更加实用美观。Notification的样式从此变得丰富起来,以适应于不同情景的需要。就像最近非常流行的神曲《江南style》一样,在世界各个角落出现了各种方言的版本,为不同肤色、民族、信仰的人们所接受和喜欢。本文我们将向大家展示一下这把“倚天剑”的各种style。

        一个通知就是一条消息,显示在你的应用程序之外的界面(通知栏)。当你告知系统需要发布一个通知时,它首先作为一个icon出现在状态栏区域。为了进一步了解它的细节,用户可以下拉状态栏展开至通知栏查看。

 


        备注:除非特别注明以外,本文所提到的Builder均为v4 Support Library中NotificationCompat.Builder,它在4.0ICS之后才引入。而Notification.Builder引入于3.0HoneyComb。

1通知视觉元素

        通知有两种可视化样式,取决于版本和通知抽屉的状态:

标准视图:在通知抽屉中显示标准视图的通知。

大型视图:当通知被展开时可以看到的一个大型视图。该视图也是扩展通知的一部分,该特征引入于4.1Jerry Bean。

1.1正常视图

        一个出现在标准视图中的通知,其高度是64dp。即使你使用大型视图创建一个通知,它仍然出现在标准视图中直至被展开。下面是一个正常视图的范例:


        “1”:内容标题,“2”:大型图标,“3”:内容文本,“4”:内容附加,“5”:小型图标,“6”:发布时间,可以使用setWhen()方法设置一个明确值。

1.2大型视图

        大型视图只有当通知被展开时才能出现,并且该通知必须位于通知drawer的顶部。用户可以借助手势(双指水平滑动或垂直滑动)展开或合拢它。可扩展的通知这一特征引入于4.1Jerry Bean。下面是一个收件箱样式的通知范例:



        细心的读者已经发现,大型视图的视觉元素与正常视图共享。不同之处在于“7”:通知细节区域。对于此区域的显示内容,各种大型视图通知有着不同的设置:

Big picture style:细节区域展现一个高度为256dp的bitmap。

Big text style:细节区域显示一个大型文本块。

Inbox style:细节区域包含文本行数。

        另外,如下的两个通知视觉元素仅支持大型视图,所以采用标准视图的请“靠边站”^-^:

Big content title:允许你添加一个标题去覆盖正常视图的内容标题,但它只能出现在可扩展的视图中。

Summary text:允许你在细节区域底端添加一行文本。

2创建通知要素

        你想在NotificationCompat.Builder对象中为通知指定UI信息和动作,就必须先使用NotificationCompat.Builder.build()方法来创建一个通知。该方法返回一个Notification对象,对了发布这个Notification对象,可以通过调用NotificationManager.notify()方法来传递它到系统中。

2.1必选的通知内容

        如下的三个通知视觉元素是必选的:

setSmallIcon():设置一个小型icon

setContentTitle():设置一个内容标题

setContentText():设置内容细节文本

2.2可选的通知内容

        除2.1所述的三个以外都是可选的^-^,详情可参考API NotificationCompat.Builder类。

2.3通知的动作

        虽然动作是可选的,你应该至少添加一个动作到通知中。一个动作允许用户从通知直接导航到应用程序的一个Activity中。在Activity中你将看到一个或更过的事件或是做进一步的工作。一个通知能够提供多个动作。你应该总是能够定义一个动作,当用户点击通知时触发它。通常这个动作会帮你打开一个应用程序的Activity。在4.1Jerry Bean之后,你还可以在通知中添加按钮来执行额外的动作(如:一个警告或即时响应的文本消息等)。前提是这些按钮的功能在Activity中可用。

        在一个通知里,其动作是通过一个含有能打开一个应用程序的Activity的意图的PendingIntent对象来定义的。使用手势附带PendingIntent对象,再调用NotificationCompat.Builder对象中的合适方法。例如:当用户在通知抽屉中点击通知文本的时候,如果你想要打开一个Activity,可以通过调用setContentIntent()方法来添加一个PendingIntent对象。

        用户点击通知启动一个Activity是最常见的情景。你也可以在用户销毁一个Activity的时候开启一个Activity。但请注意的是只有在4.1Jerry Bean之后,才能在通知抽屉中通过点击一个按钮来启动一个Activity。欲知更多信息,可查阅NotificationCompat.Builder的相关指南。

2.4兼容性处理

        并不是所有通知的功能都能用于特定的版本。例如动作按钮只能用于4.1Jerry Bean之后。因为只有从这个版本往后才有可展开的通知出现。为了确保达到最好的兼容性,请使用NotificationCompat及其子类创建通知,最好是NotificationCompat.Builder。此外,当你实现一个通知时,请遵循如下过程:

        无论用户使用什么版本,都应该提供通知所有的功能给所有用户。为了做到这一点,需要在一个Activity中验证所有功能是否可用。有时候你可能需要添加一个新的Activity。例如:当你想调用addAction()方法来控制媒体停止和播放时,首先应该在一个Activity中实现这个功能。

        当用户点击通知时,确保所有用户点击后都能启动一个界面。我们需要为Activity创建一个PendingIntent对象。然后调用setContentIntent()方法将PendingIntent对象添加到通知中去。

        现在可以在你想要使用的通知中添加可展开的特征。记住一点,当用户点击通知时,对于那些你想要添加到通知的功能,要保证它们在Activity中也是可用的。

3创建标准样式通知

3.1案例代码陈列

Notification normalNoti = new NotificationCompat.Builder(this)
            .setAutoCancel(true) // 设置自动清除
            .setContentInfo(String.valueOf(++normalNum)) // 设置附加内容
            .setContentTitle("5 new messages") // 设置内容标题
            .setContentText("lynnli1229@gmail.com") // 设置内容文本
            .setDefaults(Notification.DEFAULT_ALL)  // 设置使用所有默认值(声音、震动、闪屏等)
            .setLargeIcon(icon) // 设置大型图标
            .setSmallIcon(R.drawable.stat_notify_gmail)  // 设置小型图标
            .setTicker("Normal Notification") // 设置状态栏提示信息
            .build();

3.2案例效果展示

4创建收件箱样式通知

4.1案例代码陈列

Notification inboxNoti = new NotificationCompat.Builder(this)
            .setAutoCancel(true)
            .setContentInfo(String.valueOf(++inboxNum))
            .setContentTitle("5 new mails")
            .setContentText("lynnli1229@gmail.com")
            .setDefaults(Notification.DEFAULT_ALL)
            .setLargeIcon(icon)
            .setSmallIcon(R.drawable.stat_notify_gmail)
            .setTicker("Inbox Notification")
            .setStyle(new NotificationCompat.InboxStyle() // 设置通知样式为收件箱样式
                .addLine("M.Lynn reminder")
                .addLine("M.Lynn launch")
                .addLine("M.Lynn hello")
                .setSummaryText("+3 more")) // 设置在细节区域底端添加一行文本
            .build();

4.2案例效果展示

 

5创建大型文本样式通知

5.1案例代码陈列

Notification bigtextNoti = new NotificationCompat.Builder(this)
            .setAutoCancel(true)
            .setContentInfo(String.valueOf(++bigtextNum))
            .setContentTitle("New mail")
            .setContentText("lynnli1229@gmail.com")
            .setDefaults(Notification.DEFAULT_ALL)
            .setLargeIcon(icon)
            .setSmallIcon(R.drawable.stat_notify_gmail)
            .setTicker("BigText Notification")
            .setStyle(new NotificationCompat.BigTextStyle() // 设置通知样式为大型文本样式
                .bigText("Helper class for generating large-format notifications that include a lot of text. This class is a \"rebuilder\": It attaches to a Builder object and modifies its behavior, like so."))
            .build();

5.2案例效果展示

 

6创建大型图片样式通知

6.1案例代码陈列

Notification bigpictureNoti = new NotificationCompat.Builder(this)
            .setAutoCancel(true)
            .setContentInfo(String.valueOf(++bigpictureNum))
            .setContentTitle("New photo")
            .setContentText("lynnli1229@gmail.com")
            .setDefaults(Notification.DEFAULT_ALL)
            .setLargeIcon(icon)
            .setSmallIcon(R.drawable.stat_notify_gmail)
            .setTicker("BigPicture Notification")
            .setStyle(new NotificationCompat.BigPictureStyle() // 设置通知样式为大型图片样式
                    .bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.fantasy)))
            .build();

6.2案例效果展示

 

360°全景影像移动端类库--PanoramaGL 介绍         本指南将介绍一个PanoramaGL 0.1类库的简单用法,更多的细节请签出HelloPanoramaGL示例查看。 细节 1如何导入PanoramaGL类库? 1.1从源代码中导入 a下载PanoramaGL_0.1.zip或从代码仓库下载源代码 b如果你下载zip文件然后解压该文件 c在Eclipse中导入PanoramaGL项目: 点击“File”选择“ 阅读详情

相关推荐

如何高效使用和管理Bitmap--图片缓存管理模块的设计与实现

传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.youkuaiyun.com/leverage_1229         上周为360全景项目引入了图片缓存模块。因为是在Android4.0平台以上运作,出于惯性,都会设计之前查阅相关资料,尽量避免拿一些以前2.3平台积累的经验来进行类比处理。开发文档中有一个BitmapFun的示例,仔细拜读了一下,虽说围绕着Bitmap的方方面面讲

leverli的专栏 1万+

Android Notification 通知详解(兼容Android O)

当应用程序在后台运行,希望向用户发出一些提示学习,就需要借助Notification(通知)来实现。在发出一条通知后,手机最上方的状态栏会显示一个通知的图标,下拉状态栏后就可以看到通知的详细内容。 Notification是一种具有全局效果的通知,程序一般通过NotificationManager服务来发送Notification 一.基本用法 通知可以在活动里面创建,也可以在广播接收器里面创建,也可以在服务里面创建 2.1 创建一个NotificationManager Not...

wuto_的博客 2467

Miniconda入门:在CentOS上的安装、基本操作、目录结构、卸载

Miniconda是一个 免费的 轻量级的 conda安装程序 它只包含conda、Python、pip、zlib等基础的文件和依赖包 使用conda install命令可从Anaconda存储库中安装额外的conda包 简介 下载 安装 基本操作 虚拟环境的操作 包的操作 目录结构 卸载

ArYe 1万+

全面解析Notification

Notification在Android中使用的频率可以说是非常高的,本篇博客,我将围绕着Notification的各方面进行解析,使大家对Notification有更好的认识。Notification的使用步骤1.获取NotificationManager NotificationManager mNotificationManager = (NotificationManager) getSys

一个码农的博客 3万+

Profinet从站开发初体验:用p-net开源库和树莓派快速搭建一个IO设备模拟器

本文详细介绍了如何使用p-net开源库和树莓派快速搭建Profinet从站IO设备模拟器。从开发环境准备、p-net源码编译到设备模拟器功能实现,提供了全流程实战指南,帮助开发者快速掌握工业通信协议开发技巧,适用于工业自动化领域的设备互联测试与验证。

weixin_30384217的博客 383

射频指纹识别技术:原理、应用与深度学习实现

射频指纹识别(RFFI)是一种基于硬件特征的设备身份认证技术,通过分析无线设备发射信号中的独特硬件特征实现设备识别。其核心原理源于发射器硬件电路的非线性特性,如功率放大器的相位噪声和混频器的非线性失真,这些特征具有难以伪造的特点。在物联网和边缘计算场景中,RFFI技术展现出独特优势,尤其在智能家居和工业物联网中,能有效防止非法接入和设备伪造。深度学习方法的引入进一步提升了RFFI的性能,通过自动特征提取和端到端优化,显著提高了识别准确率。本文详细探讨了RFFI的技术原理、应用场景及实现方法,为相关领域的研究

weixin_30457465的博客 889

Notification讲解

notification即通知在开发中很常见,在开发中我们根据需求要实现各种各样的通知,如普通通知、进度条通知、可展开的通知、媒体通知、自定义布局的通知。本篇文章就来讲解这些通知的实现。普通通知为了兼容性我们用v7包下的NotificationCompat 来实现通知,这个类是继承了·v4包下的NotificationCompat。下面先写一个简单的通知,再慢慢讲解。 Notification

刘信的博客 742

opencv实现“找茬”

// 111.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; #define CVX_RED CV_RGB(0xff,0x00,0x00) #define CVX_BLUE CV_RGB(0x00,0x00,0xff)//定义宏,轮廓边框颜色 in

yanHa007的专栏 2094

Notification使用误区

Updating notifications To set up a notification so it can be updated, issue it with a notification ID by calling NotificationManager.notify(). To update this notification after you've issued

perfectnihil的博客 752

YOLOv11改进 | 模型知识蒸馏篇 | 利用模型蒸馏改进YOLOv11进行无损涨点 | CWDLoss(在线蒸馏 + 离线蒸馏)

这篇文章给大家带来最新改进的是模型的蒸馏利用教师模型指导学生模型从而进行模型的涨点,本文的内容不仅可以用于论文中,在目前的绝大多数的工作中模型蒸馏是一项非常重要的技术,所以大家可以仔细学习一下本文的内容,本文从YOLOv11的项目文件为例,进行详细的修改教程,文章内包括完整的修改教程,针对小白我出了视频修改教程,如果你还不会我提供了修改后的文件大家直接运行即可,所以说不用担心不会适用!模型蒸馏真正的无损涨点,蒸馏你只看这一篇文章就足够了!欢迎大家订阅我的专栏一起学习YOLO!

Snu77的博客 3302

【Arduino+ESP32专题】CP2102串口自动下载电路

CP2102串口自动下载电路原理是什么?

一点硬件 2956

[置顶] Android倚天剑之Notification之江南style

上回我们提到在4.0ICS之后,Google为Android平台的Notification这把“倚天剑”注入了更多新鲜的元素,使其更加实用美观。Notification的样式从此变得丰富起来,以适应于不同情景的需要。就像最近非常流行的神曲《江南style》一样,在世界各个角落出现了各种方言的版本,为不同肤色、民族、信仰的人们所接受和喜欢。本文我们就来耍耍这把“倚天剑”的各种styl...

weixin_30625691的博客 68

遥感影像道路提取算法——SGCN

用于从高分辨率遥感图像(TGRS)中提取复杂环境中道路的分割深度可分离图卷积网络摘要:高分辨率遥感图像的道路信息在各个领域得到广泛应用,基于深度学习的方法有效地显示了较高的道路提取性能。然而,在高分辨率遥感图像中,检测柏油路封闭或树木覆盖的道路,仍存在一些挑战,限制了提取的准确性:1)道路之间的阶级内差异较大,城市物体,特别是道路和建筑物之间的阶级间差异不明显;2)被树木、阴影和建筑物遮挡的道路难以提取;3)道路缺乏高精度遥感数据集。

littleyy666的博客 3845

Notification 使用方法详解

通知是应用向用户显示的消息提示,当发送通知时,通知将先以图标的形式显示在通知区域中。用户可以打开下拉通知栏查看通知的详细信息。 通知区域和下拉通知栏均是由系统控制的区域,用户可以随时查看。 Notification 简介 通知的创建 通知的管理 简单的通知 可以 扩展的通知 通知中含下载进度条 通知中含媒体播放控件 自定义通知内容 欢迎关注微信公众号:程序员Android ...

程序员Android 2481

uni-app - 修改默认端口,H5 项目控制台运行出来的 IP 地址的默认端口号(H5 项目运行后控制台,修改项目运行到内置浏览器默认 8080 端口号)

uni-app运行到H5修改默认端口号,uni-app如何修改默认端口,uni-app修改默认端口,uni-app本地运行修改调试已上线微信H5项目,请问在UNIAPP的H5运行调试时候的IP是否可以自己设置固定,uni-app开发环境,如何设置h5服务器的端口,uni-app如何修改默认端,uni-app修改默认端口,uni-app指定端口号,uni-app-修改H5项目控制台运行出来的IP地址的默认端口号(H5项目运行后控制台,修改项目运行到内置浏览器默认8080端口号)

🏆 前端领域优质创作者 9885

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Notification的功能与用法

Notifiaction是显示在手机状态栏的通知——手机状态栏位于手机屏幕的最上方,Notifiaction代表的是一种具有全局效果的通知,程序一般通过NotificationManager服务来发送Notification. NotificationManager是一个重要的系统服务,该API位于应用程序框架层,应用程序可通过NotificationManager向系统发送全局通知。 And...

iteye_709的博客 240

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android通知栏—Notification(二)

先研究一下,过几天再完成

weixin_42046829的博客 1483

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Android Notification 详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notification 相关的知识都看了一遍,稍作梳理,在此做个总结,以备不时之需。 温故而知新,可以为师矣~ 下图是我对 Notification 做的思维导图,也是本文的主要逻辑。  本文主要讲述 Notification 的基本操作部分,进阶部分的内容...

qq_41675150的博客 2856

Android定制组件之图文展示之中国好声音

传送门 ☞ Android兵器谱 ☞ 转载请注明 ☞ http://blog.youkuaiyun.com/leverage_1229         今天我们学习如何自定义TextView组件,让它既能显示文本,又能显示图像,达到“图文并茂”的效果。这种情景在新闻、文章、彩信内容中很常见。下面给出该场景的案例: 一、案例技术要点 1.创建attrs.xml文件用于设置自定义组件的属性、类型和样式。

leverli的专栏 1万+

让你的Android应用与外部元素互动起来

一个Android应用程序通常有几个activities。每个act显示一个用户接口允许用户执行一个指定的任务。用户从一个act到另一个act,你的App必须使用一个Intent对象来定义你App想做些什么事。当你通过一个Intent调用startActivity()方法时,系统会使用Intent来鉴定和启动合适的App组件。一个Intent可以明确的启动一个特定的组件(如一个特定的act实例)或

leverli的专栏 1万+

Android倚天剑之Notification之动感地带

传送门 ☞ Android兵器谱 ☞ 转载请注明 ☞ http://blog.youkuaiyun.com/leverage_1229 传送门 ☞ 系统架构设计 ☞ 转载请注明 ☞ http://blog.youkuaiyun.com/leverage_1229 传送门 ☞ GoF23种设计模式 ☞ 转载请注明 ☞ http://blog.youkuaiyun.com/leverage_1229         前

leverli的专栏 9935

Android凝碧剑之CalendarView之万年历

传送门 ☞ Android兵器谱 ☞ http://blog.youkuaiyun.com/leverage_1229 凝碧剑         张召重一挺凝碧剑,纵到陈家洛身前,说道:“你年纪轻轻,居然有这身功夫,你师父是谁?”。。。周绮拿了凝碧剑细看,找了几柄纯钢旧刀剑,一剑削下,应手而断,果然锐利无匹。徐天宏在一旁微笑注视。         今天我们学习如何利用Android平台“凝

leverli的专栏 7896
上一篇: Android倚天剑之Notification之亮剑IOS
下一篇: Android倚天剑之Notification之城管三千
innovation
博客等级 码龄14年 251粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值