Estoy ejecutando Ubuntu 16.04. Y en Android Studio, cuando intento ejecutar mi aplicación en el emulador, aparece el siguiente error:
EXCEPCIÓN FATAL: proceso principal: nombre del proyecto aquí, PID: 2528 java.lang.RuntimeException: Canvas: intentando dibujar un mapa de bits demasiado grande (216090000bytes). en android.view.DisplayListCanvas.throwIfCannotDraw (DisplayListCanvas.java:260) en android.graphics.Canvas.drawBitmap (Canvas.java:1415) en android.graphics.drawable.BitmapDrawable.draw (BitmapDrawable.java:528) en android. widget.ImageView.onDraw (ImageView.java:1316) en android.view.View.draw (View.java:17185) en android.view.View.updateDisplayListIfDirty (View.java:16167) en android.view.View.draw (View.java:16951) en android.view.ViewGroup.drawChild (ViewGroup.java:3727) en android.view.ViewGroup.dispatchDraw (ViewGroup.java:
etc ...
Sin embargo, tuve que ejecutar algunos aros para que mi emulador funcionara, pero necesitaba crear un enlace simbólico para poder ejecutar el emulador en AMD. No estoy seguro si esto es parte del problema. Y por mi vida, no puedo entender por qué sigue haciendo esto. En mi grupo hay otros que emulan el proyecto sin problemas en el mismo teléfono emulado y SDK.
BitmapOption.inSampleSize
?Respuestas:
Mueva su imagen en el (los alquileres) dibujable a dibujable-xxhdpi . Pero en el desarrollo de aplicaciones, no es necesario utilizar una imagen grande. Aumentará el tamaño de su archivo APK.
fuente
La solución es mover la imagen de
drawable/
carpeta endrawable-xxhdpi/
carpeta, como también han mencionado otros.Pero también es importante entender por qué esta sugerencia algo extraña en realidad ayuda:
La razón es que la
drawable/
carpeta existe desde las primeras versiones de Android y es equivalente adrawable-mdpi
. Cuandodrawable/
se usa una imagen que solo está en la carpeta en elxxhdpi
dispositivo, la imagen que ya es potencialmente grande se escala en un factor de 3, lo que en algunos casos puede hacer que la huella de memoria de la imagen explote.fuente
drawable/
directorio si tengo el activo en otrosdrawable-x
directorios?Yo tuve el mismo problema. Si intenta cargar una imagen que es demasiado grande en algunos dispositivos de baja resolución, la aplicación colapsará. Puede hacer varias imágenes de diferentes tamaños (hdpi, xxdpi y más) o simplemente usar una biblioteca externa para cargar imágenes que resuelvan el problema de manera rápida y eficiente. Usé la biblioteca Glide (puedes usar otra biblioteca como Picasso).
panel_IMG_back = (ImageView) findViewById(R.id.panel_IMG_back); Glide .with(this) .load(MyViewUtils.getImage(R.drawable.wallpaper) .into(panel_IMG_back);
fuente
Resulta que el problema era la imagen principal que usamos en nuestra aplicación en ese momento. El tamaño real de la imagen era demasiado grande, así que lo comprimimos. Luego funcionó de maravilla, sin pérdida de calidad y la aplicación funcionó bien en el emulador.
fuente
También tuve este problema cuando intentaba agregar una pantalla de presentación a la aplicación de Android a través de launch_backgrgound.xml. el problema era la resolución. era demasiado alto, por lo que la huella de memoria de las imágenes explotó y provocó que la aplicación se bloqueara, de ahí el motivo de este error. así que simplemente cambie el tamaño de su imagen usando un sitio llamado generador de imágenes nativescript, así que obtuve el ldpi, mdpi y todo lo demás y funcionó bien para mí.
fuente
Para este error fue como dijeron otros una imagen grande (1800px X 900px) que estaba en el directorio dibujable, edité la imagen y reduje el tamaño proporcionalmente usando photoshop y funcionó ... !!
fuente
si usa Picasso, cambie a Glide así.
Quitar picasso
Picasso.get().load(Uri.parse("url")).into(imageView)
Cambiar planeo
Glide.with(context).load("url").into(imageView)
Glide más eficiente que el dibujo de Picasso en mapa de bits grande
fuente
Acabo de crear el directorio drawable-xhdpi (puede cambiarlo según sus necesidades) y copiar y pegar todas las imágenes en ese directorio.
fuente
En mi caso tuve que quitar la plataforma android y volver a agregarla. Algo se atascó y copiar todo mi código en otra aplicación funcionó a la perfección, de ahí mi idea de limpiar la compilación para Android eliminando la plataforma.
cordova platform remove android cordova platform add android
Supongo que es una especie de limpieza que tienes que hacer de vez en cuando :-(
fuente
Esto puede ser un problema con Glide. Utilice esto mientras intenta cargar muchas imágenes y algunas de ellas son muy grandes:
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); }
fuente
Esta solución funcionó para mí.
Agregue estas líneas en su etiqueta de solicitud de manifiesto
android:largeHeap="true" android:hardwareAccelerated="false"
fuente
Si no desea que su imagen sea preescalada, puede moverla a la
res/drawable-nodpi/
carpeta.Más información: https://developer.android.com/training/multiscreen/screendensities#DensityConsiderations
fuente