Android Studio Canvas : 너무 큰 비트 맵 그리기
Ubuntu 16.04를 실행하고 있습니다. Android Studio에서 에뮬레이터에서 애플리케이션을 실행하려고하면 다음 오류가 발생합니다.
치명적 예외 : 주요 프로세스 : 여기에 프로젝트 이름, PID : 2528 java.lang.RuntimeException : 캔버스 : 너무 큰 (216090000bytes) 비트 맵을 그리려고합니다. android.view.DisplayListCanvas.throwIfCannotDraw (DisplayListCanvas.java:260) at android.graphics.Canvas.drawBitmap (Canvas.java:1415) at android.graphics.drawable.BitmapDrawable.draw (BitmapDrawable.java:528) at android. widget.ImageView.onDraw (ImageView.java:1316) at android.view.View.draw (View.java:17185) at android.view.View.updateDisplayListIfDirty (View.java:16167) at android.view.View.draw (View.java:16951) at android.view.ViewGroup.drawChild (ViewGroup.java:3727) at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3513) at android.view.View.updateDisplayListIfDirty (View.java : 16162) at android.view.View.draw (View.java:16951) at android.view.ViewGroup.drawChild (ViewGroup.java:3727) at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3513) at
기타...
에뮬레이터를 작동시키기 위해 몇 가지 후프를 거쳐야했지만 AMD에서 에뮬레이터를 실행할 수 있도록 심볼릭 링크를 만들어야했습니다. 이것이 문제의 일부인지 확실하지 않습니다. 그리고 제 삶을 위해 왜이 일을 계속하는지 알 수 없습니다. 내 그룹에는 동일한 에뮬레이트 된 전화 및 SDK에서 프로젝트를 잘 에뮬레이트하는 다른 사람들이 있습니다.
(고해상도) 드로어 블 의 이미지 를 drawable-xxhdpi로 이동 합니다. 그러나 앱 개발에서는 큰 이미지를 사용할 필요가 없습니다. APK 파일 크기가 증가합니다.
나는 같은 문제가 있었다. 일부 저해상도 장치에서 너무 큰 이미지를 업로드하려고하면 앱이 축소됩니다. 크기가 다른 여러 이미지 (hdpi, xxdpi 등)를 만들거나 단순히 외부 라이브러리를 사용하여 문제를 빠르고 효율적으로 해결하는 이미지를로드 할 수 있습니다. 저는 Glide 라이브러리를 사용했습니다 (Picasso와 같은 다른 라이브러리를 사용할 수 있음).
panel_IMG_back = (ImageView) findViewById(R.id.panel_IMG_back);
Glide
.with(this)
.load(MyViewUtils.getImage(R.drawable.wallpaper)
.into(panel_IMG_back);
문제는 당시 앱에서 사용했던 메인 이미지였습니다. 이미지의 실제 크기가 너무 커서 압축했습니다. 그런 다음 매력처럼 작동하고 품질 손실이 없었으며 앱이 에뮬레이터에서 제대로 실행되었습니다.
제 경우에는 안드로이드 플랫폼을 제거하고 다시 추가해야했습니다. 무언가가 막혀서 내 모든 코드를 다른 앱에 복사하는 것이 매력처럼 작동했습니다. 따라서 플랫폼을 제거하여 Android 용 빌드를 정리하는 것이 좋습니다.
cordova platform remove android
cordova platform add android
나는 때때로 당신이해야 할 일종의 정리라고 생각합니다 :-(
이 오류는 다른 사람들이 드로어 블 디렉토리에있는 큰 이미지 (1800px X 900px)라고 말한 것처럼 포토샵을 사용하여 이미지를 편집하고 비례 적으로 크기를 줄였고 작동했습니다 ... !!
이것은 Glide에서 문제가 될 수 있습니다. 많은 이미지를로드하려고 할 때 이것을 사용하고 그중 일부는 매우 큽니다.
Glide.load("your image path")
.transform(
new MultiTransformation<>(
new CenterCrop(),
new RoundedCorners(
holder.imgCompanyLogo.getResources()
.getDimensionPixelSize(R.dimen._2sdp)
)
)
)
.error(R.drawable.ic_nfs_default)
.into(holder.imgCompanyLogo);
}
Picasso를 사용하면 Glide로 변경됩니다.
피카소 제거
Picasso.get().load(Uri.parse("url")).into(imageView)
글라이드 변경
Glide.with(context).load("url").into(imageView)
Picasso가 큰 비트 맵으로 그리는 것보다 더 효율적인 글라이드
참조 URL : https://stackoverflow.com/questions/40835514/android-studio-canvas-drawing-too-large-bitmap
'development' 카테고리의 다른 글
Ansible에서 이중 중괄호 이스케이프 (0) | 2021.01.09 |
---|---|
Angular2에 의한 링크에 "안전하지 않은"접두사를 추가하지 않는 방법은 무엇입니까? (0) | 2021.01.09 |
VSCode 작은 따옴표에서 큰 따옴표로 자동 바꾸기 (0) | 2021.01.09 |
체크 박스처럼 보이도록 html 라디오 버튼의 스타일을 지정할 수 있습니까? (0) | 2021.01.09 |
엔티티 프레임 워크 3.5에서 저장 프로 시저 새로 고침 (0) | 2021.01.09 |