自定义notification view

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。如:



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值