Таинственная трассировка стека в консоли разработчика Android (размер растрового изображения превышает 32 бита)
Я получаю следующую трассировку стека в консоли разработчика. В некоторых сообщениях говорится "приложение не запускается" или "сбой при запуске".
Я не знаю, что делать, в классе моего приложения ничего не сказано! Кто-нибудь получил такую же ошибку и нашел исправление?
java.lang.IllegalArgumentException: bitmap size exceeds 32bits
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:695)
at android.view.View.buildDrawingCache(View.java:6646)
at android.view.ViewGroup.onAnimationStart(ViewGroup.java:1345)
at android.view.ViewGroup.drawChild(ViewGroup.java:1591)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:6996)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
at android.view.View.draw(View.java:6996)
at android.widget.FrameLayout.draw(FrameLayout.java:357)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2054)
at android.view.ViewRoot.draw(ViewRoot.java:1632)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1335)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1991)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4358)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
at dalvik.system.NativeStart.main(Native Method)
3 ответа
Если это вопрос количества, вы должны перерабатывать свои растровые изображения.
если это вопрос размера (вы не можете загружать слишком большие изображения), вы должны загрузить более легкую копию своего растрового изображения.
Вот код для создания уменьшенного изображения
Options thumbOpts = new Options();
thumbOpts.inSampleSize = 4;
Bitmap bmp = BitmapFactory.decodeFile(imagePath, mThumbOpts);
Значение inSampleSize, установленное в значение> 1, запрашивает у декодера выборку исходного изображения, возвращая меньшее изображение для экономии памяти.
Используйте степень 2, чтобы она была более эффективной.
Этот пост может быть полезен
Bitmap.createBitmap()
Броски IllegalArgumentException
если значения x, y, width, height находятся за пределами размеров исходного растрового изображения, или width <= 0, или height <= 0
Сначала убедитесь, что значения x, y, width и height меньше, чем исходное растровое изображение.
Вопрос для меня был матрица. Моя матрица имеет значение перевода, которое вывело одно из значений за пределы входного растрового изображения.
Надеюсь это поможет
В моем случае это была ошибка в этой строке:
WebView.getSettings().setUseWideViewPort(true);
Сбой был только по API 18 и менее