programing tip

Android Lollipop에서 Notification.Builder.setSmallIcon으로 설정된 아이콘이 흰색 사각형으로 표시되는 이유는 무엇입니까?

itbloger 2020. 12. 2. 08:11
반응형

Android Lollipop에서 Notification.Builder.setSmallIcon으로 설정된 아이콘이 흰색 사각형으로 표시되는 이유는 무엇입니까?


이 코드가 있습니다.

Notification notif;

// Build notification
Notification.Builder notifBuilder = new Notification.Builder(context);
notifBuilder.setContentIntent(pendingIntent);
notifBuilder.setContentTitle(title);
notifBuilder.setSmallIcon(icon_resId);
notifBuilder.setContentText(ne.getCaption());
notifBuilder.setDefaults(Notification.DEFAULT_ALL);
notifBuilder.setAutoCancel(autocancel);
notifBuilder.setWhen(System.currentTimeMillis());
notif = notifBuilder.build();

Android 4.4에서 잘 작동합니다.

그러나 Android 5.0에서 상태 표시 줄에 표시된 아이콘은 흰색 사각형입니다. 장치가 잠겼을 때 나타나는 새로운 "알림 본문"에 표시된 아이콘이 올 바릅니다.

에서 http://developer.android.com/reference/android/app/Notification.Builder.html , 나는 API 레벨 21에 알림 아이콘에 대한 새로운 아무것도 표시되지 않습니다


문서를보십시오 : http://developer.android.com/design/style/iconography.html

"알림 아이콘은 완전히 흰색이어야합니다. 또한 시스템이 아이콘을 축소하거나 어둡게 할 수 있습니다."


아이콘 크기를 16x16px로 변경하고 흰색 만 사용하도록 해결했습니다.


알림 아래에있는 Android 개발자 사이트의 Android 5.0 동작 변경 사항에 명시된대로 :

알림은 새 머티리얼 디자인 위젯과 일치하도록 흰색 (또는 매우 밝은) 배경 위에 어두운 텍스트로 그려집니다. 모든 알림이 새로운 색 구성표로 올바르게 표시되는지 확인하십시오. 알림이 잘못 보이면 수정하세요.

아이콘 이미지 뒤의 원 안에 강조 색상을 설정하려면 setColor ()를 사용하십시오. 색상이 포함 된 자산을 업데이트하거나 제거합니다. 시스템은 활동 아이콘과 기본 알림 아이콘에서 모든 비 알파 채널을 무시합니다. 이러한 아이콘이 알파 전용이라고 가정해야합니다. 시스템은 알림 아이콘을 흰색으로, 작업 아이콘을 진한 회색으로 그립니다.

http://developer.android.com/about/versions/android-5.0-changes.html .


중복 : Android 5 Lollipop에서 알림 표시 줄 아이콘이 흰색으로 바뀜

요약 :

Android 5 업데이트 : https://developer.android.com/about/versions/android-5.0-changes.html 알림-> 머티리얼 디자인 스타일

색상이 포함 된 자산을 업데이트하거나 제거합니다. 시스템은 활동 아이콘과 기본 알림 아이콘에서 모든 비 알파 채널을 무시합니다. 이러한 아이콘이 알파 전용이라고 가정해야합니다. 시스템은 알림 아이콘을 흰색으로, 작업 아이콘을 진한 회색으로 그립니다.

다음을 사용하여 작은 아이콘 배경색을 설정할 수 있습니다 (기본값은 회색).

Notification.Builder#setColor(int)

이것을 매니페스트에 추가하십시오-

 <meta-data android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@drawable/ic_notification" />

Android 5.0에서 상태 표시 줄에 표시된 아이콘은 5.0 Lollipop '알림 아이콘이 완전히 흰색이어야 함' 때문에 흰색 사각형 입니다.

이러한 유형의 아이콘은 재질 아이콘에서 쉽게 찾을 수 있습니다. 방문 : https://material.io/icons/

Google은 또한 setColor()메서드를 사용하여 흰색 알림 아이콘 뒤에 표시되는 맞춤 색상을 사용하도록 제안합니다 .

자세한 내용은 https://developer.android.com/about/versions/android-5.0-changes.html을 방문하십시오.


여전히 이것을보고있는 사람은 아이콘을 올바르게 표시하는 가장 간단한 방법은 먼저 여기에서 Android Icon Studio로 렌더링하는 것입니다.

https://romannurik.github.io/AndroidAssetStudio/icons-notification.html

다운로드 한 zip 파일의 압축을 프로젝트 / main 폴더에 풀어 관련 drawable-xxxx 폴더에 넣습니다.

그런 다음 알림에서 색상을 변경하려면 다음과 같이 사용하십시오.

NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
    .setSmallIcon(R.drawable.ic_notification_appicon) // <-- Icon from Android Icon Studio 
    .setColor(context.getColor(R.color.holo_blue))    // <-- Set your preferred icon colour to appear in the notification dropdown list
    .setContentTitle("Title")
    .setContentText("Content")
    .setAutoCancel(true)
    .setCategory(NotificationCompat.CATEGORY_EVENT)
    .setDefaults(Notification.DEFAULT_ALL)
    .setPriority(NotificationCompat.PRIORITY_DEFAULT);

를 제거 android:targetSdkVersion="21"에서 manifest.xml. 작동합니다!

참고URL : https://stackoverflow.com/questions/27188689/why-do-icons-set-with-notification-builder-setsmallicon-in-android-lollipop-show

반응형