[Android] Glide 로 이미지 Load하기

Happy Jiwon·2023년 3월 15일
1

Android

목록 보기
3/13
post-thumbnail

Glide

Glide 는 애플리케이션에서 이미지를 빠르고 효율적으로 불러올 수 있게 도와주는 라이브러리이다.
다양한 이미지 형식과 데이터 소스를 지원하며, 이미지 로딩과 관련된 다양한 기능을 제공한다. 이번 글에서는 Glide의 기본적인 사용법과 주요 기능에 대해 알아보겠다.

Glide 문서


Glide의 기능

Glide 는 안드로이드 이미지 로딩 라이브러리 중에서 가장 많이 사용되는 라이브러리 중 하나이다.

Glide는 비디오 스틸, 이미지 및 애니메이션 GIF 가져오기, 디코딩 및 표시를 지원한다.
Glide에는 개발자가 거의 모든 네트워크 스택에 연결할 수 있는 유연한 API가 포함되어 있다. 기본적으로 Glide는 사용자 정의 HttpUrlConnection 기반 스택을 사용하지만, Google의 Volley 프로젝트 또는 Square의 OkHttp 라이브러리에 플러그인하는 유틸리티 라이브러리도 포함한다.


추가적으로...

이미지 캐싱
Glide는 이미지를 메모리와 디스크에 캐시한다. 즉, 이미지가 로드되면 다음에 요청할 때 캐시에서 신속하게 검색할 수 있으므로 이미지를 다시 로드할 필요성이 줄어든다.

이미지 크기 조정
이미지 크기를 조정하여 메모리 사용량을 줄이고 성능을 향상시킬 수 있다. 이는 작은 크기로 표시해야 하는 큰 이미지를 로드할 때 특히 유용하다.

이미지 변환
자르기, 회전, 블러 처리와 같이 이미지가 표시되기 전에 이미지에 적용할 수 있는 다양한 이미지 변환을 제공한다.

다양한 이미지 형식 지원
PNG, JPEG 및 GIF를 포함한 다양한 이미지 형식을 지원한다.

네트워크 최적화
올바른 크기와 형식으로 이미지를 다운로드하여 네트워크 사용을 최적화하고 다운로드해야 하는 데이터 양을 줄여준다.

다른 라이브러리와의 통합
Retrofit 및 OkHttp와 같은 다른 라이브러리와 쉽게 통합되어 API에서 이미지를 더 쉽게 로드할 수 있다.


Glide 사용해보기

1. 프로젝트의 build.gradle 파일에 Glide 종속성을 추가

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

1-1. 외부 통신을 통해 이미지를 가져와야 한다면 인터넷 권한을 매니페스트 파일에 추가해준다.

<uses-permission android:name="android.permission.INTERNET" />

2. ImageView에 이미지를 로드
특별한 옵션 없이 단순히 생성해 놓은 뷰에 이미지를 넣는 것이라면 with(), load(), into() 로 간단히 표현할 수 있다.

Glide.with(context)
     .load(imageUrl)
     .into(imageView);

위의 코드에서 context는 현재 컨텍스트이고 imageUrl은 로드할 이미지의 URL이며 imageView는 이미지가 표시되어야 하는 View이다.

  • with() : View, Fragment 혹은 Activity로부터 Context를 가져온다.
  • load() : 이미지를 로드한다. 다양한 방법으로 이미지를 불러올 수 있다. (Bitmap, Drawable, String, Uri, File, ResourId(Int), ByteArray)
  • into() : 이미지를 보여줄 View를 지정한다.



3. (선택 사항) 이미지 변환을 추가

Glide.with(context)
     .load(imageUrl)
     .apply(RequestOptions.circleCropTransform())
     .into(imageView);

다음은 선택사항으로, 위의 코드에서 circleCropTransform()은 이미지가 표시되기 전에 이미지에 적용할 수 있는 변환의 예시이다.
(크기 조정, 자르기 및 흐림이 포함된다.)


🖐🏻 GIF 이미지 로딩

GIF 파일을 불러올 때 보통 raw 디렉토리에 따로 저장해서 사용한다. 하지만, 위의 방법과 마찬가지로 사용해주면 gif 이미지가 실행되지 않는다.

그래서 사용하는 것은 asGif() 이다. 다음과 같이 사용하면 실행되는 것을 확인할 수 있다.

Glide.with(this).asGif().load(R.raw.gif).into(gifView);

이렇게 작성하면 GIF는 무한루프를 돌면서 계속 실행된다. listener를 이용해 한번만 돌도록 설정해주면 된다.

 Glide.with(this)
	.asGif()
	.load(R.raw.gif)
	.listener(new RequestListener<GifDrawable>() {
		@Override
		public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<GifDrawable> target, boolean isFirstResource) {
			return false;
		}

		@Override
		public boolean onResourceReady(GifDrawable resource, Object model, Target<GifDrawable> target, DataSource dataSource, boolean isFirstResource) {
			if (resource != null) {
				resource.setLoopCount(1);
			}
			return false;
		}
	})
	.into(gifView);

결과

profile
공부가 조은 안드로이드 개발자

0개의 댓글