Ich habe eine veröffentlichte App, die beim Start auf Android N abstürzt, wenn die neu eingeführte Display size
Betriebssystemeinstellung auf einen zu großen Wert eingestellt ist.
Wenn ich in logcat nachschaue, wird folgende Meldung angezeigt:
java.lang.RuntimeException: Canvas: trying to draw too large(106,975,232 bytes) bitmap.
Ich habe das Problem in meiner ersten Aktivität auf eine ImageView zurückgeführt, die ein schönes großes Hintergrundbild zeigt. Das betreffende Bild ist 2048 x 1066 und befindet sich in meinem generischen drawables
Verzeichnis. Unabhängig von der Dichte wird dieses Bild verwendet.
Alles funktioniert in Ordnung, wenn die Display size
Einstellung ist Small
. Aber wenn ich nach oben gehe Default
, funktioniert es nicht mehr. Wenn ich dann das Bild gegen ein kleineres austausche, funktioniert es bei Default
, aber wenn ich zu gehe Large
, funktioniert es nicht mehr.
Ich vermute, dass Display size
sich Ihr Gerät beim Anpassen wie ein physisch kleineres Gerät mit einer höheren Pixeldichte verhält. Aber ich verstehe nicht, was ich hier machen soll. Wenn ich immer kleinere Bilder für immer höhere Auflösungen einsetze, sieht es auf wirklich großen Displays nicht gut aus. Oder verstehe ich etwas nicht?
Alle Hinweise wäre sehr dankbar.
res/drawable/
ist ein Synonym fürres/drawable-mdpi/
. Wenn Sie möchten, dass das Bild nicht basierend auf der Dichte skaliert wird, verwenden Sieres/drawable-nodpi/
oderres/drawable-anydpi/
.