Android通知笔记

RemoteViews只支持部分布局和控件

当我们自定义通知布局的时候,需要通过NotificationCompat.Builder设置自定义的RemoteViews。而RemoteViews中只支持部分布局和控件。如下所示。

布局

android.widget.AdapterViewFlipper
android.widget.FrameLayout
android.widget.GridLayout
android.widget.GridView
android.widget.LinearLayout
android.widget.ListView
android.widget.RelativeLayout
android.widget.StackView
android.widget.ViewFlipper

控件

android.widget.AnalogClock
android.widget.Button
android.widget.Chronometer
android.widget.ImageButton
android.widget.ImageView
android.widget.ProgressBar
android.widget.TextClock
android.widget.TextView

注意:上面的信息我是在android-29的RemoteViews源码中看到的,其他版本的像
android-26,android-27都没看到,感觉很奇怪。

自定义通知栏的展开布局和收起布局

在上面说通过NotificationCompat.Builder设置自定义的RemoteViews。有两个方法。

设置通知收起状态RemoteViews

public Builder setCustomContentView(RemoteViews contentView) {
    mContentView = contentView;
    return this;
}

设置通知展开状态的RemoteViews

public Builder setCustomBigContentView(RemoteViews contentView) {
    mBigContentView = contentView;
    return this;
}

下面看一下网易云和喜马拉雅通知布局的对比。

通知栏网易云展开布局,喜马拉雅收起布局

21596800244_.pic.jpg

通知栏网易云展开布局,喜马拉雅展开布局

11596800242_.pic.jpg

通知栏喜马拉雅展开布局,网易云收起布局

31596800279_.pic.jpg

通知栏喜马拉雅展开布局,网易云展开布局

41596800281_.pic.jpg

自定义通知栏高度

在官方的创建自定义通知布局中有这么一段话。“自定义通知布局的可用高度取决于通知视图。通常情况下,收起后的视图布局的高度上限为 64 dp,展开后的视图布局的高度上限为 256 dp”。

对这段话我的理解是:

  1. 自定义通知的收起布局高度可定制,通常情况下不要超过64dp,超过64dp会以实际高度显示。
  2. 自定义通知的展开布局高度可定制,通常情况下不要超过256dp,超过256dp会以实际高度显示。

接下来我们测试一下,测试机器

  • HUAWEI LLD-AL00,Android版本9

收起布局32dp,展开布局128dp,效果如下所示

收起布局效果

81596861118_.pic.jpg

展开布局效果

51596861113_.pic.jpg
71596861116_.pic.jpg
61596861115_.pic.jpg

收起布局64dp,展开布局256dp,效果如下所示

收起布局效果

121596861750_.pic.jpg

展开布局效果

91596861745_.pic.jpg
101596861747_.pic.jpg
111596861748_.pic.jpg

到这里,有个疑问,如果收起布局大于64dp,展开布局大于256dp会是什么效果呢?接续测试一下。

收起布局100dp,展开布局300dp,效果如下所示

收起布局效果


131596880704_.pic.jpg

展开布局效果

141596880706_.pic.jpg
151596880708_.pic.jpg
161596880709_.pic.jpg

在我的测试机上好像也没什么问题,就是我们的通知布局占据的高度变大了。

结论:可以自定义通知栏高度,但是无论是收起布局还是展开布局都不宜过大。过大的话,会导致用户在通知栏看到的通知数量减少,用户需要滑动才能看到更多的通知信息,影响用户体验。

源码请参考NotificationDemo的CustomizeNotificationActivity。

隐藏锁屏通知

这个需要在手机中设置。

参考链接:

  • 创建自定义通知布局
  • NotificationDemo

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