Это вторая часть из двух частей. Вы могли прочитать первую часть.

В части 1 мы говорим о том, как использовать glide в вашем приложении для Android и как Glide может оптимизировать производительность вашего приложения, и мы реализуем образец.

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

первый метод, о котором мы поговорим

Трансформации

Преобразования можно использовать как манипуляции с изображением перед отображением изображения с помощью преобразования (…), которое мы использовали в части 1, чтобы сделать изображение круглым, но мы можем сделать много преобразований я постараюсь перечислить большинство из них

Обрезать

  • CropTransformation (Ширина, Высота): вы можете кадрировать изображение, задав нужную ширину и высоту.
  • CircleCrop (): не требует параметров, просто делает ваше изображение круглым.
  • CropSquareTransformation (): не требует параметров, просто делает ваше изображение квадратным.
  • RoundedCorners (int radius ) можно легко закруглить углы изображения, вам нужно только указать радиус
  • RoundedCornersTransformation (int radius, int margin, CornerType): вы можете использовать его для округления изображения с дополнительными настраиваемыми параметрами. Первый параметр: вы вводите радиус для закругленных углов, второй - это поле, применяемое к вашей фотографии, третий параметр если вы хотите сделать определенную сторону, если ваше изображение округлено, давайте посмотрим на пример на этом
Glide.with(Context)
       .load(data.get(i).getUrl())
           .transform(new RoundedCornersTransformation(15,1,RoundedCornersTransformation.CornerType.LEFT))
       .into(image);

здесь мы применяем закругленный угол с левой стороны к изображению

если мы используем All вместо Left, будет так

Цвет

вы можете использовать его для добавления цветов к вашим изображениям, например, наложения или что-то в этом роде

ColorFilterTransformation (int color), вы можете поместить оверлей, например, как этот хэш-код цвета оверлея = # 15000000

GrayscaleTransformation () не требует параметров и добавляет к вашему изображению наложение серого цвета.

BlurTransformation (), если вы примените его без параметров, он будет использовать значение по умолчанию радиуса 25 (резкость размытия) и выборку по умолчанию 1, или вы можете передать только радиус или передать оба радиуса и отбор проб

если мы используем значение по умолчанию, это будет так

а если увеличить выборку до 5, будет так

и есть много преобразований, которые вы можете сделать с помощью фильтра графического процессора (GPUImage)

Потребуется добавить зависимости для GPUImage.

ToonFilterTransformation, SepiaFilterTransformation, ContrastFilterTransformation
InvertFilterTransformation, PixelationFilterTransformation, SketchFilterTransformation
SwirlFilterTransformation, BrightnessFilterTransformation, KuwaharaFilterTransformation VignetteFilterTransformation

Обналичивание

По умолчанию Glide кэширует изображения с URL-адресами в качестве ключей в памяти и на диске. например, если вы используете URL-адрес («https://source.unsplash.com/rando.com), который генерирует случайные изображения каждый раз, когда вы его вызываете, как в нашем примере в первой статье, слайд покажет первое изображение, которое возвращается по URL-адресу, но не Не волнуйтесь, вы можете контролировать, что с помощью diskCasheStrategy существуют различные типы кэширования, давайте объясним их

  • Glide 3.x и 4.x: DiskCacheStrategy.NONE ничего не кеширует на диск, также вы можете использовать skipMemoryCache(true) он пропустит кеш памяти, вы можете использовать их оба
  • Glide 4.x: DiskCacheStrategy.DATA, Glide 3.x: DiskCacheStrategy.SOURCE кэширует только исходное изображение с полным разрешением.
  • Glide 4.x: DiskCacheStrategy.RESOURCE Glide 3.x: DiskCacheStrategy.RESULT кэширует только окончательное изображение после уменьшения разрешения (и, возможно, преобразований) (поведение Glide 3.x по умолчанию)
  • Только Glide 4.x: DiskCacheStrategy.AUTOMATIC разумно выбирает стратегию кеширования в зависимости от ресурса (поведение Glide 4.x по умолчанию)
  • Glide 3.x и 4.x: DiskCacheStrategy.ALL кэширует все версии образа

в нашем случае мы хотим, чтобы DiskCacheStrategy.NONE получал разные изображения каждый раз, когда мы вызываем URL

diskCacheStrategy(DiskCacheStrategy.NONE)

Очистка кеша

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

Чтобы очистить кеш Glide, добавьте следующий код в clearCache() в конце MainActivity.

Glide.get(this).clearMemory()

Важные методы

placeholder: вы можете использовать этот метод для привязки изображения при его загрузке и подготовке, и если загрузка не удалась, оно все равно появится, если вы не используете error метод, он имеет приоритет в случае ошибки

Используйте метод fallback, когда url может быть null

Примените преобразование centerCrop, чтобы фотография полностью заполнила ImageView

Glide автоматически ограничивает размер изображения, которое хранится в кеше и памяти, до ImageView размеров. Чем больше преобразований вы примените, тем больше времени потребуется Glide для загрузки изображения. В этом случае используйте override(width, height), чтобы Glide загружал меньшее изображение.

пример

Glide.with(itemView) 
    .load(url) 
    .centerCrop() 
    .placeholder(R.drawable.ic_image_place_holder) 
    .error(R.drawable.ic_broken_image) 
    .fallback(R.drawable.ic_no_image)
    .into(itemView.ivPhoto) 

Что делать, если ваша цель - не изображение?

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

Glide.with(this).load(ServiceGenerator.BASE_URL + url).into(new CustomTarget<Drawable>() {
            @Override
            public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
                yourRelativeLayout.setBackground(resource);
            }

            @Override
            public void onLoadCleared(@Nullable Drawable placeholder) {
            }

        });

Спасибо за прочтение!

📝 Сохраните этот рассказ в Журнале.

👩‍💻 Просыпайтесь каждое воскресное утро и слышите самые интересные истории недели в области технологий, ожидающие в вашем почтовом ящике. Прочтите информационный бюллетень« Примечательные в технологиях ».