Оптимизация recyclerView с картинками

112
18 марта 2019, 12:20

Всем привет. Делаю приложения для редактирования фото и хочу добаивть стикеры в приложение. Нашел достаточно много стикеров в интернете но столкнулся с проблемой отображения. Все стикеры тобишь PNG картинки у меня находяться в папке drawable (350 штук) при отображении DialogFragment внутри которого RecyclerView происходит подвисание пока все картинки не отрисуються и потом при скролинге тоже немного подвисает из за большого количества картинок. Я пробовал сжать картинки и уменшить качество

 public  Bitmap getResizedBitmap(Bitmap image, int maxSize) {
        int width = image.getWidth();
        int height = image.getHeight();
        float bitmapRatio = (float)width / (float) height;
        if (bitmapRatio > 1) {
            width = maxSize;
            height = (int) (width / bitmapRatio);
        } else {
            height = maxSize;
            width = (int) (height * bitmapRatio);
        }
        return Bitmap.createScaledBitmap(image, width, height, true);
    }

Но это значительно не повлияло на проблему. Как сделать что бы все работало без подвисаний?

Answer 1

Вообще желательно 350 картинок хранить на бекенде и при необходимости подгружать стикеры. В вашем случае если стикеры все таки хранятся локально, getResizedBitmap не нужно делать это нагрузка большая , руками сожмите картинки и уже сжатые добавьте в drawables + не надо все 350 отдавать RecyclerAdapter , используйте пагинацию, ну и для отображения советую Glide.

Answer 2

Помог ресайзинг отображаемых фото я сделал это через Piscasso образом:

 Picasso.get().load(stickerList[position])
                .resize(80,100)
                .into(holder.imgSticker);

Лаги при скроле recyclerview прошли.

READ ALSO
Почему видно приватное поле в java коде?

Почему видно приватное поле в java коде?

Есть код и он компилируется:

151
“autoReconnect” must end with the ';' delimiter

“autoReconnect” must end with the ';' delimiter

Есть вот такая проблема :

161
Изменение типа обобщения

Изменение типа обобщения

У меня это не получаетсяВ документации написано, что такая операция недопустима

121
QR содержащий 2 разные ссылки

QR содержащий 2 разные ссылки

Я пишу приложение и там необходимо использовать QRМне нужно каким-то образом закинуть в QR 2 сценария:

127