Android

[Android] Glide를 사용해서 네트워크 이미지 로드하기

도우 2024. 2. 21. 16:54
728x90

Glide 라이브러리

Glide는 안드로이드용 오픈 소스 이미지 로딩 라이브러리로, 비동기 이미지 로딩, 이미지 캐싱, 애니메이션 등 다양한 기능을 제공한다. Glide는 특히 리스트나 그리드 같은 컬렉션 뷰에서 스크롤 성능을 향상시키기 위해 설계되었다고 한다.

서버에 있는 이미지(URL)를 로드하기위해 사용되며 재사용, 디스크 캐싱, 메모리 관점에서 매우 효율적이다.

 

 

공식문서 ▼

https://github.com/bumptech/glide?tab=readme-ov-file

 

GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling

An image loading and caching library for Android focused on smooth scrolling - bumptech/glide

github.com

 

 

1. 의존성 추가 및 인터넷 권한 추가

// build.gradle

dependencies {
    implementation ("com.github.bumptech.glide:glide:4.11.0")
    annotationProcessor ("com.github.bumptech.glide:compiler:4.11.0")
}
// AndroidManifest.xml

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

 

 

2. 기본 사용법

Glide.with(context) // Context 제공
     .load(url) // 로드할 이미지 URL
     .into(imageView); // 이미지를 표시할 ImageView

with(Context context)
- Glide의 인스턴스 생성 및 이미지 로드를 위한 컨텍스트 설정
- Activity, Fragment 인스턴스 또는 getApplicationContext()를 사용할 수 있다.

load( String | Uri | File | ResourceId ) : 로드할 이미지의 타입을 지정한다.

 

 

3. 주요 함수

Glide.with(context)
	.placeholder( Drawable | ResourceId ) // 이미지 로딩 전 표시될 이미지 설정
        .error( Drawable | ResourceId ) // 에러 이미지 설정
        .fallback( Drawable | ResourceId ) // null일 경우 표시될 이미지 설정
        .override( int width, int height ) // 로드할 이미지의 크기 지정
        .centerCrop() // 이미지 중앙 맞춤 (중앙에서 크롭)
        .fitCenter() // 이미지 중앙 맞춤 (비율 유지)
        .thumbnail() //비율 또는 저해상도 이미지 강제 로드
        .into() // 이미지를 보여줄 View

 

 

listener() 메소드를 통해 다음과 같이 로딩 성공 및 콜백을 받을 수 있다.

Glide.with(context)
     .load(url)
     .listener(new RequestListener<Drawable>() {
         @Override
         public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
             // 로딩 실패 시 처리
             return false;
         }

         @Override
         public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
             // 로딩 성공 시 처리
             return false;
         }
     })
     .into(imageView);

 

 

 

4. 캐시 전략 설정

diskCacheStrategy() 메소드를 사용해 디스크 캐시 전략을 지정할 수 있다. 
캐싱 정책은 이미지 로딩 성능을 최적화 하기 위해 매우 중요하다

- 메모리 캐시 : 이미지 데이터를 RAM에 저장
- 디스크 캐시 : 이미지 데이터를 기기의 파일 시스템에 저장

DiskCacheStrategy.NONE : 이미지를 디스크에 캐시하지 않는다.
DiskCacheStrategy.DATA : 원본 이미지 데이터만 디스크에 캐시
DiskCacheStrategy.RESOURCE : 변환된 이미지만 디스크에 캐시
DiskCacheStrategy.ALL: 원본 데이터와 변환된 이미지 모두를 디스크에 캐시
DiskCacheStrategy.AUTOMATIC : Glide가 자동으로 이미지를 캐싱하는 최적의 전략을 결정

Glide.with(context)
     .load(url)
     .diskCacheStrategy(DiskCacheStrategy.ALL) // 모든 버전의 이미지를 캐시
     .into(imageView);

 

728x90