1. 自定义notification view, 因为不在一个进程中, 所以要用到RemoteViews这个类。
其中,notification_layout就是自己定义的布局。
然后将notification的contentview指定为自定义的RemoteViews。
注:为了更好的适配,在notification_layout布局中,title和text的文字样式要按Android版本配置。从Android2.3(API level 9)开始,notification背景色为黑色,2.3之前为白色,为了使字都能看清楚。
在values中的styles.xml的文件中添加style:
在values-v9的styles.xml中定义style:
然后在notification_layout布局中指定title和text的样式:
2. 如果想在自定义的view中添加可点击按钮,类似于播放器的快捷键。需要用到RemoteViews的setOnClickPendingIntent方法。
R.id.notifi_play_pause_btn是自定义布局文件中的按钮,当点击时,就会发送一个广播(Action为ON_NOTIFICATION_PLAY_BTN_CLICK),在这之前,你需要注册一个Receiver来接收这个广播:
在Receiver中,就可以做自己想做的事情了。 如例程,会重新设置notifi_play_pause_btn的image,然后暂停或播放。
注:在定义notification时,一定要定义notification.icon, 否则notification将无法显示。
当更新notification view时,如例程,更新播放按钮的暂停或播放状态,一定要重新notify notification,例程中是用startForeground方法,如果你没有用到Foreground Service, 可以用NotificationManager来notify, notify的Id一定要相同。
3. 如果想实时更新notification显示的icon,例如当播放器中,当唱片的图片下载完成时,显示到notification中,其实细心的同学可能发现,上图已经做了这一点。只是要记住,设置完notification.contentview后,不要忘了notify。如: