Уменьшите использование памяти с большим количеством изображений - PullRequest
0 голосов
/ 18 декабря 2018

Быстрое примечание, я не самый опытный с Android API и терминологии.Извините, если я что-то пропущу, назовите что-нибудь.Мой проект в настоящее время использует API 17.

Я работаю над проектом, в котором есть фрагмент таблицы цветов RAL.Этот фрагмент содержит чуть более 280 цветных изображений и номер RAL.

Фрагмент RAL прогрессивно ухудшается при прокрутке вниз.Я установил для параметра largeHeap значение true, но из того, что я прочитал, вы можете избежать этого, если не будете этого делать.Я сжал все изображения почти на 50%, и это значительно улучшило производительность.Я бы сжал их больше, но это немного изменило бы цвета, и это сделало бы диаграмму все более и более неточной, чем она уже есть.

Основной макет страницы - три изображения в строке

(Выглядит примерно так)

Изображение1 Изображение2 Изображение3

Изображение4 Изображение5 Изображение6

...

Изображение71 Изображение72

(Финалв строке только 2)

Весь код для изображений отформатирован так:

<LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="center_horizontal"
            android:orientation="horizontal"
            android:paddingTop="5dp">

            <ImageView
                android:id="@+id/imageView1000"
                android:layout_width="100dp"
                android:layout_height="100dp"
                app:srcCompat="@drawable/ral1000" />

            <ImageView
                android:id="@+id/imageView1001"
                android:layout_width="100dp"
                android:layout_height="100dp"
                app:srcCompat="@drawable/ral1001" />

            <ImageView
                android:id="@+id/imageView1002"
                android:layout_width="100dp"
                android:layout_height="100dp"
                app:srcCompat="@drawable/ral1002" />
        </LinearLayout>

Я понимаю, что способ, которым я это сделал, может быть крайне неэффективным, но я изучалспособы улучшить это.Я прочитал несколько вещей в Gridview и recylcerview, но мне трудно оборачиваться вокруг них.Могу ли я использовать тег включения в этом?

Спасибо, и понимание очень ценится.

1 Ответ

0 голосов
/ 18 декабря 2018

Тег <include> не будет способствовать повышению производительности в этом случае, так как он, вероятно, связан с загрузкой всех изображений в память сразу, а не по требованию, как RecyclerView.Чтобы решить эту проблему, вы должны использовать RecyclerView с GridLayoutManager.

Другим советом по оптимизации будет использование формата .webp https://developers.google.com/speed/webp/ вместо .png, чтобы сэкономить немного больше места.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...