공식 문서를 읽으며 Glide가 어떻게 동작하는지 확인하고 서버에 업로드 된 이미지를 여러 비율로 불러올 수 있는지 체크해보자
Glide는 기본적으로 통신을 시작하기 전에 4가지를 체크한다.
Active resources
: 이미지가 이미 다른 View에서 출력되고 있는가?Memery cache
: 이미지가 최근에 불러와졌고 아직 메모리에 있는가?Resource
: 이미지가 disk cache
에 디코딩, 변형, 출력된 적이 있는가?Data
: 이미지 데이터가 disk cache
에 포함되어 있는가?처음 두 단계는 메모리에 이미지가 있는지 체크하고 있다면 즉시 이미지를 리턴한다. 그 다음 두 단계는 disk에 이미지가 있는지 체크하고 만약 있다면 최대한 빠르게 이미지를 리턴한다. 다음 두 단계는 비동기로 일어난다.
위의 네 가지를 모두 실패하면 그제서야 요청을 보낸다. 이런 과정을 기본적으로 지원한다니 놀랍다. 당연히 커스텀도 가능하다. 나중에 커스텀이 필요하면 공식 문서를 참고하자
여러가지 형태로 변형할 수 있다. RequestOption
클래스와 함께 옵션을 조정할 수 있고 각 요청마다 직접 옵션을 달아서 조정할 수 있다. 또한 커스텀 변형 클래스를 생성할 수 있다.
CenterCrop
, FitCenter
, CircleCrop
, RoundedCorners
등 많은 클래스가 존재하고 이번 프로젝트에서는 CenterCrop
과 RoundedCorner
를 사용했다.
CenterCrop
은 불러올 이미지의 중앙과 이미지를 넣을 ImageView의 중앙을 맞추고 ImageView를 벗어나는 부분을 잘라버린다. 그리고 RoundedCorners
는 이미지의 각 모서리를 둥글게 만들어준다.