Android 通知栏自定义样式

8.0系统的通知栏适配

在8.0之前我们通知栏的使用:

 notification = new NotificationCompat.Builder(mContext)
                    .setWhen(System.currentTimeMillis())
                    .setSmallIcon(R.drawable.small_icon)

但如果SDK升级到8.0或者以上你会发现这个构建通知的方法已经废弃,并且无法显示通知,这是因为在8.0上引用了产商通道的概念,所以在8.0及以上构建通知的方法改为:

NotificationManager  mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = new NotificationChannel(channelId, channelName, importance);
mNotificationManager.createNotificationChannel(mChannel);

通知栏自定义样式

自定义通知栏我们就要使用RemoteViews了,在SDK为16及以上才支持。

private RemoteViews getContentBigView() {
        mRemoteViews = new RemoteViews(mContext, R.layout.view_baig_notify);
        return mRemoteViews;
    }

自定义通知栏会有大图样式和小图样式即普通样式和扩展样式,高度上边会有要求限制,普通样式高度不能超过64dp,扩展高度不能超过256dp。
今天我们主要讲一下大小图样式显示的适配。
如果我们可爱的产品和设计妹子给到了优美的大图样式,那我们的设置方法如下:

 Notification notification = new NotificationCompat.Builder(mContext, id)
                    .setSmallIcon(R.drawable.small_icon)
                    .setWhen(System.currentTimeMillis())
                    .setContentIntent(getDefaultIntent(Notification.FLAG_ONGOING_EVENT))
                    .setCustomBigContentView(getContentBigView()
                    .setChannelId(mChannel.getId())
                    .build();
 mNotificationManager.notify(NOTIFICATION_ID, notification);

在手机上运行一下,看到了大图样式那么好看,美滋滋的提交代码,提测给测试。but,,,测试拿着手机来告诉你通知栏大图样式显示不完整,what。。。拿起手机一看,真的是。。。 为什么自己手机上是可以的呢?天杀的通知栏适配,这个通知栏的高度不同的机型不同的room可能测绘出来的大小不同。
仔细看了网易云音乐通知栏的样式,发现适配了默认样式和扩展样式,那么,我们就再适配一套默认样式吧。

Notification notification = new NotificationCompat.Builder(mContext, id)
                    .setSmallIcon(R.drawable.small_icon)
                    .setWhen(System.currentTimeMillis())
                    .setContentIntent(getDefaultIntent(Notification.FLAG_ONGOING_EVENT))
                    .setCustomContentView(getContentView())
                    .setCustomBigContentView(getContentBigView()
                    .setChannelId(mChannel.getId())
                    .build();
 mNotificationManager.notify(NOTIFICATION_ID, notification);
private RemoteViews getContentView() {
        mRemoteViews = new RemoteViews(mContext, R.layout.view_notify);
        return mRemoteViews;
    }

上图,画质有些渣。。。
如图,画质有些渣。。。
这样,通知栏的样式适配就完成了,当然还有一些背景颜色和字体颜色的适配,这里就不展开讲了。
点击这里获取demo

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Android通知工具是指用于管理和展示Android设备上通知的应用程序或服务。通知Android系统中用于显示各种通知的一个区域,用户可以从通知中查看和操作通知消息。 通知工具通常具有以下功能: 1. 通知管理:可以管理并展示来自各个应用程序的通知消息,包括短信、电话、社交媒体等各种类型的通知。用户可以通过通知工具集中查看和处理这些通知,提高管理效率。 2. 快捷操作:通知工具可以提供一些快捷操作,例如回复短信、拒接来电、播放音乐等,用户可以直接在通知中完成这些操作,无需打开具体的应用程序。 3. 状态显示:通知工具可以显示设备的一些状态信息,例如电量、网络连接状态、音量等。用户可以通过通知随时查看这些状态信息,方便实时监控设备的运行情况。 4. 个性化设置:通知工具通常支持各种个性化设置,用户可以自定义通知样式、主题、通知显示方式等,以满足个人需求和喜好。 5. 通知过滤:通知工具可以根据用户的设置对通知进行过滤,屏蔽一些不重要的通知或者将其归类整理。这样可以减少通知的干扰,提高通知的有效性。 总之,Android通知工具为用户提供了一个方便管理和操作通知的工具,帮助用户更高效地处理来自各个应用程序的通知消息,使得使用Android设备更加便捷和舒适。 ### 回答2: Android通知工具是一个用于在Android设备上显示通知的功能。通知工具可以在应用程序运行时发送各种类型的通知,包括文本、图标、声音、振动等。通过使用通知工具,用户可以接收到来自应用程序的重要信息和提示,而无需打开应用程序。 通知工具可以帮助应用程序在后台运行或用户退出应用程序后继续发送通知。它提供了一种简单而高效的方式来向用户发送通知,帮助用户及时了解到关键信息。 通知工具还可以支持用户与通知进行交互。用户可以通过点击通知来打开相关的应用程序或执行其他操作。此外,通知工具还提供了通知的展示方式的设置选项,用户可以根据自己的偏好设置通知的显示样式。 在Android开发中,通知工具是一个很重要的模块。开发人员可以通过使用Android提供的通知相关的API,轻松地创建和发送通知。他们可以定义通知的标题、内容、图标、声音等属性,并设置通知的行为和交互。 总的来说,Android通知工具为应用程序提供了一种方便、快捷的方式来与用户进行沟通和交互。通过使用通知工具,应用程序可以将重要信息推送给用户,并提供与用户的实时互动。这使得Android设备的用户体验更加完善和高效。 ### 回答3: Android通知工具是一种用于在Android设备上显示通知的工具。在Android操作系统中,通知是一个重要的功能,它可以显示各种通知,如消息、提醒、更新等。通知工具提供了一种便捷的方式来管理和显示这些通知通知工具可以帮助用户及时了解到重要的信息,无论是收到短信、电话、邮件,还是其他应用的通知,都可以通过通知工具进行展示。用户可以通过下拉通知来查看通知的详细内容,并进行相应的操作,例如回复短信、接听电话、打开邮件等。 通知工具还可以提供一些额外的功能,如展示音乐播放器控制按钮、显示天气信息、提供快捷操作按钮等。这些功能可以提升用户体验,让用户方便地控制和获取信息。 通知工具还支持通知的管理和设置。用户可以根据自己的喜好和需求,对通知进行分类、过滤和优先级设置。用户还可以通过设置来自定义通知样式、铃声和震动模式等。 总之,Android通知工具是一种非常实用的工具,它可以帮助用户及时了解到各种通知,并提供了方便的操作和管理功能。通过使用通知工具,用户可以更好地掌控自己的Android设备和获取重要的信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值