RelativeLayout, имеющий FrameLayout с 15 ImageButton в нем падает - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть действие с RelativeLayout, в котором есть FrameLayout, а в FrameLayout 15 ImageButtons.Приложение вылетает всякий раз, когда загружается эта активность.вот мой код xml.

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fitsSystemWindows="true" >
    <FrameLayout
            android:id="@+id/bodyFrontView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/bodyFrontBtn"
            android:layout_marginBottom="50dp"
            android:layout_alignParentLeft="true">
            <ImageButton
               android:id="@+id/head"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="@null"
               android:contentDescription="@string/app_name"
               android:scaleType="centerInside"
               android:layout_gravity="center"
               android:src="@drawable/head"
                android:clickable="false"
                android:focusable="false"/>
... so on 14
    </FrameLayout>
    </RelativeLayout>

Я пока еще ничего не использую в своем Java-файле.но все равно происходит сбой, как только загружается активность.

вот мой logcat на самом деле некоторые из него

09-28 18:25:12.487 5391-5391/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.proximatesolutions.daralhajama, PID: 5391
    java.lang.RuntimeException: Canvas: trying to draw too large(189422496bytes) 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:20352)
        at android.view.View.updateDisplayListIfDirty(View.java:19297)

еще 100 строк, подобных этой

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Вам необходимо изменить размеры изображений, чтобы они поместились в памяти, или вы можете использовать следующий метод для эффективной установки изображений без изменения размера.

https://developer.android.com/topic/performance/graphics/load-bitmap

0 голосов
/ 28 сентября 2018

Удалить android:background="@null" из всех ImageButton

Проблема в том, что ваши изображения слишком велики с точки зрения разрешения или размера.Теперь вы можете сделать две вещи:

  1. Загрузить изображение низкого разрешения (в соответствии с высотой или шириной кнопки изображения) и маленького размера

  2. Используйте библиотеку Glide для загрузки изображений в ImageButton. Она изменит разрешение в соответствии с видом, в котором вы хотите отобразить изображение.

Добавьте это в build.gradle (уровень приложения) внутри зависимостейБлок

 compile 'com.github.bumptech.glide:glide:3.7.0'

синхронизирует ваш проект.

, тогда в вашей деятельности по созданию:

 Glide.with(this).load(R.drawable.bg).into(imageButton);

Используйте опцию 2, она определенно будет работать.

...