Glide는 구글에서 지원하는 공식 라이브러리이다.
.transition(withCrossFade())
발단
해결방안
transition(DrawableTransitionOptions.withCrossFade()
적용Thumbnail 적용
마지막 문제점
내부 함수를 보면 다음과 같이 필드가 채워지는걸 알 수 있다.
외부에서 설정한 sizeMultiplier는 thumbnailRequest로 따로 분리되어 필드에 적용이 된다.
Request fullRequest =
obtainRequest(
requestLock,
target,
targetListener,
requestOptions,
coordinator,
transitionOptions,
priority,
overrideWidth,
overrideHeight,
callbackExecutor);
BaseRequestOptions<?> thumbnailOptions =
requestOptions.clone().sizeMultiplier(thumbSizeMultiplier);
Request thumbnailRequest =
obtainRequest(
requestLock,
target,
targetListener,
thumbnailOptions,
coordinator,
transitionOptions,
getThumbnailPriority(priority),
overrideWidth,
overrideHeight,
callbackExecutor);
coordinator.setRequests(fullRequest, thumbnailRequest);
return coordinator;
이 필드는 결과적으로 SingleRequest를 생성한다.
결론적으로 size를 리턴하게 되는데 이 때 기존의 크기와 sizeMultiplier를 곱하게 된다.
private static int maybeApplySizeMultiplier(int size, float sizeMultiplier) {
return size == Target.SIZE_ORIGINAL ? size : Math.round(sizeMultiplier * size);
}
private fun applyGlide(glide: RequestManager, imageView: ImageView, imageUrl: String) {
glide.load(imageUrl).apply(
RequestOptions.bitmapTransform(
MultiTransformation(CenterCrop(), RoundedCorners(10))
)
).placeholder(R.drawable.background_community_placeholder).thumbnail(
glide.load(imageUrl).sizeMultiplier(0.25f).apply(
RequestOptions.bitmapTransform(
MultiTransformation(CenterCrop(), RoundedCorners(4))
)
)
).into(imageView)
}