码迷,mamicode.com
首页 > 移动开发 > 详细

[bug修复方案分享]Android4.0以上弹出Notification时图标显示不正常

时间:2015-09-28 18:50:52      阅读:973      评论:0      收藏:0      [点我收藏+]

标签:

1. 现象

在Android4.0以上系统中,弹出通知栏消息时图标显示不全,如下图:


技术分享


技术分享


2. 问题来源:

Android 4.0以上版本顶部导航栏StatusBar的实现类PhoneStatusBarbug


com.android.systemui.SystemUIServiceonCreate()中:


技术分享

在此处选择实例化statusbar(手机通知栏)还是systembar(平板通知栏):

技术分享

PhoneStatusBar.start() => StatusBar.start()时调用自身的虚函数addIcon()(即调用PhoneStatusBaraddIcon()函数)中实例化顶部导航栏IconviewPhoneStatusBarView)的时候,利用常数设置了缩放比例,并没有根据图片的实际大小缩放。

技术分享

3. 解决方案

1)初步:反射

public Notification(Context context, int icon, CharSequence tickerText, long when, CharSequence contentTitle, CharSequence contentText, Intent contentIntent) {}中的icon既是通知栏中提示的小icon,又是通知栏下拉菜单中的大icon,通知栏提示小icon无法修改,但是通知栏下拉菜单的大icon可以在组建RemoteViews时进行修改:

技术分享

技术分享

先在创建Notification时设置icon为小icon,在创建RemoteViews之后反射com.android.internal.R$idicon值,从而调用NotificationcontentView.setImageViewResource(id_icon, R.drawable.icon)重置大icon

2)进阶:android-support-v4.jar中的NotificationCompat.Builder

NotificationCompat.Builder支持设置smallicon(通知栏提示的小icon)和largeIcon(通知栏下拉菜单中的大icon)。NotificationCompat.Builder根据SDK版本的调用不同的实现类进行兼容。

[bug修复方案分享]Android4.0以上弹出Notification时图标显示不正常

标签:

原文地址:http://www.cnblogs.com/tieba/p/4844690.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!