Я использую Ubuntu 16.04. А в Android Studio, когда я пытаюсь запустить свое приложение в эмуляторе, я получаю следующую ошибку:
FATAL EXCEPTION: основной процесс: здесь название проекта, PID: 2528 java.lang.RuntimeException: Canvas: попытка нарисовать слишком большое (216090000 байт) растровое изображение. в 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:
так далее...
Мне пришлось пройти через некоторые обручи, чтобы заставить мой эмулятор работать, однако необходимо было создать символическую ссылку, чтобы я мог запустить эмулятор на AMD. Не уверен, что это часть проблемы. И хоть убей, я не могу понять, почему он продолжает это делать. В моей группе есть другие, которые отлично эмулируют проект на том же эмулированном телефоне и SDK.
BitmapOption.inSampleSize
?Ответы:
Переместите изображение в ( в высоком разрешении) drawable на drawable-xxhdpi . Но при разработке приложений вам не нужно использовать большое изображение. Это увеличит размер вашего APK-файла.
источник
Решение состоит в том, чтобы переместить изображение из
drawable/
папки вdrawable-xxhdpi/
папку, как уже упоминали другие.Но важно также понять, почему это несколько странное предложение действительно помогает:
Причина в том, что
drawable/
папка существует с ранних версий Android и эквивалентнаdrawable-mdpi
. Когда изображение, которое находится только вdrawable/
папке, используется наxxhdpi
устройстве, потенциально уже большое изображение масштабируется в 3 раза, что в некоторых случаях может привести к увеличению объема памяти, занимаемой изображением.источник
drawable/
каталог, если у меня есть актив в другихdrawable-x
каталогах?У меня такая же проблема. Если вы попытаетесь загрузить слишком большое изображение на некоторых устройствах с низким разрешением, приложение рухнет. Вы можете сделать несколько изображений разных размеров (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 через launch_backgrgound.xml. проблема была в решении. он был слишком высоким, поэтому объем памяти изображений увеличился и вызвала сбой приложения, отсюда и причина этой ошибки. так что просто измените размер изображения с помощью сайта под названием nativescript image builder, чтобы я получил ldpi, mdpi и все остальное, и у меня все сработало.
источник
Поскольку эта ошибка была, как и другие, большим изображением (1800px X 900px), которое находилось в каталоге с возможностью рисования, я отредактировал изображение и пропорционально уменьшил размер с помощью Photoshop, и это сработало ... !!
источник
если вы используете Picasso, измените его на Glide вот так.
Удалить пикассо
Picasso.get().load(Uri.parse("url")).into(imageView)
Изменить скольжение
Glide.with(context).load("url").into(imageView)
Более эффективное рисование Glide, чем Picasso, для больших растровых изображений
источник
Я только что создал каталог drawable-xhdpi (вы можете изменить его в соответствии с вашими потребностями) и скопировал все изображения в этот каталог.
источник
В моем случае мне пришлось удалить платформу Android и добавить ее снова. Что-то застряло, и копирование всего моего кода в другое приложение сработало как шарм - отсюда и моя идея очистить сборку для Android, удалив платформу.
cordova platform remove android cordova platform add android
Думаю, это какая-то уборка, которую нужно делать время от времени :-(
источник
Это может быть проблемой с 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); }
источник
Это решение сработало для меня.
Добавьте эти строки в свой тег приложения Manifest
android:largeHeap="true" android:hardwareAccelerated="false"
источник
Если вы не хотите, чтобы ваше изображение было предварительно масштабировано, вы можете переместить его в
res/drawable-nodpi/
папку.Дополнительная информация: https://developer.android.com/training/multiscreen/screendensities#DensityConsiderations
источник