Android通知Header详解

目录

1.示例:

2.View层级:

3.View详解:

4.自定义Header:

5.总结:

 


1.示例:

Android通知Header详解_第1张图片

2.View层级:

属性:

type(id) Width Height Margin(dp) Padding(dp) Gravity Layout_gravity Visibility others
top bottom start end top bottom start end
NotificationHeaderView(notification_header) wrap_content 48dp                       horizontal
CachingIconView(icon) 18dp 18dp       3dp                
TextView(app_name_text) wrap_content wrap_content     3dp 2dp               singleLine
TextView(header_text_divider) wrap_content wrap_content     2dp 2dp             gone  
TextView(header_text) wrap_content wrap_content     2dp 2dp             gone singleLine
TextView(time_divider) wrap_content wrap_content     2dp 2dp             gone singleLine
DateTimeView(time) wrap_content wrap_content     2dp 2dp           center gone singleLine
Chronometer(chronometer) wrap_content wrap_content     2dp 4dp             gone singleLine
NotificationExpandButton(expand_button) wrap_content wrap_content         1dp           gone  
ImageView(profile_badge) 12dp 12dp     4dp   1dp         center gone fitCenter

3.View详解:

  • CachingIconView(icon):

Android通知Header详解_第2张图片

调用setSmallIcon方法设置

  • TextView(app_name_text)

Android通知Header详解_第3张图片

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

允许系统应用修改:

需要申请此权限:



修改方法:

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

Android通知Header详解_第4张图片

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

  • TextView(header_text):

Android通知Header详解_第5张图片

方法:

setSubText:

setSummaryText:

冲突管理:

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

 

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

  • TextView(time_divider):

Android通知Header详解_第6张图片

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

  • DateTimeView(time):

Android通知Header详解_第7张图片

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

显示的配置:

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

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

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

  • Chronometer(chronometer):

Android通知Header详解_第8张图片

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

显示配置:

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):

Android通知Header详解_第9张图片

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

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

  • ImageView(profile_badge):

Android通知Header详解_第10张图片

功能:多用户特性中用来提示用户此通知是普通用户的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的基础。

你可能感兴趣的:(Android,通知)