java.lang.RuntimeException: Canvas: попытка нарисовать слишком большое (144000000байт) растровое изображение - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь загрузить изображение с помощью glide, оно нормально работает в Android 6.0, но не работает в Android 6.0 выше.Я искал, но не нашел никакого решения.Я также увеличил размер кучи в manifext.xml.Я также пробовал с Фреско и Пикассо, но всегда происходит это исключение.Я также попытался уменьшить размер изображения с помощью растрового изображения.Это подробности журнала.

Increasing code cache capacity to 1024KB
05-28 23:24:46.255 9111-9111/com.romilandroid.shreekshatriya E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.romilandroid.shreekshatriya, PID: 9111
    java.lang.RuntimeException: Canvas: trying to draw too large(144000000bytes) bitmap.
        at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:229)
        at android.view.RecordingCanvas.drawBitmap(RecordingCanvas.java:97)
        at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:529)
        at android.widget.ImageView.onDraw(ImageView.java:1367)
        at android.view.View.draw(View.java:19123)
        at android.view.View.updateDisplayListIfDirty(View.java:18073)
        at android.view.View.draw(View.java:18851)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
        at android.view.View.draw(View.java:19126)
        at android.view.View.updateDisplayListIfDirty(View.java:18073)
        at android.view.View.draw(View.java:18851)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
        at android.view.View.draw(View.java:19126)
        at android.support.v4.view.ViewPager.draw(ViewPager.java:2420)
        at android.view.View.updateDisplayListIfDirty(View.java:18073)
        at android.view.View.draw(View.java:18851)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
        at android.view.View.updateDisplayListIfDirty(View.java:18064)
        at android.view.View.draw(View.java:18851)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
        at android.view.View.updateDisplayListIfDirty(View.java:18064)
        at android.view.View.draw(View.java:18851)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
        at android.view.View.updateDisplayListIfDirty(View.java:18064)
        at android.view.View.draw(View.java:18851)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
        at android.view.View.updateDisplayListIfDirty(View.java:18064)
        at android.view.View.draw(View.java:18851)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
        at android.view.View.updateDisplayListIfDirty(View.java:18064)
        at android.view.View.draw(View.java:18851)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
        at android.view.View.updateDisplayListIfDirty(View.java:18064)
        at android.view.View.draw(View.java:18851)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4214)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4000)
        at android.view.View.draw(View.java:19126)
        at com.android.internal.policy.DecorView.draw(DecorView.java:785)
        at android.view.View.updateDisplayListIfDirty(View.java:18073)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:643)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:649)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:757)
        at android.view.ViewRootImpl.draw(ViewRootImpl.java:2980)
        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2794)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2347)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1386)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6733)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
        at android.view.Choreographer.doCallbacks(Choreographer.java:723)
        at android.view.Choreographer.doFrame(Choreographer.java:658)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

Ответы [ 4 ]

0 голосов
/ 01 августа 2018

Если вы загружаете изображение из своего проекта (не из Интернета), вы должны поместить свое изображение в «папку mipmap», а не в «папку для рисования», потому что изображение в растровом формате.

0 голосов
/ 29 мая 2018

Попробуйте это Вам поможет

  • В моем случае - проблема была только на устройствах Sumsung с Android 7, и проблема была в пропорциях заставки.после изменения высоты на 1024 px - все работает нормально.

  • Переместите ваше изображение в формате рисования в mipmap-xxhdpi. Ваше изображение в растровом формате, поэтому вы должны поместить его в папку mipmap,тогда он будет работать

  • Откройте вашу папку для рисования, проверьте размер всех изображений и измените размер ваших изображений, он будет работать для меня.

0 голосов
/ 29 мая 2018
 Glide.with(mContext)
                .load("your image drawable")
                .error(android.R.drawable.ic_dialog_alert)
                .override(320, 210)
                .listener(new RequestListener<String, GlideDrawable>() {
                    @Override
                    public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {                           
                        return false;
                    }
                    @Override
                    public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {                          
                        return false;
                    }
                })
                .into(holder.ModelImage);

Используйте .overrride с glide, чтобы загрузить увеличенное изображение.Поскольку изображение, которое вы пытаетесь загрузить, имеет большой размер.А также вы можете сделать еще одну вещь:

 <application
        android:largeHeap="true">
</applicatino>

в манифест приложения для Android для работы приложения с большим размером кучи.Ответьте, если нашли ошибку.Спасибо

0 голосов
/ 28 мая 2018

попробуйте это в вашем build.gradle

dependencies {
    implementation ("com.github.bumptech.glide:glide:4.7.1") {
        exclude group: "com.android.support"
    } 
    implementation "com.android.support:support-fragment:26.1.0"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...