코린이 탈출기
chapter 11.5 - Glide 라이브러리 활용하기 본문
Glide - 사용자가 직접 업로드하는 이미지를 배치하는 라이브러리입니다.
지금까지 다루었던 이미지들은 모두 미리 다운로드하여서 프로젝트의 drawable에 직접 추가해서 사용하였습니다.
하지만 사용자가 직접 올리는 이미지의 경우에는 미리 다운을 받을 수 없습니다.
그래서 사용자가 올린 이미지는 파일 저장 서버에 따로 게시하고 앱에서는 이 사진이 저장된 인터넷 주소(url)을 받아서 이미지를 띄우는 방식입니다.
구글의 로그를 띄우는 화면을 만들어보겠습니다.

xml은 위와 같이 구글 로그를 띄울 ImageView를 배치하였습니다.

구글의 로그를 가져오겠습니다.
원하는 로그의 이미지 주소를 복사해오면 됩니다.
주소는 아래와 같은 주소가 복사되고, 주소를 클릭하면 원하는 로고가 나올 것입니다.
https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
위 주소로 이미지를 불러오는 것은 xml 내에서는 불가능합니다.
xml로 띄우는 것이 아닌 이미지를 넣는 곳에 주소를 불러 동작하는 것이라고 생각하면 됩니다.

구글에 원하는 키워드만 검색하면 github 사이트에 라이브러리가 나옵니다.
https://github.com/bumptech/glide
라이브러리를 활용하는 것은 이전 글을 통해 자세하게 설명되어있습니다.
2021.06.14 - [안드로이드/클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기] - chapter 11.1 - 라이브러리
라이브러리 활용을 위해 라이센스를 확인합니다.

라이센스를 확인하기 위해 파란 상자를 클릭합니다.

38번째 줄을 보면 apache라는 것을 확인할 수 있습니다.
설치하는 방법을 보겠습니다.


Gradle Scripts > build.gradle(Project:~) > repositories에 적어줍니다.
이 곳은 라이브러리를 확장하기 위해 검색하는 범위를 설정하는 곳입니다.
mavenCentral()의 경우에는 기존 코드에 적혀있는 jcenter()을 검색할 경우 같이 검색이 되기 때문에 따로 작성하지 않아도 됩니다.

Gradle Scripts > build.gradle(Module:~) > dependencies에 적어줍니다.
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
작성 후 sync now 눌러줍니다.
사용법을 보겠습니다.
코드를 작성하는 곳은 MainActivity.kt입니다.


15번 줄의 코드를 보면 됩니다.
Glide.with(어떤 화면에서 사용할 것인지).load("어떤 그림을 불러줄 것인지 - 인터넷 주소").into(어디에 넣어줄 것인지 - ImageView id)
여기까지 작성을 하였지만, 에뮬레이터를 실행하면 아무런 화면이 나오지 않습니다.
그 이유는 인터넷을 연결하는 것은 사용자의 핸드폰 요금을 이용하는 것이기 때문에 권한 획득을 해주어야 합니다.
권한 획득에 관해서는 다음에 자세하게 다루겠습니다.
우선 지금 필요한 인터넷 권한 허용을 해보겠습니다.

권한을 획득에 관해서는 manifests로 가서 설정합니다.
5번 줄과 같이 인터넷에 관한 권한을 획득하였습니다.
에뮬레이터를 실행하면 원하는 이미지가 나옵니다.
만약 이미지의 주소가 https가 아닌 http일 경우가 있습니다.
구글의 로그 이미지도 https가 아닌 http로 검색할 경우 똑같이 나옵니다.
이럴 때에는 임시방편으로 하는 방법이 있습니다.

manifests > application에 가서 14번 줄처럼 코드를 작성합니다.
Glide를 사용하는 이유
웹 상의 이미지에 접근하는 것 자체가 쉽지 않습니다. 이미지 파일을 다운로드하는 것은 비동기 처리를 해주어야 하기 때문입니다.
매번 이미지가 필요할 때마다 웹에 접근하게 됩니다. 캐싱 처리를 하면 효율적이지만 이러한 기능을 구현하는 것 또한 어렵습니다.
이미지의 크기가 너무 크면 에뮬레이터에서는 돌아가지만 실제 핸드폰에서는 강제 종료가 되는 경우가 발생할 수 있습니다. 즉, OOM(메모리 용량 초과)이 발생합니다.
'인터넷 강의 > 클래스101 - 비전공자들을 위한 나만의 안드로이드 앱 만들기' 카테고리의 다른 글
| chapter 11.7 - https vs http - 안드로이드 보안 처리 (0) | 2021.06.14 |
|---|---|
| chapter 11.6 - 캐싱 처리 (0) | 2021.06.14 |
| chapter 11.4 - 이미지 관련 라이브러리 활용 - PhotoView (0) | 2021.06.14 |
| chapter 11.3 - 이미지 관련 라이브러리 활용 -CircleImageView (0) | 2021.06.14 |
| chapter 11.2 - Gradle (안드로이드 빌드 도구) (0) | 2021.06.14 |