Android通知笔记

作者: leilifengxingmw | 来源:发表于2020-08-10 11:12 被阅读0次

    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。

    参考链接:

    相关文章

      网友评论

        本文标题:Android通知笔记

        本文链接:https://www.haomeiwen.com/subject/xydctktx.html