엄코딩의 개발 일지

안드로이드 raw directory 생성


안드로이드 res 하위에 Android Resource 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)


지정한 이미지 크기만큼 불러 올 수 있습니다.

override 메소드는 이미지를 최적화 하는 경우 유용하게 사용할 수 있습니다.


.diskCacheStrategy(DiskCacheStrategy.RESOURCE) 


Glide에서 해당 리소스를 캐싱하고, 캐싱된 리소스와 load할 리소스가 같은 리소스일 때



별도의 절차 없이 캐싱된 리소스를 사용하기 때문에,


만약 안드로이드에서 gif를 사용하는데 속도가 느리신 경우에 해결 방법이 될 수 있습니다.



참고 사이트


https://github.com/bumptech/glide/issues/600 


https://bumptech.github.io/glide/