J'utilise Ubuntu 16.04. Et sur Android Studio, lorsque j'essaye d'exécuter mon application dans l'émulateur, j'obtiens l'erreur suivante:
EXCEPTION FATALE: Processus principal: nom du projet ici, PID: 2528 java.lang.RuntimeException: Canvas: tentative de dessiner un bitmap trop grand (216090000bytes). à android.view.DisplayListCanvas.throwIfCannotDraw (DisplayListCanvas.java:260) à android.graphics.Canvas.drawBitmap (Canvas.java:1415) à android.graphics.drawable.BitmapDrawable.draw (BitmapDrawable.java:528) à android. widget.ImageView.onDraw (ImageView.java:1316) à android.view.View.draw (View.java:17185) à android.view.View.updateDisplayListIfDirty (View.java:16167) à android.view.View.draw (View.java:16951) à android.view.ViewGroup.drawChild (ViewGroup.java:3727) à android.view.ViewGroup.dispatchDraw (ViewGroup.java:
etc...
J'ai dû parcourir quelques cercles pour que mon émulateur fonctionne, cependant, je devais créer un lien symbolique afin de pouvoir exécuter l'émulateur sur AMD. Je ne sais pas si cela fait partie du problème. Et pour la vie de moi, je ne peux pas comprendre pourquoi il continue à faire cela. Dans mon groupe, il y en a d'autres qui émulent le projet très bien sur le même téléphone émulé et le même SDK.
BitmapOption.inSampleSize
?Réponses:
Déplacez votre image dans le dessin (haute résolution) vers drawable-xxhdpi . Mais dans le développement d'applications, vous n'avez pas besoin d'utiliser une grande image. Cela augmentera la taille de votre fichier APK.
la source
La solution consiste à déplacer l'image d'un
drawable/
dossier à un autredrawable-xxhdpi/
, comme d'autres l'ont mentionné.Mais il est important de comprendre également pourquoi cette suggestion un peu étrange aide réellement:
La raison est que le
drawable/
dossier existe depuis les premières versions d'Android et équivaut àdrawable-mdpi
. Lorsqu'une image qui se trouve uniquement dans undrawable/
dossier est utilisée sur l'xxhdpi
appareil, l'image potentiellement déjà grande est mise à l'échelle d'un facteur 3, ce qui peut dans certains cas provoquer une explosion de l'empreinte mémoire de l'image.la source
drawable/
répertoire si j'ai l'actif dans d'autresdrawable-x
répertoires?J'ai eu le même problème. Si vous essayez de télécharger une image trop grande sur certains appareils à basse résolution, l'application se réduira. Vous pouvez créer plusieurs images de différentes tailles (hdpi, xxdpi et plus) ou simplement utiliser une bibliothèque externe pour charger des images qui résolvent le problème rapidement et efficacement. J'ai utilisé la bibliothèque Glide (vous pouvez utiliser une autre bibliothèque comme Picasso).
panel_IMG_back = (ImageView) findViewById(R.id.panel_IMG_back); Glide .with(this) .load(MyViewUtils.getImage(R.drawable.wallpaper) .into(panel_IMG_back);
la source
Il s'avère que le problème était l'image principale que nous avons utilisée sur notre application à l'époque. La taille réelle de l'image était trop grande, nous l'avons donc compressée. Ensuite, cela a fonctionné comme un charme, aucune perte de qualité et l'application fonctionnait bien sur l'émulateur.
la source
J'ai également eu ce problème lorsque j'essayais d'ajouter un écran de démarrage à l'application Android via le launch_backgrgound.xml. le problème était la résolution. il était trop élevé, donc l'empreinte de la mémoire des images a explosé et a provoqué le blocage de l'application, d'où la raison de cette erreur. donc il suffit de redimensionner votre image en utilisant un site appelé constructeur d'image nativescript donc j'ai eu le ldpi, mdpi et tout le reste et cela a bien fonctionné pour moi.
la source
Pour cette erreur, c'était comme d'autres l'ont dit une grande image (1800px X 900px) qui était dans le répertoire drawable, j'ai édité l'image et réduit la taille proportionnellement en utilisant Photoshop et cela a fonctionné ... !!
la source
si vous utilisez Picasso, changez pour Glide comme ça.
Supprimer picasso
Picasso.get().load(Uri.parse("url")).into(imageView)
Changer le glissement
Glide.with(context).load("url").into(imageView)
Glide plus efficace que Picasso dessine sur une grande image bitmap
la source
Je viens de créer le répertoire drawable-xhdpi (vous pouvez le changer selon vos besoins) et copier-coller toutes les images dans ce répertoire.
la source
Dans mon cas, j'ai dû supprimer la plate-forme Android et l'ajouter à nouveau. Quelque chose s'est coincé et copier tout mon code dans une autre application a fonctionné comme un charme - d'où mon idée de nettoyer la version pour Android en supprimant la plate-forme.
cordova platform remove android cordova platform add android
Je suppose que c'est une sorte de nettoyage que vous devez faire de temps en temps :-(
la source
Cela peut être un problème avec Glide. Utilisez ceci pendant que vous essayez de charger de nombreuses images et certaines d'entre elles sont très volumineuses:
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); }
la source
Cette solution a fonctionné pour moi.
Ajoutez ces lignes dans votre balise d' application Manifest
android:largeHeap="true" android:hardwareAccelerated="false"
la source
Si vous ne souhaitez pas que votre image soit pré-mise à l'échelle, vous pouvez la déplacer vers le
res/drawable-nodpi/
dossier.Plus d'informations: https://developer.android.com/training/multiscreen/screendensities#DensityConsiderations
la source