"Canvas: trying to draw too large bitmap" when Android N Display Size set larger than Small

108,196

Solution 1

I my case, moving the (hi-res) splash bitmap from drawable to drawable-xxhdpi was the solution.

I had the same problem. I didn't suspect my splash screen to be the problem, since it is displayed when the app is started, but it turned out the splash screen is the problem.

The splash screen in my case has xxhdpi resolution, and it was mistakenly placed in the drawable folder, instead of drawable-xxhdpi. This made Android assume the splash screen had mdpi resolution and scale the image to 3*3 times it's required size and trying to create a bitmap.

Solution 2

I solved the problem after adding the below code into the Manifest file's application tag in between android: lines.

android:hardwareAccelerated="false"

Solution 3

I don't know would it help some one, but I'll just leave it here. In my case - problem was only on Sumsung devices with Android 7, and problem was in splash screen proportions. after changing height to 1024 px - everything works fine

Solution 4

Move your image in the drawable to mipmap-xxhdpi.Your image is in bitmap format so you should put your image in mipmap folder,then it will work

Solution 5

Try to use Bitmap.Factory class, this link will help you Loading Large Bitmaps Efficiently

Share:
108,196
Brian Rak
Author by

Brian Rak

Updated on January 12, 2022

Comments

  • Brian Rak
    Brian Rak over 2 years

    I have a published app that is crashing at startup on Android N when the newly introduced Display size OS setting is set to too large a value.

    When I look in logcat, I see the following message:

    java.lang.RuntimeException: Canvas: trying to draw too large(106,975,232 bytes) bitmap.
    

    I've traced the issue to an ImageView in my first Activity that shows a nice big background image. The image in question is 2048x1066 and is in my generic drawables directory, so no matter the density, this image will be used.

    Everything works okay when the Display size setting is Small. But when I go up to Default, it stops working. If I then swap the image out with a smaller one, it works at Default, but if I go up to Large, it stops working again.

    My guess is that adjusting Display size up causes your device to behave like a physically smaller device with a higher pixel density. But I don't understand what I'm supposed to do here. If I put in progressively smaller images for progressively higher resolutions, it won't look good on actually large displays. Or am I not understanding something?

    Any pointers would be greatly appreciated.