Освой Android играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Glide

4-й курс/Закрытая зона

Базовый пример
Заглушки
Анимация замещения картинки
Размер изображения
Анимированные GIF
Видео
Превьюшка
Кэш
Приоритет при загрузке
Загружаем картинки в список

Библиотека Glide является ближайшим конкурентом другой популярной библиотеке Picasso и также предназначена для асинхронной подгрузки изображений котов из сети, ресурсов или файловой системы, их кэширования и отображения. Синтаксис и принцип работы очень схож. Во многом выбор определяется вкусом разработчика.

Но библиотека имеет дополнительную функциональность в виде поддержки анимированных GIF-файлов и видео.

Кстати, Google высоко оценивает качество библиотеки и даже включила её в состав одного шаблона в Android Studio.

Домашняя страница - https://bumptech.github.io/glide/. Исходные коды на Гитхабе.

Библиотека постоянно мигрирует с одной ветки на другую. Сейчас произошёл переход на ветку 4.x. Соответственно, некоторые участки кода перестали работать, нужно сверяться с документацией и смотреть, что изменилось.

В Android Studio прописываем зависимость в Gradle (проверяйте номер свежей версии).


implementation 'com.github.bumptech.glide:glide:4.12.0'

Минимально поддерживаемая версия API 14 (Ice Cream Sandwich).

Базовый пример

Для простого примера достаточно указать три метода объекта Glide:

  • with(Context context) — передаём Context
  • load(String imageUrl) — указываем адрес картинки из интернета, ресурса, файла
  • into(ImageView targetImageView) — компонент ImageView, в котором должна отобразиться картинка

Разместим на экране активности кнопку и ImageView. Напишем пример загрузки изображения с заданного адреса.


package ru.alexanderklimov.glide;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;

import com.bumptech.glide.Glide;

public class MainActivity extends AppCompatActivity {

    private ImageView mImageView;
    private String mImageAddress =
            "http://developer.alexanderklimov.ru/android/images/android_cat.jpg";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mImageView = findViewById(R.id.imageView);
    }

    public void onClick(View view) {
        // Загружаем картинку
        Glide
                .with(this)
                .load(mImageAddress)
                .into(mImageView);
    }
}

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


public void onClick(View view) {

    int resourceId = R.mipmap.ic_launcher;

    Glide
            .with(this)
            .load(resourceId)
            .into(mImageView);
}

Загружаем из файла. В примере опущена проверка на существование файла. Но даже без проверки приложение не закроется с ошибкой, а просто ничего не загрузит.


File file = new File(Environment
        .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "cat.png");

Glide
        .with(this)
        .load(file)
        .into(mImageView);

Последний вариант связан с Uri. Это может быть адрес в интернете, а также адрес на ресурс.


int resourceId = R.mipmap.ic_launcher_round;

Uri uri = Uri.parse("android.resource://"  + this.getPackageName() + "/" + resourceId);

Glide
        .with(this)
        .load(uri)
        .into(mImageView);

Вы вошли на сайт, как гость.
Необходимо зарегистрироваться, чтобы прочитать статью

Реклама