Android N 디스플레이 크기가 작음보다 크게 설정된 경우 "캔버스 : 너무 큰 비트 맵을 그리려고합니다."
새로 도입 된 Display sizeOS 설정이 너무 큰 값으로 설정된 경우 Android N에서 시작시 충돌하는 게시 된 앱이 있습니다.
logcat을 보면 다음 메시지가 표시됩니다.
java.lang.RuntimeException: Canvas: trying to draw too large(106,975,232 bytes) bitmap.
멋진 큰 배경 이미지를 보여주는 첫 번째 활동의 ImageView에 문제를 추적했습니다. 문제의 이미지는 2048x1066이고 내 일반 drawables디렉토리에 있으므로 밀도에 관계없이이 이미지가 사용됩니다.
Display size설정이 이면 모든 것이 정상적으로 작동합니다 Small. 하지만로 올라가면 Default작동이 중지됩니다. 그런 다음 이미지를 더 작은 이미지로 교체하면에서 작동 Default하지만으로 이동하면 Large다시 작동하지 않습니다.
내 생각 엔 조정 Display size하면 장치가 픽셀 밀도가 높은 물리적으로 더 작은 장치처럼 작동합니다. 하지만 여기서 뭘해야하는지 이해가 안 돼요. 점진적으로 더 높은 해상도를 위해 점진적으로 더 작은 이미지를 넣으면 실제로 큰 디스플레이에서는 좋지 않습니다. 아니면 내가 뭔가를 이해하지 못하고 있습니까?
어떤 포인터라도 대단히 감사하겠습니다.
필자의 경우 (고해상도) 스플래시 비트 맵을 드로어 블 에서 드로어 블 -xxhdpi 로 이동하는 것이 해결책이었습니다.
나는 같은 문제가 있었다. 이 때문에 나는 문제가 내 시작 화면을 의심하지 않았다 되는 응용 프로그램이 시작될 때 표시하지만, 시작 화면이 문제가 밝혀졌다.
제 경우의 스플래시 화면에는 xxhdpi 해상도가 있으며 drawable-xxhdpi 대신 drawable 폴더 에 실수로 배치되었습니다 . 이로 인해 Android는 스플래시 화면에 mdpi 해상도가 있다고 가정하고 이미지를 필요한 크기의 3 * 3 배로 조정하고 비트 맵을 만들려고했습니다.
누군가에게 도움이 될지는 모르겠지만 여기에 남겨 두겠습니다. 제 경우에는 문제가 Android 7이 설치된 Sumsung 장치에서만 발생했으며 문제는 스플래시 화면 비율에있었습니다. 높이를 1024px로 변경 한 후-모든 것이 잘 작동합니다.
드로어 블의 이미지를 mipmap-xxhdpi로 이동합니다. 이미지는 비트 맵 형식이므로 mipmap 폴더에 이미지를 넣어야합니다.
내 경우에는 내가 추가 한 후 문제를 해결 android:hardwareAccelerated="false"에 applicationg매니페스트 파일의.
Bitmap.Factory 클래스를 사용해보십시오.이 링크는 큰 비트 맵을 효율적으로로드하는 데 도움이됩니다.
아이콘 파일이 너무 커서 Android가 효율적이고 원활하게로드 할 수 없습니다. Android는 스마트 알고리즘으로이를 인식합니다.
asystat의 Final Android Resizer 를 사용하여 아이콘 파일의 크기를 조정할 수 있습니다 . "xhdpi"이하로 크기를 조정합니다.
크기가 조정 된 사진을 드로어 블에 배치하거나 기존의 큰 아이콘 파일을 덮어 씁니다.
그런 다음 끝났습니다.
글라이드를 사용하고 한 번에 1k 이미지 또는 일부 이미지를로드하는 경우 글라이드 또는 이미지보기를 설정하는 데 사용하는 모든 작업이 문제입니다. 글라이드에서 스케일 유형을 적용하여 해결할 수 있습니다.
제 경우에는 Paint3d를 사용하여 배경에 사용되는 이미지의 캔버스를 변경했습니다 (또는 다른 것을 사용할 수 있음). 여기서 스크린 샷을 공유하고 있습니다.
Picasso를 사용하면 Glide로 변경됩니다.
피카소 제거
Picasso.get().load(Uri.parse("url")).into(imageView)
글라이드 변경
Glide.with(context).load("url").into(imageView)
더 효율적
'Program Club' 카테고리의 다른 글
| 최종 ArrayList의 의미는 무엇입니까? (0) | 2020.11.29 |
|---|---|
| rem은 CSS에서 em과 어떻게 다릅니 까? (0) | 2020.11.29 |
| EventEmitter angular2에 2 개의 매개 변수를 전달하는 방법 (0) | 2020.11.29 |
| C ++ 단위 테스트 프레임 워크 (0) | 2020.11.29 |
| 대소 문자를 구분하지 않는 사전 (0) | 2020.11.29 |