11월, 2016의 게시물 표시

android Notification의 Small Icon을 감싸는 색상 지정하기

이미지
이것을 무엇이라 검색을 해야할지 감이 안와서 이런저런 검색을 해보고 고민을 하다가
특정 API가 있는것을 확인하고 아래와 같이 글을 쓴다.


 위의 그림에서 노란색 동그라미 영역안에 보이는 아이콘을 커스텀으로 할 수 있는지에 대해 여러방면으로 알아봤다. 관련된 결론을 내면 아래와 같다.
(해당 위치의 아이콘을 아래에서는 "노티 위 작은 아이콘" 으로 한다.)


1. LargeIcon 옆의 작은 아이콘은 Small Icon이다.
   이 Small Icon은


    위와 같이 상단 Indicator에 보여지는 아이콘과 동일하다.
    5.0(롤리팝) 이상에서는 해당 아이콘이 흰색이어야 한다.
    만약 흰색이 아닌경우는 Crash까지 발생하는 단말이 있다.
    또한 흰색이 아닌경우는 "노티 위 작은 아이콘"에
    가장 유사한 형태의 기본 아이콘이 위치하게 된다.
    흰색의 아이콘인 경우는 정상적으로 노출.

2. 그 다음 의문은, "노티 위 작은 아이콘"을 감싸는 색상인데
   Notification.Builder의 setColor를 설정을 하면 색상이 설정된다.

3. Indicator에 노출되는 아이콘과, "노티 위 작은 아이콘"은
   디자인을 다르게 할 수 없다.

위의 내용은 너무나 간단한 것인데, 찾는데 시간이 걸렸어서
위와같이 간단히 정리를 해둡니다.

CustomView로 Android Notification 띄우기

현재 Android 7.0까지 나온 상황에서
6.0 이상에 추가된 Notification의 모든 기능을 활용하는 코드는 아니지만
5.0 부터 추가된 Headup Notification까지는 포함하는 코드이다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 publicstaticint showNotification(Context context, int iconResId, RemoteViews view, RemoteViews bigView, Class activityCls) {     Notification.Builder builder =new Notification.Builder(context)             .setSmallIcon(iconResId)             .setWhen(System.currentTimeMillis())             .setPriority(Notification.PRIORITY_MAX)             .setFullScreenIntent(getIntent(context, activityCls), true)             .setContentIntent(getIntent(context, activityCls));     Notification notification =null; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {         builder.setCustomContentView(view); if(bigView !=null) {             builder.setCustomBigContentView(bigView);         }         notification = builder.build();     } else  { if(Build.VERSION.SDK_INT >= Build.…