2016-11-28 24 views
7

Używam Ubuntu 16.04. I na Android Studio kiedy próbuję uruchomić mojej aplikacji w emulatorze pojawia się następujący błąd:Studio Android Canvas: rysowanie zbyt dużej bitmapy

FATAL EXCEPTION: main Process: project name here, PID: 2528 java.lang.RuntimeException: Canvas: trying to draw too large(216090000bytes) bitmap. at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260) at android.graphics.Canvas.drawBitmap(Canvas.java:1415) at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:528) at android.widget.ImageView.onDraw(ImageView.java:1316) at android.view.View.draw(View.java:17185) at android.view.View.updateDisplayListIfDirty(View.java:16167) at android.view.View.draw(View.java:16951) at android.view.ViewGroup.drawChild(ViewGroup.java:3727) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513) at android.view.View.updateDisplayListIfDirty(View.java:16162) at android.view.View.draw(View.java:16951) at android.view.ViewGroup.drawChild(ViewGroup.java:3727) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3513) at
etc...

miałem biec przez kilka obręcze, aby dostać mój emulator działa jednak potrzebne, aby stworzyć sym-link tak Mogę uruchomić emulator na AMD. Nie jestem pewien, czy to jest część problemu. I dla mojego życia nie potrafię zrozumieć, dlaczego nadal to robi. W mojej grupie są inni, którzy naśladują projekt na tym samym emulowanym telefonie i SDK.

ROZWIĄZANIE

Okazuje się, że problem był głównym obraz, który użyliśmy na naszej aplikacji w tym czasie. Rzeczywisty rozmiar obrazu był zbyt duży, więc skompresowaliśmy go. Potem działało jak urok, bez utraty jakości, a aplikacja działała dobrze na emulatorze.

+0

Czy próbowałeś odczytać bitmapę w mniejszym rozmiarze za pomocą 'BitmapOption.inSampleSize'? –

+0

wypróbuj swoją bitmapę za pomocą tego https://developer.android.com/training/displaying-bitmaps/load-bitmap.html –

+1

** W moim przypadku przeniesienie bitmapy powitania (wysokiej rozdzielczości) z losowania do losowania-xxhdpi rozwiązanie. ** Miałem ten sam problem. Nie podejrzewałem, że mój ekran powitalny jest problemem, ponieważ jest wyświetlany podczas uruchamiania aplikacji, ale okazało się, że problemem jest ekran powitalny. Ekran powitalny w moim przypadku ma rozdzielczość xxhdpi i został błędnie umieszczony w folderze do rysowania, zamiast drawable-xxhdpi. To spowodowało, że Android założył, że ekran powitalny miał rozdzielczość mdpi i skalował obraz do 3 * 3 razy jego wymaganego rozmiaru i próbował stworzyć bitmapę. –

Odpowiedz

39

Przesuń obraz w (Hi-Res) odkształcalne do rozciągliwej-xxhdpi. Ale w rozwoju aplikacji nie trzeba używać do dużego obrazu, aby zwiększyć rozmiar pliku APK.

+2

Dzięki! To działa. – user2137020

+1

To powinna być zaakceptowana odpowiedź. –

+2

Dzięki, to też zadziałało, gdy mój obraz miał tylko 500 kb, ale rozdzielczość była zdecydowanie za wysoka. – ashishdhiman2007

1

Okazało się, że problem był głównym obrazem, który używaliśmy w naszej aplikacji w tym czasie. Rzeczywisty rozmiar obrazu był zbyt duży, więc skompresowaliśmy go. Potem działało jak urok, bez utraty jakości, a aplikacja działała dobrze na emulatorze.

3

W moim przypadku przeniesienie bitmapy powitalnej (wysokiej rozdzielczości) z losowania do losowania - xxhdpi było rozwiązaniem.

Miałem ten sam problem. Nie podejrzewałem, że mój ekran powitalny jest problemem, ponieważ jest wyświetlany podczas uruchamiania aplikacji, ale okazało się, że problemem jest ekran powitalny.

Ekran powitalny w moim przypadku ma rozdzielczość xxhdpi i został błędnie umieszczony w folderze do rysowania, zamiast drawable-xxhdpi. To spowodowało, że Android założył, że ekran powitalny miał rozdzielczość mdpi i skalował obraz do 3 * 3 razy jego wymaganego rozmiaru i próbował stworzyć bitmapę.