Два похожих изображения (одинаковое разрешение, размер и т. Д.) Добавлены в ScrollView, одно делает их медленными, а другое - нет

Я помещаю 10 различных изображений с текстами в ScrollView по вертикали. Приложение зависало в зависимости от того, какие изображения отображаются на экране устройства. XML-код выглядит так:

<ScrollView>
    <LinearLayout>
        <!-- 10 times -->
        <LinearLayout>
            <ImageView />
            <TextView />
        </LinearLayout>
        .
        .
        .
    </LinearLayout>
</ScrollView>

Поэтому я попытался заменить все 10 изображений только одним ресурсом, приложение стало плавным, без задержек. Я попытался заменить все 10 изображений снова другим изображением, на этот раз оно снова стало очень медленным. Затем я попытался заменить 9 изображений первым (плавным) изображением и 1 изображение посередине вторым (нечетким) изображением, и приложение отстает только тогда, когда показывает второе изображение.

Я проверил свойства этих двух изображений и обнаружил, что они имеют одинаковую ширину / высоту (1280*720 пикселей), разрешение h/v (96 точек на дюйм), битовую глубину (24) и оба имеют размер около 40 КБ. Так что мне интересно, почему один такой удобный в использовании, а другой делает его очень медленным. Это 2 изображения:

гладкий, чтобы использовать рис

очень медленная картинка

Как это может быть?

РЕДАКТИРОВАТЬ: я скопировал все изображения и вставил его во все папки для рисования (xxxhdpi,xxhdpi и т. Д.), И теперь это больше не лагает. Хм..?

1 ответ

Замедление заключается в том, что нужно загружать большое растровое изображение, а затем отображать его в гораздо меньшем пространстве, гораздо эффективнее загружать его уже уменьшенным.

Здесь это объясняется: https://developer.android.com/topic/performance/graphics/load-bitmap.html

Это хорошо известная система загрузки миниатюр вместо целого изображения, используемая, когда скорость интернета была ниже текущей.

Если вы загружаете изображения из базы данных, будет более эффективно, если две версии изображения, малая и большая, будут предварительно сохранены в базе данных.

Другие вопросы по тегам