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
. 작동합니다!
'programing tip' 카테고리의 다른 글
.net에서 FFmpeg를 사용하십니까? (0) | 2020.12.02 |
---|---|
Gradle 및 다중 프로젝트 구조 (0) | 2020.12.02 |
Docker의 기본 WORKDIR은 무엇입니까? (0) | 2020.12.02 |
클래스 정적 변수 초기화 순서 (0) | 2020.12.02 |
높은 수준의 단위 테스트 및 모의 개체의 가치 (0) | 2020.12.02 |