Glide как сделать приложение
What You'll Be Creating
1. Что такое Glide?
Glide это популярная библиотека Android с открытым исходным кодом для загрузки изображений, видео и анимированных GIF. С Glide можно загружать и отображать медиа из разных источников, например удаленных серверов или из локальной файловой системы.
2. Так зачем использовать Glide?
Разработка своего собственного функционала для отображения и загрузки медиа на Java может оказаться настоящей головной болью: вам нужно будет позаботиться о кешировании, декодировании, управлении сетевых соединений, потоков, обработке исключений и о многом другом. Glide — это простая в использовании, хорошо спланированная, хорошо документированная и тщательно протестированная библиотека, которая поможет сохранить вам уйму времени — и избавить вас от головной боли.
В этом уроке, мы будем изучать Glide 3, создавая на нем простую галерею изображений. Изображения будут загружаться из интернета и отображаться миниатюрами в RecyclerView; пользователь нажимает на изображение и открывается детальная активити с изображением побольше.
3. Создаём проект в Android Studio
Запустите Android Studio и создайте новый проект с пустой активити под названием MainActivity .
2. Объявление зависимостей
После создания нового проекта, укажите следующие зависимости в build.gradle .
Или с помощью Maven:
Убедитесь, что вы синхронизации ваш проект после добавления зависимостей Glide.
Интеграция библиотек
Volley
Вы можете посетить официальное руководство по интеграции библиотек Glide для получения дополнительной информации.
3. Добавляем разрешение на использование Интернета
Так как Glide выполняет сетевой запрос для загрузки изображений через Интернет, нам нужно включить разрешение на INTERNET в нашем AndroidManifest.xml.
4. Создаём макет
Начнем с создания нашего RecyclerView .
Создание пользовательских элементов макета
Далее создадим структуру XML, которая будет использоваться для каждого элемента ( ImageView ) внутри RecyclerView .
Теперь, когда мы создали макет, следующим шагом будет создание RecyclerView адаптера для заполнения данных. Хотя, прежде чем мы это сделаем, давайте создадим нашу простую модель данных.
5. Создание модели данных
Мы определим простую модель данных для наших RecyclerView . Эта модель реализует Parcelable для высокой производительности передачи данных из одного компонента в другой. В нашем случае данные будут переноситься из SpaceGalleryActivity в SpacePhotoActivity .
6. Создаем адаптер
Создадим адаптер для заполнения RecyclerView данными. Также реализуем прослушиватель нажатия, чтобы открывалась активити с детализацией — SpacePhotoActivity , передавая экземпляр SpacePhoto в дополнение. Актвити детализации будет показывать изображение крупным планом. Мы создадим его в следующем разделе.
7. Загрузка изображения по URL
Вот тут нам и понадобится Glide, чтобы получить изображения из Интернета и отобразить их в отдельных ImageView , используя наш метод onBindViewHolder() в RecyclerView, когда пользователь прокручивает содержимое приложения.
Шаг за шагом, как мы будем применять Glide:
- with(Context context) : мы начинаем процесс загрузки с передачи нашего первого содержимого в метод with() .
- load(String string) : источник изображения указан либо как путь к каталогу, URI или URL адреса.
- placeholder(int resourceId) : идентификатор локального ресурса приложения, желательно использовать "drawable", то что будет показано пока не загрузится и отобразится нужное изображение.
- into(ImageView imageView) : представление изображения, куда будет помещено настоящее изображение.
Помните, что Glide также может загружать локальные изображения, по идентификатору Android ресурса, по пути к файлу или Uri в качестве аргумента метода load() .
Изменение размера изображения и преобразование
Вы можете изменить размер изображения, прежде чем оно отобразится в ImageView с методом Glide .override(int width, int height) . Это полезно если ваше приложение создает превьюшки, при загрузке изображения с сервера с другими размерами. Обратите внимание, что размеры в пикселях, а не dp.
Также доступны следующие преобразования изображения:
- fitCenter() : масштабирует изображение равномерно (сохраняя пропорции изображения) так, чтобы изображение вместилось в данную область. Изображение будет видно целиком и может быть иметь вертикальный или горизонтальный отступ.
- centerCrop() : масштабирует изображение равномерно (сохраняя пропорции изображения) так, чтобы изображение заполняло данную область, показав изображение по возможности полностью. При необходимости, изображение будет обрезано по горизонтали или вертикали, для соответствия размеру.
8. Инициализация адаптера
Теперь создадим RecyclerView с GridLayoutManager как менеджер компоновки, инициализируем адаптер и привяжем его к RecyclerView .
9. Создание активити для детализации
Создадим новую активити и назовем ее SpacePhotoActivity . Мы получим SpacePhoto и загрузку изображений с Glide, как мы делали это ранее. Здесь мы ожидаем файл или URL для Bitmap , поэтому мы будем использовать asBitmap() , для того, чтобы Glide получил Bitmap . В противном случае загрузка завершится ошибкой и сработает вызов .error() — тогда будет возвращен и показан ресурс drawable из вызванной ошибки. Также можно использовать asGif() , если вы хотите проверить, что загружаемые изображения являются GIF. (Я вскоре объясню, как работает GIF в Glide).
Обратите внимание, что мы также инициализируем уникальный кэш для загрузки изображений: DiskCacheStrategy.SOURCE . Я расскажу подробнее о кэшировании в следующем разделе.
Макет детального вида
Вот макет для отображения активити детализации. Он просто отображает прокручиваемый ImageView , который будет показывать полноразмерное изображение.
10. Кэширование в Glide
Если посмотреть внимательно, вы увидите, что когда вы возвращаетесь к изображению, которое было загружено ранее, оно загружается быстрее, чем раньше. Так почему быстрее? Система кэширования Glide, вот почему.
Как только изображение было загружено с интернета, Glide сохранит его в памяти и на диске, сохранив от повтора сетевых запросов и позволив быстрее получить изображение. Таким образом, перед загрузкой изображения из сети, Glide сначала проверяет наличие изображения в памяти или на диске.
В зависимости от вашего приложения, вы можете пожелать отказаться от кеширования — например, если отображаемые изображения будут часто изменяться.
Как отключить кэширование?
Вы можете отказаться от кэширования в памяти путем вызова .skipMemoryCache(true) . Но имейте в виду, что изображения по-прежнему будут кэшироваться на диске — для предотвращения этого — используется метод .diskCacheStrategy (DiskCacheStrategy strategy) , который принимает одно из следующих значений:
- DiskCacheStrategy.NONE : данные не сохраняется в кэше.
- DiskCacheStrategy.SOURCE : исходные данные сохраняются в кэше.
- DiskCacheStrategy.RESULT : сохраняет результат данных после преобразований в кэше.
- DiskCacheStrategy.ALL : кэширует исходные и преобразованные данные.
Чтобы отключить оба кеширования и в памяти и на диск, просто вызовите оба метода один за другим:
11. Прослушивание запросов
В Glide можно применить RequestListener для отслеживания состояний запроса, сделанного при загрузке изображения. Будет вызван только один из методов.
- onException() : срабатывает всякий раз, когда возникает исключение, так что вы можете обрабатывать исключения в этом методе.
- onResourceReady() : срабатывает, когда изображение загрузилось успешно.
Вернемся к нашему приложению галереи изображений и немного изменим отображение, с помощью объекта RequestListener , который будет назначать растровое изображение для ImageView , а также изменим фоновый цвет путем извлечения темного оттенка, в зависимости от цвета изображения с помощью API палитры Android.
Здесь можно также скрыть диалоговое окно прогресса, если оно у вас есть. С этим последним измененим не забудьте включить зависимость от Палитры в ваш build.gradle :
12. Тестируем приложения
Наконец, можно запустить приложение! Нажмите на превьюшку, чтобы полуить полноразмерное изображение.
10. Анимации
Когда вы запустите приложение, вы заметите crossfade анимацию при отображении изображения. Это по умолчанию включено в Glide, но вы можете отключить его путем вызова dontAnimate() , так что изображение будет просто отображаться без каких-либо анимации. Вы также можете изменить эту анимацию затухания путем вызова crossFade(int duration) , указав продолжительность в миллисекундах, либо ускорить ее или замедлить, значение по умолчанию — 300 миллисекунд.
Анимированные GIF
Показывать анимированные GIF в вашем приложении через Glide очень просто. Это работает так же, как отображение обычного изображения.
Если вы ожидаете GIF изображение, вызовите asGif() — это настроит Glide на получение GIF изображения, в противном случае загрузка завершится ошибкой и вместо этого будет показан Drawable , переданный методом .error() .
Воспроизведение видео
К сожалению Glide не поддерживает загрузку и отображение видео через URL. Вместо этого, он может только загружать и отображать видео с телефона. Показать видео можно передав его URI в метод load() .
Заключение
Отличная работа! На этом уроке вы построили полноценное приложении галереи с Glide и по пути узнали как работает эта библиотека и как вы можете интегрировать ее в свой собственный проект. Вы также узнали, как отображать локальные и удаленные изображения, как показывать анимированные GIF-файлы и видео, как применять преобразования изображения, на примере изменения размеров. И не только это. Вы видели, как легко можно включить кэширование, обработку ошибок и прослушиватьель запросов.
Чтобы узнать больше о Glide, обратитесь к ее официальной документации. Чтобы узнать больше о написании приложений для Android, посмотрите некоторые из наших других курсов и уроков на Envato Tuts+!
Игорь шесть лет работал программистом, пока не столкнулся с проблемой, которую надо было решить за пару дней. Так он познакомился с зерокодингом. Сначала использовал Integromat, а потом перешел на более тяжелую зависимость — Glide. Он рассказал, как назерокодил приложение для обучения макияжу MAKE.
Моя жена занимается макияжем, и в пандемию ей пришлось полностью переводить бизнес в онлайн. Сначала мы запустили курсы — и к нам пришло 2000 активных пользователей. Но почти сразу стало понятно — надо расширяться. Тогда я помог ей выпустить онлайн-тетрадь по макияжу. За 4 дня ее скачали и оплатили 500 человек, а мы задумались над созданием своего приложения.
Хотел, чтобы приложение решало ту же проблему, что и рабочая тетрадь. То есть помогать в выборе косметики и аксессуаров для определенного типа лица и советовать, где все это заказать, чтобы не купить подделку. Эти задачи я быстро решил с помощью MVP на Glide.
Первый экран — авторизация, потом сразу открывается экран оплаты. Приложение доступно только по подписке: 399 руб/мес, или 1990 руб/год. Оплатить можно через ЮКаssу или с помощью банковской карты.
После оплаты открывается встроенный в приложение лендинг с GetCourse. Почему выбрал именно его:
- там уже собрана пользовательская база;
- все материалы приложения сверстаны на этой платформе;
- настроена работа с Юкаssа;
- можно подключить автоплатежи.
Если пользователь оплатил подписку с помощью банковской карты, информация о ней сохраняется. За 3 дня до окончания подписки пользователя предупредят о предстоящем списании. После автооплаты система пришлет результат — успешно прошло списание или денег на карте не оказалось.
У процесса оплаты подписки есть нюанс: тайм-аут между самим платежом, и моментом когда обновится Google-таблица, из которой берет информацию Glide. Чтобы это решить, я добавил мгновенное подключение триального периода после оплаты. Теперь пользователю не нужно ждать — ему сразу открывается полный доступ, даже если платежная информация еще не поступила в Glide.
Кроме советов, как сделать макияж, приложение предлагает средства и инструменты, которые помогают правильно его нанести. В Glide работает поиск — и можно найти любой бренд среди 400 позиций.
Подсказки, как выбрать инструменты для макияжа, их свойства.Я 3 часа смотрел уроки по Glide, а потом за 4 вечера продумал структуру и основной функционал приложения. Дольше всего вносил 400 продуктов в систему (средства для макияжа, аксессуары и информация о них) — просидел над этой задачей 2 недели :)
Сейчас хочу проверить гипотезу — есть ли job story, которые можно решить этим приложением и какую еще ценность может дать пользователям MAKE. Когда заработаю достаточно, буду расширять команду и сделаю стартап в сфере макияжа по сборке make up-приложений, для загрузки в официальные сторы.
Зерокодинг позволяет решить множество технических задач всего за пару часов. Поэтому всем специалистам, которые связаны с тестированием гипотез (программистам, стартаперам, продактам, и тем, кто хочет ими стать) рекомендую обратить внимание на этот тренд.
Glide — это онлайн-конструктор мобильных приложений из гугл-таблиц, не требующий навыков программирования. Его девиз — собери мобильное приложение на гугл-таблицах за 5 минут. И это не преувеличение. Пообщаться с Glide-разработчиками и больше узнать о платформе можно в русскоязычном коммьюнити. Игорь уже там.
Glide – это сервис для разработки мобильных приложений. На платформе можно сделать приложения для обучения, планирования и других задач.
Попробовать создать свою программу можно бесплатно.
Первые шаги
Платформа работает на основе Google-таблиц или внутренних таблиц – пользователь сам выбирает, с чем ему удобнее работать. Если привычнее первый вариант, нужно авторизоваться на сайте через почту Gmail, чтобы приложение получило доступ к Google-документам .
После этого – создавать базу данных. Наполнение зависит от того, что именно пользователь хочет увидеть в приложении.
Например, НКО могут создать приложение с афишей своих событий, чтобы у участников всегда была под рукой актуальная информация, а организатором не пришлось всем писать лично.
Рассмотрим идею создания именно такого приложения.
Работа с таблицами
Чтобы упростить работу, в таблице создают отдельные листы. Например, один лист посвящают спикерам: составляют таблицу с именами, должностями, контактами, другой отводят под программу встреч: где, когда, кто и о чем будет говорить.
Таблица строится так: первая строка — название свойства, а все, что ниже, — данные. Строки отвечают за одного человека или за одно событие. Столбцы – это та информация, которую НКО хочет отразить в приложении.
Не обязательно заполнять все ячейки: Glide автоматически настроит приложение, чтобы пользователь не видел пробелы.
Полезный совет: необязательно вручную заполнять графы со временем. Достаточно поставить время начала у первого события. В графе «конец» пишется формула: ячейка с временем начала + сколько минут продлится событие / 1440 (например: D2 + 20 / 1440).
Фото и презентации
В приложении настраивается и визуальная часть – можно загрузить фотографии и презентации, которые увидит пользователь.
Фотографии необходимо загрузить в Google Photos и скопировать их ссылку. Полученный адрес вставить в новую графу в таблице – напротив события или человека, к которому она относится.
Создание в Glide
Проект можно создать с нуля или использовать шаблоны из библиотеки Glide. Их более 300 и почти половина — бесплатные. Для создания приложения с программой мероприятия подойдет шаблон Conference.
Для каждой вкладки в приложении нужно выбрать название, иконку, источник данных (один из листов в таблице) и стиль. В Glide можно менять верстку и цвет оформления, добавлять и убирать блоки: текст, медиафайлы, карты, кнопки, ссылки, календари. В бесплатной версии доступно более 40 элементов.
Фото: Oleg Magni / Unsplash
Чтобы блок появился в приложении, нужно на него кликнуть, тогда он отобразится на экране и вкладке SCREEN. Все элементы выводятся в список – в такой же последовательности они отображаются на экране приложения. Компоненты нельзя передвигать или вручную менять их размеры.
Публикация приложения
В бесплатной версии нельзя выбрать свой домен, а также создать версии для компьютера и планшета. Без подписки приложение будет находиться на домене glideapp.io.
Приложение можно сделать открытым для всех или давать доступ только тем пользователям, которые авторизовались. Второй вариант позволяет собирать личные данные.
Медиацентр «АСИ – Благосфера» – совместный проект Центра «Благосфера» и Агентства социальной информации. Его цель – продвижение в обществе идей благотворительности и социальной ответственности, социальной активности граждан с использованием различных медиаформатов. Один из таких форматов – медиаклуб для проведения обучающих, дискуссионных и просветительских мероприятий в сфере коммуникаций с участием профессионалов для НКО, сообществ, граждан.
Что такое Glide и как в нем работать, рассказывали в медиацентре «АСИ – Благосфера».
Glide – это сервис для разработки мобильных приложений. На платформе можно сделать приложения для обучения, планирования и других задач.
Попробовать создать свою программу можно бесплатно.
Первые шаги
Платформа работает на основе Google-таблиц или внутренних таблиц – пользователь сам выбирает, с чем ему удобнее работать. Если привычнее первый вариант, нужно авторизоваться на сайте через почту Gmail, чтобы приложение получило доступ к Google-документам.
После этого – создавать базу данных. Наполнение зависит от того, что именно пользователь хочет увидеть в приложении.
Например, НКО могут создать приложение с афишей своих событий, чтобы у участников всегда была под рукой актуальная информация, а организатором не пришлось всем писать лично.
Рассмотрим идею создания именно такого приложения.
Работа с таблицами
Чтобы упростить работу, в таблице создают отдельные листы. Например, один лист посвящают спикерам: составляют таблицу с именами, должностями, контактами, другой отводят под программу встреч: где, когда, кто и о чем будет говорить.
Таблица строится так: первая строка — название свойства, а все, что ниже, — данные. Строки отвечают за одного человека или за одно событие. Столбцы – это та информация, которую НКО хочет отразить в приложении.
Не обязательно заполнять все ячейки: Glide автоматически настроит приложение, чтобы пользователь не видел пробелы.
Полезный совет: необязательно вручную заполнять графы со временем. Достаточно поставить время начала у первого события. В графе «конец» пишется формула: ячейка с временем начала + сколько минут продлится событие / 1440 (например: D2 + 20 / 1440).
Фото и презентации
В приложении настраивается и визуальная часть – можно загрузить фотографии и презентации, которые увидит пользователь.
Фотографии необходимо загрузить в Google Photos и скопировать их ссылку. Полученный адрес вставить в новую графу в таблице – напротив события или человека, к которому она относится.
Создание в Glide
Проект можно создать с нуля или использовать шаблоны из библиотеки Glide. Их более 300 и почти половина — бесплатные. Для создания приложения с программой мероприятия подойдет шаблон Conference.
Для каждой вкладки в приложении нужно выбрать название, иконку, источник данных (один из листов в таблице) и стиль. В Glide можно менять верстку и цвет оформления, добавлять и убирать блоки: текст, медиафайлы, карты, кнопки, ссылки, календари. В бесплатной версии доступно более 40 элементов.
Фото: Oleg Magni / Unsplash
Чтобы блок появился в приложении, нужно на него кликнуть, тогда он отобразится на экране и вкладке SCREEN. Все элементы выводятся в список – в такой же последовательности они отображаются на экране приложения. Компоненты нельзя передвигать или вручную менять их размеры.
Публикация приложения
В бесплатной версии нельзя выбрать свой домен, а также создать версии для компьютера и планшета. Без подписки приложение будет находиться на домене glideapp.io.
Приложение можно сделать открытым для всех или давать доступ только тем пользователям, которые авторизовались. Второй вариант позволяет собирать личные данные.
Медиацентр «АСИ – Благосфера» – совместный проект Центра «Благосфера» и Агентства социальной информации. Его цель – продвижение в обществе идей благотворительности и социальной ответственности, социальной активности граждан с использованием различных медиаформатов. Один из таких форматов – медиаклуб для проведения обучающих, дискуссионных и просветительских мероприятий в сфере коммуникаций с участием профессионалов для НКО, сообществ, граждан.
Читайте также: