안녕하세요. 이번에는 Glide를 사용하여 이미지를 불러오는 방법을 알아보려고 합니다.
URL, URI 등의 이미지를 ImageView로 바로 불러올 수 있지만 이미지를 원본 상태 그대로 불러오기 때문에 이미지가 많아진다면 리소스를 많이 잡아먹게 되어 앱이 강제적으로 종료되거나 매우 느려질 수 있습니다. 물론 코드를 통해서 이미지를 수정하여 사용할 수 있지만 Glide를 사용하게 되면 효율적이고 간단하게 구현할 수 있기 때문에 매우 많이 사용되는 라이브러리입니다. 또한 캐싱도 자동적으로 처리해주어 재로딩 시 빠르게 이미지를 나타내 줍니다.
예제를 만들어보기 전에 Glide의 속성에 대해 알아보도록 하겠습니다.
Glide의 속성
Glide.with(context) // Context를 가져옴
Glide.load(url, resource, etc) // 이미지 로드
Glide.into(View) // 이미지를 설정할 View 지정
Glide.placeHolder(image) // 이미지를 불러오기 전에 나타낼 이미지 설정
Glide.error(image) // 로딩에 실패하면 보여줄 이미지 설정
Glide.fallback(image) // 로딩할 이미지가 없으면 보여줄 이미지 설정
Glide.signature(ObjectKey()) // 이미지 캐시의 해시키값을 지정
Glide.skipMemoryCache = true // true시 캐시를 저장하지 않음
Glide.diskCacheStrategy(DiskCacheStrategy) // 디스크 캐싱 설정(ALL, AUTOMATIC, DATA, NONE, RESOURCE)
// DiskCacheStrategy.NONE : 캐시 저장하지 않음
// DiskCacheStrategy.ALL : 모두 저장
// DiskCacheStrategy.AUTOMATIC : 자동 저장
// DiskCacheStrategy.RESOURCE : 데이터를 디코딩한 후 캐싱
// DiskCacheStrategy.DATA : 데이터를 디코딩하기 전 캐싱
Glide 예제
이제 예제를 만들어 보도록 하겠습니다.
- Build.gradle(Module)
먼저 Build.gradle(Module)에 Glide 의존성을 추가해 줍니다.
dependencies {
...
implementation 'com.github.bumptech.glide:glide:4.12.0'
}
추가한 후 Sync Now를 클릭해줍니다.
- activity_main.xml
레이아웃에 ImageView를 추가 해줍니다.
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
- AndroidManifest.xml
Url을 통해 이미지를 불러오려면 INTERNET에 대한 권한이 필요하므로 설정해줍니다.
<uses-permission android:name="android.permission.INTERNET" />
- MainActivity.kt
이제 메인 액티비티에서 Glide를 사용해 오른쪽의 이미지를 불러와 보도록 하겠습니다.
https://blog.kakaocdn.net/dn/b7gKAc/btrF3gQobX4/uMdhkiG6GbnNplDGgLgWKK/img.gif
이미지의 주소는 위와 같습니다.
간단한 예제기 때문에 다른 속성은 사용하지 않고 만들도록 하겠습니다.
class MainActivity : AppCompatActivity() {
private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
Glide.with(this)
.load("https://blog.kakaocdn.net/dn/b7gKAc/btrF3gQobX4/uMdhkiG6GbnNplDGgLgWKK/img.gif")
.into(binding.imageView)
}
}
위의 코드를 실행해보면 다음과 같은 결과를 얻을 수 있습니다.
위 예제는 아래의 제 github에서 확인하실 수 있습니다!
GitHub - won-droid/function
Contribute to won-droid/function development by creating an account on GitHub.
github.com
이번에는 Glide에 대해 알아보았습니다. 이해가 되지 않거나 다른 궁금한 점, 잘못된 점이 있다면 댓글을 남겨주세요!
'Android > Libraries' 카테고리의 다른 글
[Android] 안드로이드 Permission(권한) 예제 - 연락처/주소록 만들기 (권한 획득, 연락처 불러오기) (0) | 2022.07.24 |
---|---|
[Android] Parcelable 생성 Parcelize로 편하게 생성하기(with Serializable) (0) | 2022.07.24 |
[Android] 안드로이드 Permission(권한) 종류 및 권한 획득 예제(지문인증 / 생체 인증) (0) | 2022.07.11 |
[Android] 안드로이드12 대응 SplashScreen(스플래시 스크린) 만들기 (1) | 2022.07.09 |
[Android] Kakao(카카오) SDK를 이용하여 로그인 구현하기 - 로그인 (0) | 2022.05.27 |