Android通知Header详解

目录

1.示例:

2.View层级:

3.View详解:

4.自定义Header:

5.总结:

 


1.示例:

2.View层级:

属性:

type(id)WidthHeightMargin(dp)Padding(dp)GravityLayout_gravityVisibilityothers
topbottomstartendtopbottomstartend
NotificationHeaderView(notification_header)wrap_content48dp           horizontal
CachingIconView(icon)18dp18dp   3dp        
TextView(app_name_text)wrap_contentwrap_content  3dp2dp       singleLine
TextView(header_text_divider)wrap_contentwrap_content  2dp2dp      gone 
TextView(header_text)wrap_contentwrap_content  2dp2dp      gonesingleLine
TextView(time_divider)wrap_contentwrap_content  2dp2dp      gonesingleLine
DateTimeView(time)wrap_contentwrap_content  2dp2dp     centergonesingleLine
Chronometer(chronometer)wrap_contentwrap_content  2dp4dp      gonesingleLine
NotificationExpandButton(expand_button)wrap_contentwrap_content    1dp     gone 
ImageView(profile_badge)12dp12dp  4dp 1dp    centergonefitCenter

3.View详解:

  • CachingIconView(icon):

调用setSmallIcon方法设置

  • TextView(app_name_text)

系统默认取应用的app_name来显示。

允许系统应用修改:

需要申请此权限:

<!-- @SystemApi Allows an application to replace the app name displayed alongside notifications in the N-release and later.
@hide  <p>Not for use by third-party applications.</p> -->
<permission android:name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME"
            android:protectionLevel="signature|privileged" />

修改方法:

builder.getExtras().putString(Notification.EXTRA_SUBSTITUTE_APP_NAME, "name");
  • TextView(header_text_divider):

这个不允许修改,系统会控制隐藏与显示,并且随文字的颜色变化而变化

  • TextView(header_text):

方法:

setSubText:

setSummaryText:

冲突管理:

  1. 只调用setSubText方法                 显示此方法设置的Text
  2. 只调用setSummaryText方法        显示此方法设置的Text
  3. 同时掉用上面2个方法                   显示setSubText放设置的Text

 

结论:优先使用setSubText方法设置的Text;若此方法没有设置,则使用setSummaryText方法设置的Title;若都没有设置,则显示HeaderText的View隐藏

  • TextView(time_divider):

这个不允许修改,系统会控制隐藏与显示,并且随文字的颜色变化而变化

  • DateTimeView(time):

功能:显示通知已经发出了多场时间 例如:刚刚、1分钟前、2分钟前、1小时前等等

显示的配置:

setShowWhen设置为true(默认值为false)

setUsersChronometer设置为false(默认值为false)

setWhen不能设置为0(默认值为System.currentTimeMillis()获取的毫秒值)

  • Chronometer(chronometer):

功能:显示精确计时:用户可以根据需要配置时间,并且可以选择是否为倒计时

显示配置:

setUsersChronometer设置为true(默认值为false)

setWhen不能设置为0(默认值为System.currentTimeMillis()获取的毫秒值)

setChronometerCountDown        true(倒计时)  false(正计时)  默认值为false

setShowWhen方法无论设置为true还是fasle  DateTimeView都会被隐藏

注:

    1.使用精确计时时调用setWhen方法需要以System.currentTimeMillis()为基准,也就是说setWhen(System.currentTimeMillis() + 偏移时长)。

    2.精确计时的最大单位为小时,最小单位为秒。若要显示几天或几月或几年,则换算成小时显示在冒号的前面。

  • NotificationExpandButton(expand_button):

功能:展开或隐藏通知的内容(通知内容非常多或者有多条通知时显示)

系统根据通知信息来控制显示与隐藏,当显示时,用户可以通过点击来控制内容全部显示或显示部分内容

  • ImageView(profile_badge):

功能:多用户特性中用来提示用户此通知是普通用户的APP所发出来的而不是管理用户(设备的拥有者,唯一)

此图标由系统根据userId来控制显示与隐藏,不提供API接口控制

4.自定义Header:

方法:setCustomHeadsUpContentView

/**
 * Supply custom RemoteViews to use instead of the platform template in the heads up dialog.
 *
 * This will override the heads-up layout that would otherwise be constructed by this
 * Builder object.
 */
public Builder setCustomHeadsUpContentView(RemoteViews contentView) {
    mN.headsUpContentView = contentView;
    return this;
}

当系统提供的Layout不能满足需求时,可以使用此方法来设计你需要的Header,建议使用之前参考系统的Layout设计来完善你设计的Layout.

5.总结:

  1. 通读此篇文章可以全面的了解系统通知Header的所有功能。
  2. 可以通过此篇文章学会通知Header的相关View的设置方法
  3. 此篇文章是学习不同通知Style的基础。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
响应头(Response Header)是在HTTP请求中服务器返回给客户端的一部分信息,用于描述响应的各种属性和特征。以下是对响应头的详细解释: 1. 状态行:状态行位于响应头的第一行,包括协议版本、状态码和状态消息。协议版本指示使用的HTTP版本,状态码表示请求的处理结果,状态消息是对状态码的简短描述。 2. 服务器信息:响应头包含服务器的信息,如服务器名称、软件版本等。这些信息可以帮助客户端了解正在与之通信的服务器环境。 3. 响应头字段:响应头中包含各种字段,用于描述响应的不同方面。常见的字段包括: - Content-Type:指定响应正文的媒体类型,如text/html、application/json等。 - Content-Length:指示响应正文的长度,以字节为单位。 - Cache-Control:指定客户端如何缓存服务器返回的响应。例如,max-age指示响应可被缓存的最长时间。 - Location:用于重定向响应,指定客户端应该请求的新URL。 - Set-Cookie:用于在响应中设置一个或多个Cookie,以在后续请求中保存状态信息。 - ETag:用于标识响应的内容,可用于缓存验证和重复请求的优化。 4. 其他字段:响应头可能包含其他自定义的或特定于应用程序的字段,用于传递额外的信息。 响应头的使用可以帮助客户端了解和处理服务器返回的响应。通过检查响应头中的字段和值,客户端可以确定响应的类型、大小、缓存策略、重定向信息等,从而适当地处理响应内容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值