안드로이드 raw directory 생성
안드로이드에서 gif는 리소스 타입이 raw인 폴더에 보관해야 합니다.
raw를 생성한 뒤, 해당 경로에 .gif 파일을 넣어줍니다.
제 프로젝트의 경우 모든 Activity, Fragment에서 상속받는 부모 Activity에서
showLoading() 함수를 구현했습니다.
fun showLoading() {
if (progressDialog == null) {
progressDialog = ProgressNetDialog(this)
progressDialog!!.setCancelable(false)
progressDialog!!.setCanceledOnTouchOutside(false)
progressDialog!!.setOnDismissListener {
try {
Thread.interrupted()
} catch (e: Exception) {
}
}
if (!this.isFinishing) {
progressDialog!!.show()
}
} else if (!progressDialog!!.isShowing) {
if (!this.isFinishing) {
progressDialog!!.show()
}
}
}
해당 부모 클래스를 상속 받는 모든 Activity와 Fragment에서 간단하게 로딩을 띄울 수 있습니다.
위 코드에서 ProgressNetDialog 클래스를 로딩을 구현하고 싶은 화면으로 커스텀하시면 됩니다.
만약 Glide를 사용하신다면 다음의 코드가 도움이 될 것입니다.
GlideApp.with(context)
.asGif()
.override(width,height)
.load(R.raw.loading)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.into(imageView);
.asGif()
단순 이미지 뿐만 아니라 GIF도 로딩할 수 있습니다.
.override(width,height)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
Glide에서 해당 리소스를 캐싱하고, 캐싱된 리소스와 load할 리소스가 같은 리소스일 때
별도의 절차 없이 캐싱된 리소스를 사용하기 때문에,
만약 안드로이드에서 gif를 사용하는데 속도가 느리신 경우에 해결 방법이 될 수 있습니다.
참고 사이트
https://github.com/bumptech/glide/issues/600
https://bumptech.github.io/glide/
'Android' 카테고리의 다른 글
Android 8.0 Only fullscreen opaque activities can request orientation error (0) | 2019.07.19 |
---|---|
이미지 가로세로 비율 유지하기 adjustBounds (1) | 2019.01.21 |
안드로이드 O (오레오 ) Notifications Channel (0) | 2018.10.22 |