Estou executando o Ubuntu 16.04. E no Android Studio, quando tento executar meu aplicativo no emulador, recebo o seguinte erro:
EXCEÇÃO FATAL: Processo principal: nome do projeto aqui, PID: 2528 java.lang.RuntimeException: Canvas: tentando desenhar um bitmap muito grande (216090000bytes). em android.view.DisplayListCanvas.throwIfCannotDraw (DisplayListCanvas.java:260) em android.graphics.Canvas.drawBitmap (Canvas.java:1415) em android.graphics.drawable.BitmapDrawable.draw (BitmapDrawable.java:528) no android. widget.ImageView.onDraw (ImageView.java:1316) em android.view.View.draw (View.java:17185) em android.view.View.updateDisplayListIfDirty (View.java:16167) em android.view.View.draw (View.java:16951) em android.view.ViewGroup.drawChild (ViewGroup.java:3727) em android.view.ViewGroup.dispatchDraw (ViewGroup.java:
etc ...
Eu tive que passar por alguns obstáculos para fazer meu emulador funcionar, no entanto, precisei criar um link simbólico para que eu pudesse executar o emulador no AMD. Não tenho certeza se isso é parte do problema. E pela minha vida, não consigo entender por que continua a fazer isso. No meu grupo, há outros que emulam o projeto muito bem no mesmo telefone e SDK emulados.
BitmapOption.inSampleSize
?Respostas:
Mova sua imagem no drawable (alta resolução) para drawable-xxhdpi . Mas, no desenvolvimento de aplicativos, você não precisa usar imagens grandes. Isso aumentará o tamanho do arquivo APK.
fonte
A solução é mover a imagem de uma
drawable/
pasta paradrawable-xxhdpi/
outra, como outros já mencionaram.Mas é importante entender também por que essa sugestão um tanto estranha realmente ajuda:
O motivo é que a
drawable/
pasta existe em versões anteriores do Android e é equivalente adrawable-mdpi
. Quando uma imagem que está apenas nadrawable/
pasta é usada noxxhdpi
dispositivo, a imagem potencialmente já grande é aumentada em um fator de 3, o que pode então fazer com que a área de cobertura da memória da imagem explodir.fonte
drawable/
diretório se tiver o ativo em outrosdrawable-x
diretórios?Eu tive o mesmo problema. Se você tentar fazer upload de uma imagem muito grande em alguns dispositivos de baixa resolução, o aplicativo entrará em colapso. Você pode fazer várias imagens de diferentes tamanhos (hdpi, xxdpi e mais) ou simplesmente usar uma biblioteca externa para carregar imagens que resolvam o problema de forma rápida e eficiente. Eu usei a biblioteca Glide (você pode usar outra biblioteca como a do Picasso).
panel_IMG_back = (ImageView) findViewById(R.id.panel_IMG_back); Glide .with(this) .load(MyViewUtils.getImage(R.drawable.wallpaper) .into(panel_IMG_back);
fonte
Acontece que o problema era a imagem principal que usávamos em nosso aplicativo na época. O tamanho real da imagem era muito grande, então o comprimimos. Então funcionou perfeitamente, sem perda de qualidade e o aplicativo rodou bem no emulador.
fonte
Eu também tive esse problema quando estava tentando adicionar uma tela inicial ao aplicativo Android por meio do launch_backgrgound.xml. o problema era a resolução. era muito alto, então a área de cobertura da memória das imagens explodiu e fez o aplicativo travar, daí o motivo desse erro. Portanto, basta redimensionar sua imagem usando um site chamado nativescript image builder, então peguei o ldpi, mdpi e todo o resto e funcionou bem para mim.
fonte
Pois esse erro foi como outros falaram uma imagem grande (1800px X 900px) que estava no diretório drawable, editei a imagem e reduzi o tamanho proporcionalmente usando o photoshop e funcionou ... !!
fonte
se você usar o Picasso, mude para o Glide assim.
Remover picasso
Picasso.get().load(Uri.parse("url")).into(imageView)
Mudança de deslize
Glide.with(context).load("url").into(imageView)
Glide mais eficiente do que o desenho de Picasso em bitmap grande
fonte
Acabei de criar o diretório drawable-xhdpi (você pode alterá-lo de acordo com sua necessidade) e copie e cole todas as imagens para esse diretório.
fonte
No meu caso, tive que remover a plataforma Android e adicioná-la novamente. Algo travou e copiar todo o meu código em outro aplicativo funcionou perfeitamente - daí minha ideia de limpar a compilação do Android removendo a plataforma.
cordova platform remove android cordova platform add android
Acho que é algum tipo de limpeza que você precisa fazer de vez em quando :-(
fonte
Isso pode ser um problema com o Glide. Use-o enquanto tenta carregar muitas imagens e algumas delas são muito 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); }
fonte
Essa solução funcionou para mim.
Adicione essas linhas na tag do aplicativo Manifest
android:largeHeap="true" android:hardwareAccelerated="false"
fonte
Se você não quiser que sua imagem seja pré-dimensionada, você pode movê-la para a
res/drawable-nodpi/
pasta.Mais informações: https://developer.android.com/training/multiscreen/screendensities#DensityConsiderations
fonte