Adaptive 아이콘 이미지가 Oreo에 표시되지 않으므로 대응
개요
Android 8에 응용 프로그램의 아이콘 이미지를 표시하려고 했지만 표시되지 않았습니다.Oreo에서 가져온 사용자 정의 아이콘을 Bitmap 객체로 변환할 수 없습니다.여기서 나는 몇 가지 대책을 총결하였다.
이벤트
확인된 작업 환경은 안드로이드 8.1이고 구축할 때의 targetSdkVersion은 27입니다.
여기에는'test channel'ID를 가진 노티픽션 채널이 제작됐다.
Android Studio에서 새 프로젝트를 만들고 Notification을 만들 때 다음과 같이 Notification을 만들 때 Android 8 환경 알림의 LargeIcon에 이미지가 표시되지 않습니다.안드로이드 8이 채워지지 않은 경우 표시됩니다.
또한, R.mipmap.ic_launcher는 응용 프로그램의 lanchar 아이콘으로 사용되는 자원입니다.Notification notification = new NotificationCompat.Builder(context, "test_channel")
.setContentTitle("Title")
.setContentText("Message")
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))
.build();
표시된 알림 내용
표시하려고 했던 알림 내용
까닭
BitmapFactory.decodeResource 메서드는 사용자 적응 아이콘을 지원하지 않고 null로 돌아갑니다.
Android 8에서 가져온 사용자 적응 아이콘에 적절하게 대응하면 리소스의 구성은 다음과 같습니다.적어도 안드로이드 스튜디오 3.2가 만든 프로젝트는 이렇게 구성됐다.
ic_launcher.png은 Android 8이 가득 차지 않은 아이콘으로 격자 이미지 자원, iclauncher.xml은 Android 8 이후에 사용할 사용자 정의 아이콘에 대한 XML 에셋입니다.AndroidManifest.xml에서 지정한 자원의 관계에 있어서, 나는 이 두 파일이 같은 파일 이름이라고 생각한다.그 결과 안드로이드 8 미만과 8 이상 참조된 자원이 다르면 문제가 발생할 수 있다는 것이다.
확인하려면 다음 코드를 사용하여 리소스에서 Drawable 객체를 만듭니다.Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.mipmap.ic_launcher, null);
그럼 안드로이드 8이 안 되면 비트맵 Drawable, 8 이후에는 Adaptive IconDrawable가 반환됩니다.참고로 API21 이후에 벡터 이미지를 사용하는 경우 VectorDrawable이 반환됩니다.
대책
이전 아이콘 자원 IClauncher.png을 직접 참조하는 방법이 있다면 말하기는 간단하지만 그런 방법을 찾을 수 없기 때문에 다음과 같은 대책이 있을 수 있다고 생각합니다.
1. 아이콘 이미지 준비
다른 파일 이름의 아이콘을 위한 이미지 자원을 준비합니다.이것은 매우 간단하고 강직한 방법이다.일반적으로 이렇게 하면 된다.아이콘 이미지의 변경이 누락될까 봐 데이터의 이중 관리를 절대 허용할 수 없다는 생각은 적용되지 않는다.
2. 비트맵으로 변환
사용자 정의 아이콘을 Bitmap으로 변환합니다.구체적으로 Adaptive Icon을 Bitmap으로 변환하는 방법은 다음과 같습니다.또한 아이콘에 벡터 이미지를 설정하면 VectorDrawable을 따로 처리해야 합니다.
참고 자료
Convert AdaptiveIconDrawable to Bitmap in Android O preview - Stack Overflow
https://stackoverflow.com/questions/44447056/convert-adaptiveicondrawable-to-bitmap-in-android-o-preview @RequiresApi(api = Build.VERSION_CODES.O)
public static Bitmap getAppIcon(PackageManager mPackageManager, String packageName) {
try {
Drawable drawable = mPackageManager.getApplicationIcon(packageName);
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable) drawable).getBitmap();
} else if (drawable instanceof AdaptiveIconDrawable) {
Drawable backgroundDr = ((AdaptiveIconDrawable) drawable).getBackground();
Drawable foregroundDr = ((AdaptiveIconDrawable) drawable).getForeground();
Drawable[] drr = new Drawable[2];
drr[0] = backgroundDr;
drr[1] = foregroundDr;
LayerDrawable layerDrawable = new LayerDrawable(drr);
int width = layerDrawable.getIntrinsicWidth();
int height = layerDrawable.getIntrinsicHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
layerDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
layerDrawable.draw(canvas);
return bitmap;
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
매번 변환 처리를 피하기 위해서 아이콘 이미지를 어디에 저장하십시오.
3. foreground 이미지 사용
이것은 사용할 수 있고 사용할 수 없는 상황이 있다.
아이콘launcher.xml의 구체적인 내용은 다음과 같다.<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
실제 디스플레이는 백그라운드와foreground 두 자원을 중첩하여 구성한 것이다.리소스는 래스터 이미지, 벡터 이미지, 단색 등을 지정할 수 있습니다.foreground에서 LargeIcon 이미지 ic로 이전 래스터 이미지 지정하기launcher가 아닌 래스터 이미지를 지정합니다.
이 방법의 단점은foreground가 울타리 이미지 이외의 상황에서 사용할 수 없다는 것이다(실제로 안드로이드 스튜디오 프로젝트가 제작한 샘플은 벡터 이미지이다). 아이콘 디자인과 관계상foreground가 반드시 적당한 이미지가 되지는 않는다는 것이다.예를 들어foreground는 문자만 있고 백ground의 배경과 겹쳐서 원래 디자인된 아이콘이 되지만 이 경우 문자만 표시됩니다.
4. Icon 객체 사용
NotificationCompat.Builder가 아닌 Notification입니다.이는 Builder를 사용하는 사용자를 위한 방법입니다.Notification.Icon 객체를 사용하여 LargeIcon을 설정할 수 있습니다.다음 코드에서는 Adaptive 아이콘을 Icon 객체로도 사용할 수 있으므로 LargeIcon으로 간단하게 사용할 수 있습니다.Icon icon = Icon.createWithResource(this, R.mipmap.ic_launcher);
Icon 객체는 API23 이후의 해당 객체이므로 이전 버전을 지원할 때 별도의 대응이 필요합니다.
출력의 차이
열거한 대책 중 3개를 실제로 출력하면 아이콘이 미묘하게 달라진다.참고로 제공하다.
1 아이콘 이미지 추가 준비
2Bitmap으로 변환
4 Icon 객체 사용
총결산
어쨌든 저는 아이콘 그리기에 대한 정리를 해 봤습니다. 다른 대책이 있다면 말씀해 주시면 감사하겠습니다.
Android Oreo에서 가져온 Adaptive 아이콘은 생각보다 까다로운 것입니다.그러나 대응하지 않으면 흰색 테두리가 달린 작은 이미지(환경, 설정에 따라)가 나타나 얄밉게(규격)될 수 있기 때문에 단순히 무시할 수도 없다.하지만 이에 대응해 이번에는 앱 내 아이콘 표시에 문제가 생겨 새로운 괴롭힘이라고 생각한다.
또한 Notification의 SmallIcon 사람들은 아이콘에 적응하는 자원 ID를 지정할 때도 표시되는 것을 정말 싫어한다.
이번에 사건으로 열거한 노티피케이션의 아이콘은 상상했던 아이콘이 없다가 1시간 넘게 고민했다는 것을 보여준다.혼자 그렇게 시간을 낭비하는 사람을 줄이기 위해 이번에 이런 기사를 만들어 봤다.
별말씀을요, BitmapFactory.decodeResource 방법은 디코딩에 실패할 때 예외가 나타나지 않고 null로 되돌아오기 때문에 응용에 따라 Andorid8에 대응하는 개조를 눈치채지 못하면 아이콘이 표시되지 않는 응용이 있을 수 있습니다.만약 단서가 있다면 프로그램을 다시 한 번 살펴보는 것도 괜찮다.
Reference
이 문제에 관하여(Adaptive 아이콘 이미지가 Oreo에 표시되지 않으므로 대응), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wa2c/items/1f012a012b628ed0576a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
확인된 작업 환경은 안드로이드 8.1이고 구축할 때의 targetSdkVersion은 27입니다.
여기에는'test channel'ID를 가진 노티픽션 채널이 제작됐다.
Android Studio에서 새 프로젝트를 만들고 Notification을 만들 때 다음과 같이 Notification을 만들 때 Android 8 환경 알림의 LargeIcon에 이미지가 표시되지 않습니다.안드로이드 8이 채워지지 않은 경우 표시됩니다.
또한, R.mipmap.ic_launcher는 응용 프로그램의 lanchar 아이콘으로 사용되는 자원입니다.
Notification notification = new NotificationCompat.Builder(context, "test_channel")
.setContentTitle("Title")
.setContentText("Message")
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))
.build();
표시된 알림 내용표시하려고 했던 알림 내용
까닭
BitmapFactory.decodeResource 메서드는 사용자 적응 아이콘을 지원하지 않고 null로 돌아갑니다.
Android 8에서 가져온 사용자 적응 아이콘에 적절하게 대응하면 리소스의 구성은 다음과 같습니다.적어도 안드로이드 스튜디오 3.2가 만든 프로젝트는 이렇게 구성됐다.
ic_launcher.png은 Android 8이 가득 차지 않은 아이콘으로 격자 이미지 자원, iclauncher.xml은 Android 8 이후에 사용할 사용자 정의 아이콘에 대한 XML 에셋입니다.AndroidManifest.xml에서 지정한 자원의 관계에 있어서, 나는 이 두 파일이 같은 파일 이름이라고 생각한다.그 결과 안드로이드 8 미만과 8 이상 참조된 자원이 다르면 문제가 발생할 수 있다는 것이다.
확인하려면 다음 코드를 사용하여 리소스에서 Drawable 객체를 만듭니다.Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.mipmap.ic_launcher, null);
그럼 안드로이드 8이 안 되면 비트맵 Drawable, 8 이후에는 Adaptive IconDrawable가 반환됩니다.참고로 API21 이후에 벡터 이미지를 사용하는 경우 VectorDrawable이 반환됩니다.
대책
이전 아이콘 자원 IClauncher.png을 직접 참조하는 방법이 있다면 말하기는 간단하지만 그런 방법을 찾을 수 없기 때문에 다음과 같은 대책이 있을 수 있다고 생각합니다.
1. 아이콘 이미지 준비
다른 파일 이름의 아이콘을 위한 이미지 자원을 준비합니다.이것은 매우 간단하고 강직한 방법이다.일반적으로 이렇게 하면 된다.아이콘 이미지의 변경이 누락될까 봐 데이터의 이중 관리를 절대 허용할 수 없다는 생각은 적용되지 않는다.
2. 비트맵으로 변환
사용자 정의 아이콘을 Bitmap으로 변환합니다.구체적으로 Adaptive Icon을 Bitmap으로 변환하는 방법은 다음과 같습니다.또한 아이콘에 벡터 이미지를 설정하면 VectorDrawable을 따로 처리해야 합니다.
참고 자료
Convert AdaptiveIconDrawable to Bitmap in Android O preview - Stack Overflow
https://stackoverflow.com/questions/44447056/convert-adaptiveicondrawable-to-bitmap-in-android-o-preview @RequiresApi(api = Build.VERSION_CODES.O)
public static Bitmap getAppIcon(PackageManager mPackageManager, String packageName) {
try {
Drawable drawable = mPackageManager.getApplicationIcon(packageName);
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable) drawable).getBitmap();
} else if (drawable instanceof AdaptiveIconDrawable) {
Drawable backgroundDr = ((AdaptiveIconDrawable) drawable).getBackground();
Drawable foregroundDr = ((AdaptiveIconDrawable) drawable).getForeground();
Drawable[] drr = new Drawable[2];
drr[0] = backgroundDr;
drr[1] = foregroundDr;
LayerDrawable layerDrawable = new LayerDrawable(drr);
int width = layerDrawable.getIntrinsicWidth();
int height = layerDrawable.getIntrinsicHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
layerDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
layerDrawable.draw(canvas);
return bitmap;
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
매번 변환 처리를 피하기 위해서 아이콘 이미지를 어디에 저장하십시오.
3. foreground 이미지 사용
이것은 사용할 수 있고 사용할 수 없는 상황이 있다.
아이콘launcher.xml의 구체적인 내용은 다음과 같다.<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
실제 디스플레이는 백그라운드와foreground 두 자원을 중첩하여 구성한 것이다.리소스는 래스터 이미지, 벡터 이미지, 단색 등을 지정할 수 있습니다.foreground에서 LargeIcon 이미지 ic로 이전 래스터 이미지 지정하기launcher가 아닌 래스터 이미지를 지정합니다.
이 방법의 단점은foreground가 울타리 이미지 이외의 상황에서 사용할 수 없다는 것이다(실제로 안드로이드 스튜디오 프로젝트가 제작한 샘플은 벡터 이미지이다). 아이콘 디자인과 관계상foreground가 반드시 적당한 이미지가 되지는 않는다는 것이다.예를 들어foreground는 문자만 있고 백ground의 배경과 겹쳐서 원래 디자인된 아이콘이 되지만 이 경우 문자만 표시됩니다.
4. Icon 객체 사용
NotificationCompat.Builder가 아닌 Notification입니다.이는 Builder를 사용하는 사용자를 위한 방법입니다.Notification.Icon 객체를 사용하여 LargeIcon을 설정할 수 있습니다.다음 코드에서는 Adaptive 아이콘을 Icon 객체로도 사용할 수 있으므로 LargeIcon으로 간단하게 사용할 수 있습니다.Icon icon = Icon.createWithResource(this, R.mipmap.ic_launcher);
Icon 객체는 API23 이후의 해당 객체이므로 이전 버전을 지원할 때 별도의 대응이 필요합니다.
출력의 차이
열거한 대책 중 3개를 실제로 출력하면 아이콘이 미묘하게 달라진다.참고로 제공하다.
1 아이콘 이미지 추가 준비
2Bitmap으로 변환
4 Icon 객체 사용
총결산
어쨌든 저는 아이콘 그리기에 대한 정리를 해 봤습니다. 다른 대책이 있다면 말씀해 주시면 감사하겠습니다.
Android Oreo에서 가져온 Adaptive 아이콘은 생각보다 까다로운 것입니다.그러나 대응하지 않으면 흰색 테두리가 달린 작은 이미지(환경, 설정에 따라)가 나타나 얄밉게(규격)될 수 있기 때문에 단순히 무시할 수도 없다.하지만 이에 대응해 이번에는 앱 내 아이콘 표시에 문제가 생겨 새로운 괴롭힘이라고 생각한다.
또한 Notification의 SmallIcon 사람들은 아이콘에 적응하는 자원 ID를 지정할 때도 표시되는 것을 정말 싫어한다.
이번에 사건으로 열거한 노티피케이션의 아이콘은 상상했던 아이콘이 없다가 1시간 넘게 고민했다는 것을 보여준다.혼자 그렇게 시간을 낭비하는 사람을 줄이기 위해 이번에 이런 기사를 만들어 봤다.
별말씀을요, BitmapFactory.decodeResource 방법은 디코딩에 실패할 때 예외가 나타나지 않고 null로 되돌아오기 때문에 응용에 따라 Andorid8에 대응하는 개조를 눈치채지 못하면 아이콘이 표시되지 않는 응용이 있을 수 있습니다.만약 단서가 있다면 프로그램을 다시 한 번 살펴보는 것도 괜찮다.
Reference
이 문제에 관하여(Adaptive 아이콘 이미지가 Oreo에 표시되지 않으므로 대응), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wa2c/items/1f012a012b628ed0576a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.mipmap.ic_launcher, null);
이전 아이콘 자원 IClauncher.png을 직접 참조하는 방법이 있다면 말하기는 간단하지만 그런 방법을 찾을 수 없기 때문에 다음과 같은 대책이 있을 수 있다고 생각합니다.
1. 아이콘 이미지 준비
다른 파일 이름의 아이콘을 위한 이미지 자원을 준비합니다.이것은 매우 간단하고 강직한 방법이다.일반적으로 이렇게 하면 된다.아이콘 이미지의 변경이 누락될까 봐 데이터의 이중 관리를 절대 허용할 수 없다는 생각은 적용되지 않는다.
2. 비트맵으로 변환
사용자 정의 아이콘을 Bitmap으로 변환합니다.구체적으로 Adaptive Icon을 Bitmap으로 변환하는 방법은 다음과 같습니다.또한 아이콘에 벡터 이미지를 설정하면 VectorDrawable을 따로 처리해야 합니다.
참고 자료
Convert AdaptiveIconDrawable to Bitmap in Android O preview - Stack Overflow
https://stackoverflow.com/questions/44447056/convert-adaptiveicondrawable-to-bitmap-in-android-o-preview
@RequiresApi(api = Build.VERSION_CODES.O)
public static Bitmap getAppIcon(PackageManager mPackageManager, String packageName) {
try {
Drawable drawable = mPackageManager.getApplicationIcon(packageName);
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable) drawable).getBitmap();
} else if (drawable instanceof AdaptiveIconDrawable) {
Drawable backgroundDr = ((AdaptiveIconDrawable) drawable).getBackground();
Drawable foregroundDr = ((AdaptiveIconDrawable) drawable).getForeground();
Drawable[] drr = new Drawable[2];
drr[0] = backgroundDr;
drr[1] = foregroundDr;
LayerDrawable layerDrawable = new LayerDrawable(drr);
int width = layerDrawable.getIntrinsicWidth();
int height = layerDrawable.getIntrinsicHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
layerDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
layerDrawable.draw(canvas);
return bitmap;
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
매번 변환 처리를 피하기 위해서 아이콘 이미지를 어디에 저장하십시오.3. foreground 이미지 사용
이것은 사용할 수 있고 사용할 수 없는 상황이 있다.
아이콘launcher.xml의 구체적인 내용은 다음과 같다.
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
실제 디스플레이는 백그라운드와foreground 두 자원을 중첩하여 구성한 것이다.리소스는 래스터 이미지, 벡터 이미지, 단색 등을 지정할 수 있습니다.foreground에서 LargeIcon 이미지 ic로 이전 래스터 이미지 지정하기launcher가 아닌 래스터 이미지를 지정합니다.이 방법의 단점은foreground가 울타리 이미지 이외의 상황에서 사용할 수 없다는 것이다(실제로 안드로이드 스튜디오 프로젝트가 제작한 샘플은 벡터 이미지이다). 아이콘 디자인과 관계상foreground가 반드시 적당한 이미지가 되지는 않는다는 것이다.예를 들어foreground는 문자만 있고 백ground의 배경과 겹쳐서 원래 디자인된 아이콘이 되지만 이 경우 문자만 표시됩니다.
4. Icon 객체 사용
NotificationCompat.Builder가 아닌 Notification입니다.이는 Builder를 사용하는 사용자를 위한 방법입니다.Notification.Icon 객체를 사용하여 LargeIcon을 설정할 수 있습니다.다음 코드에서는 Adaptive 아이콘을 Icon 객체로도 사용할 수 있으므로 LargeIcon으로 간단하게 사용할 수 있습니다.
Icon icon = Icon.createWithResource(this, R.mipmap.ic_launcher);
Icon 객체는 API23 이후의 해당 객체이므로 이전 버전을 지원할 때 별도의 대응이 필요합니다.출력의 차이
열거한 대책 중 3개를 실제로 출력하면 아이콘이 미묘하게 달라진다.참고로 제공하다.
1 아이콘 이미지 추가 준비
2Bitmap으로 변환
4 Icon 객체 사용
총결산
어쨌든 저는 아이콘 그리기에 대한 정리를 해 봤습니다. 다른 대책이 있다면 말씀해 주시면 감사하겠습니다.
Android Oreo에서 가져온 Adaptive 아이콘은 생각보다 까다로운 것입니다.그러나 대응하지 않으면 흰색 테두리가 달린 작은 이미지(환경, 설정에 따라)가 나타나 얄밉게(규격)될 수 있기 때문에 단순히 무시할 수도 없다.하지만 이에 대응해 이번에는 앱 내 아이콘 표시에 문제가 생겨 새로운 괴롭힘이라고 생각한다.
또한 Notification의 SmallIcon 사람들은 아이콘에 적응하는 자원 ID를 지정할 때도 표시되는 것을 정말 싫어한다.
이번에 사건으로 열거한 노티피케이션의 아이콘은 상상했던 아이콘이 없다가 1시간 넘게 고민했다는 것을 보여준다.혼자 그렇게 시간을 낭비하는 사람을 줄이기 위해 이번에 이런 기사를 만들어 봤다.
별말씀을요, BitmapFactory.decodeResource 방법은 디코딩에 실패할 때 예외가 나타나지 않고 null로 되돌아오기 때문에 응용에 따라 Andorid8에 대응하는 개조를 눈치채지 못하면 아이콘이 표시되지 않는 응용이 있을 수 있습니다.만약 단서가 있다면 프로그램을 다시 한 번 살펴보는 것도 괜찮다.
Reference
이 문제에 관하여(Adaptive 아이콘 이미지가 Oreo에 표시되지 않으므로 대응), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wa2c/items/1f012a012b628ed0576a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
어쨌든 저는 아이콘 그리기에 대한 정리를 해 봤습니다. 다른 대책이 있다면 말씀해 주시면 감사하겠습니다.
Android Oreo에서 가져온 Adaptive 아이콘은 생각보다 까다로운 것입니다.그러나 대응하지 않으면 흰색 테두리가 달린 작은 이미지(환경, 설정에 따라)가 나타나 얄밉게(규격)될 수 있기 때문에 단순히 무시할 수도 없다.하지만 이에 대응해 이번에는 앱 내 아이콘 표시에 문제가 생겨 새로운 괴롭힘이라고 생각한다.
또한 Notification의 SmallIcon 사람들은 아이콘에 적응하는 자원 ID를 지정할 때도 표시되는 것을 정말 싫어한다.
이번에 사건으로 열거한 노티피케이션의 아이콘은 상상했던 아이콘이 없다가 1시간 넘게 고민했다는 것을 보여준다.혼자 그렇게 시간을 낭비하는 사람을 줄이기 위해 이번에 이런 기사를 만들어 봤다.
별말씀을요, BitmapFactory.decodeResource 방법은 디코딩에 실패할 때 예외가 나타나지 않고 null로 되돌아오기 때문에 응용에 따라 Andorid8에 대응하는 개조를 눈치채지 못하면 아이콘이 표시되지 않는 응용이 있을 수 있습니다.만약 단서가 있다면 프로그램을 다시 한 번 살펴보는 것도 괜찮다.
Reference
이 문제에 관하여(Adaptive 아이콘 이미지가 Oreo에 표시되지 않으므로 대응), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wa2c/items/1f012a012b628ed0576a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)