SystemUi通知栏

视图

通知图标显示分析:

如上所述,所有的通知信息保存在了自定义view NotificationStackScrollLayout中,每个通知又被封装进了ExpandableNotificationRow中,其中主要保存信息内容的对象又是NotificationContentView,所以后续分析会涉及到这三个自定义view。

在SystemUI进程中对notification的处理流程如下:

 

源码分析

NotificationManagerService  :  PostNotificationRunnable

  

关键信息类

2. 获取NotificationChannel,如果为空提前结束通知的发送。

3. 创建StatusBarNotification,用于封装通知信息。

4. 创建NotificationRecord对象,封装了StatusBarNotification和一些其他的信息。

对应位置

  • frameworks/base/core/java/android/app/Notification.java
  • frameworks/base/core/java/android/app/NotificationManager.java
  • frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.java
  • frameworks/base/core/java/android/service/notification/NotificationListenerService.java
  • frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java
  • frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
  • frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java
  • frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowInflaterTask.java
  • frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
  • frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
  • frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationIconAreaController.java
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Android中,如果想要自定义下拉通知的颜色,可以通过修改SystemUI的相关设置来实现。 首先,为了修改SystemUI的颜色,需要获取相应的权限。我们可以在AndroidManifest.xml文件中添加如下代码: ```xml <uses-permission android:name="android.permission.STATUS_BAR"/> ``` 接下来,在我们的项目中创建一个名为values的文件夹,并在其中创建一个名为colors.xml的文件。在这个文件中,我们可以定义我们想要使用的颜色。例如,我们可以定义一个名为notification_background的颜色,用于设置下拉通知的背景颜色。代码如下: ```xml <resources> <color name="notification_background">#FF0000</color> </resources> ``` 然后,我们需要修改SystemUI的源代码,以更新背景颜色。具体来说,我们需要找到StatusBar类中的updateResources方法,并在该方法中添加以下代码: ```java Context context = mContext.createPackageContext("com.example.notificationtest", Context.CONTEXT_IGNORE_SECURITY); // 替换为自己的包名 int color = context.getResources().getColor(R.color.notification_background); mBackgroundView.setBackgroundColor(color); ``` 最后,我们需要重新编译并安装我们的应用程序。一旦安装完成,我们就可以看到下拉通知的背景颜色已经根据我们在colors.xml中定义的颜色进行了自定义。 以上是通过修改SystemUI的方式来自定义下拉通知的颜色。请注意,这种方式需要具备系统级权限,因此只适用于特定的Android设备。在实际开发中,请确保在使用这种方式之前了解并遵守相关的法规和政策,以避免违规行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值