Android5.0以上通知欄圖標設計

衆所周知,Android5.0以上系統通知欄做了很大改進,小圖標只能用alpha圖層進行繪製,不能用rgb圖層,就這個問題,我們用一個例子說話。

1. 廢話少說,直接上代碼

NotificationManager notificationManager= (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        NotificationCompat.Builder builder=new NotificationCompat.Builder(this);
        Notification notification=builder.setContentTitle(getString(R.string.notification_title))
                .setContentText(getString(R.string.notification_content)).setWhen(System.currentTimeMillis())
                .setDefaults(Notification.DEFAULT_LIGHTS).setSmallIcon(R.mipmap.weixin_raw)
                .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.weixin_raw))
                .setContentIntent(PendingIntent.getActivities(this,0x0001,new Intent[]{new Intent(this,MainActivity.class)},PendingIntent.FLAG_UPDATE_CURRENT))
                .build();

        notificationManager.notify(1,notification);

R.mipmap.weixin_raw的圖片如下:

微信圖標

2、效果圖如下:

通知欄沒有下拉時:

這裏寫圖片描述

可以看到,白乎乎的一個圖片,完全看不清圖標

通知欄下拉時:

這裏寫圖片描述

好像還蠻正常的,可以右下角有一個白乎乎的圓形圖標

3、下面我們按照google的要求改變小圖標

我們設計一個小圖標名字叫icon_weixin,如下

微信圖標

周圍全是透明,中間用白色勾勒出一個圖標

然後代碼設置如下

NotificationManager notificationManager= (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        NotificationCompat.Builder builder=new NotificationCompat.Builder(this);
        Notification notification=builder.setContentTitle(getString(R.string.notification_title))
                .setContentText(getString(R.string.notification_content)).setWhen(System.currentTimeMillis())
                .setDefaults(Notification.DEFAULT_LIGHTS).setSmallIcon(R.mipmap.icon_weixin)
                .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.weixin_raw))
                .setContentIntent(PendingIntent.getActivities(this,0x0001,new Intent[]{new Intent(this,MainActivity.class)},PendingIntent.FLAG_UPDATE_CURRENT))
                .build();

        notificationManager.notify(1,notification);

就改了一個地方,設置setSmallIcon(R.mipmap.icon_weixin)

下面看效果圖:

這裏寫圖片描述

這裏寫圖片描述

正常了有木有,不過下拉後那個小圖表默認是灰色邊,可以通知builder.setColor()改變這個顏色值

代碼如下

NotificationManager notificationManager= (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        NotificationCompat.Builder builder=new NotificationCompat.Builder(this);
        Notification notification=builder.setContentTitle(getString(R.string.notification_title))
                .setContentText(getString(R.string.notification_content)).setWhen(System.currentTimeMillis())
                .setDefaults(Notification.DEFAULT_LIGHTS).setSmallIcon(R.mipmap.icon_weixin)
                .setColor(Color.parseColor("#880000FF"))
                .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.weixin_raw))
                .setContentIntent(PendingIntent.getActivities(this,0x0001,new Intent[]{new Intent(this,MainActivity.class)},PendingIntent.FLAG_UPDATE_CURRENT))
                .build();

        notificationManager.notify(1,notification);

僅僅加了一行:setColor(Color.parseColor(“#880000FF”)),把顏色設置爲一個有透明度的藍色

效果圖如下:

這裏寫圖片描述

至此,我們的例子就完成了。

源碼地址:https://github.com/naiyizhang/BlogDemo/
項目下的NotificationDemo即爲源碼


需要設計師朋友特別注意的時,5.0以上的通知需要設計兩個兩個,大圖標正常設計,一般是應用的圖標;小圖標背景色要透明,然後用純白勾勒出你需要的圖標(用任意顏色都會表現爲白色)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章