Android Studio自定义通知

自定义布局

一般情况下,系统的通知,并不能满足我们的需求,且为了保证每个版本的样式统一。都会采用自定义布局的形式。
需要注意的是。在创建自定义布局的时候,我们需要提供两个 layout,一个收起的视图,它的高度上限为 64dp。一个是展开之后,它的上限为 256dp。

为内容区域创建自定义布局

一般的自定义布局中,我们可以借助通用模板去构建一个基本布局,即保留时间戳,通知图标等装饰,而自定义由标题和文本内容的区域。
这个时候,可以使用 NotificationCompat.DecoratedCustomViewStyle 设置到 style 中(如果为多媒体播放控件创建自定义通知。可以使用NotificationCompat.DecoratedMediaCustomViewStyle 类),一般步骤如下:

  1. 构建基本通知,使用NotificationCompat.Builder
  2. 调用 setStyle().想其传递 NotificationCompat.DecoratedCustomViewStyle 实例
  3. 将其自定义布局扩展为 RemoteViews 实例
  4. 调用 setCustomContentView 设置收起的通知布局
  5. 调用 setCustomBigContentView 设置扩展的通知布局
RemoteViews cusRemoveView = new RemoteViews(getPackageName(),R.layout.cus_notify_small);
RemoteViews cusRemoveExpandView = new RemoteViews(getPackageName(),R.layout.cus_notify_large);

mBuilder = new NotificationCompat.Builder(this)
             .setWhen(System.currentTimeMillis())
             .setSmallIcon(R.mipmap.ic_launcher)
             .setStyle(new NotificationCompat.DecoratedCustomViewStyle())
             .setCustomContentView(cusRemoveView)
             .setCustomBigContentView(cusRemoveExpandView);

其中,当我们在自定义布局时,通知的背景颜色可能因为版本而异,如果要跟随系统,在设置 TextView 控件时,可以使用 TextAppearance_Compat_Notification 样式,比如标题的TextAppearance_Compat_Notification_Title。 这样就能保证在不同版本中,textview 始终是正常显示的。比如 R.layout_cus_notify_small:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="64dp"
    android:orientation="vertical"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@style/TextAppearance.Compat.Notification.Title"
        android:text="我是标题"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@style/TextAppearance.Compat.Notification.Info"
        android:text="我是内容"/>

</LinearLayout>

注意,目前layout只支持 LinearLayout、FrameLayout、RelativeLayout三种基本布局

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值