안녕하세요? 닉네임간편입니다. 이번 시간에는 Glide(글라이드)에 대해서 다루어보겠습니다.
1. 개요
Glide(글라이드)는 안드로이드에서 이미지를 빠르고 효율적으로 불러올 수 있게 도와주는 라이브러리입니다. 구글은 Glide 라이브러리르 사용하여 앱에서 비트맵을 가져오고, 디코딩하고 표시하는 것을 추천하고 있습니다. 따라서 이 라이브러리를 사용하는 것은 중요하다고 할 수 있습니다.
2. 사용법 - 준비
먼저 build.gradle 파일의 dependencies에 아래와 같은 요소를 추가합니다.
def glide_version = "4.12.0"
implementation 'com.github.bumptech.glide:glide:$glide_version'
annotationProcessor 'com.github.bumptech.glide:compiler:$glide_version'
이때 버전 정보가 다를 수 있으므로 아래 문서에서 최신 버전을 찾아 설정해줍니다.
https://github.com/bumptech/glide
외부 통신을 통해 이미지를 가져온다면 인터넷 권한을 매니페스트 파일에 추가합니다.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
이때 두번째에 있는 권한(ACCESS_NETWORK_STATE)은 사실 필수적이진 않지만, 네트워크가 불안정하거나 사용자가 에어플레인 모드를 사용할 때 Glide가 이를 대처할 수 있도록 도와줍니다.
3. 사용법 - 코드
아래와 같이 사용할 수 있습니다. 보기 편하기 위해 줄바꿈을 했습니다.
Glide.with(this)
.load(url)
.fitCenter()
.placeholder(R.drawable.placeholder)
.into(poster)
현재 여기서 글라이드를 사용하는 데 필수적인 요소는 with, load 그리고 into 입니다. 이외에 더 필요한 속성을 추가하면 됩니다.
a. with()
View, Fragment 또는 Activity로부터 Context를 가져옵니다.
b. load()
이미지를 로드하는데, Bitmap, Drawable, Uri 등 다양한 방식으로 이미지를 로드할 수 있습니다. 저는 Uri를 사용했습니다.
c. into()
이미지를 보여줄 View를 지정합니다.
d. fitCenter()
실제 이미지가 이미지가 표현되는 뷰의 사이즈와 다를 때, 원본 이미지의 가로/세로 비율을 유지하면서 빈 공간은 background 속성의 color로 채우는 것입니다. 이때 이 이미지는 레이아웃의 가운데 쪽에 정렬됩니다.
e. Placeholder
이미지를 불러오는 과정에서 사용하는 Drawable입니다.
다른 상용 서비스를 보면 특정 이미지가 표시되기 전에 똑같은 이미지가 먼저 그려져있는 걸 볼 수 있습니다. 이미지가 불러오지 않더라도 화면에 아무것도 표시되는 것은 사용자에게 좋게 보이지 않을 수 있기 때문입니다. 따라서 이를 방지하기 위해 먼저 placeholder를 사용해 기본 이미지를 설정한 후, 추후에 원하는 이미지가 로드가 다 되면 그때 placeholder로 설정했던 이미지와 해당 이미지를 교체합니다.
또한 이외에도 다양한 메서드를 호출해서 기능을 구현할 수 있습니다.
자세한 사항은 아래 문서를 통해 확인하실 수 있습니다.
https://bumptech.github.io/glide/
4. 마무리
이번 시간에는 글라이드에 대해서 알아봤습니다. 이미지를 표시할 때 매우 유용하고, 특히 구글이 권장하는 것이기 때문에 이 라이브러리는 참 중요하다고 할 수 있습니다. 따라서 이번 시간에 잘 정리되었으면 좋겠습니다.
'Android > 꼭 공부해야 할 라이브러리' 카테고리의 다른 글
Koin을 통해 의존성 주입하기 (0) | 2021.12.18 |
---|---|
예제로 알아보는 ExoPlayer (1) | 2021.10.06 |
예제로 알아보는 DiffUtil - RecyclerView 성능을 향상하자! (0) | 2021.10.03 |
Room 을 사용해 데이터를 관리하자! with 사용법과 예제 (0) | 2021.10.02 |
[웹에서 데이터 가져오기] 3. GSON (0) | 2021.09.29 |