-
Notifications
You must be signed in to change notification settings - Fork 0
4.4.1 스플래시
Minha Lee edited this page Feb 26, 2023
·
4 revisions
// SplashFragment.kt
NetworkConnection(requireContext()).observe(viewLifecycleOwner) {
CoroutineScope(Dispatchers.Main).launch {
if (isFirstCheck) {
delay(3000)
val splashAnim = AnimationUtils.loadAnimation(requireContext(), R.anim.animation_splash)
binding.apply {
ivLogo.visibility = View.VISIBLE
binding.ivLogo.startAnimation(splashAnim)
}
delay(1200)
isFirstCheck = false
}
if (it) {
withContext(Dispatchers.Main) {
if (isTokenValid) {
findNavController().navigate(R.id.action_splashFragment_to_mainFragment)
} else {
findNavController().navigate(R.id.action_splashFragment_to_logInFragment)
}
}
} else {
showToast(requireContext(), "네트워크 상태를 확인해주세요", Types.ToastType.WARNING)
}
}
}
- 네트워크 상태 observe 하면서 코루틴 영역 내에서 로티 실행 → 로고 애니메이션 → 화면 이동 순서로 진행 되도록 함
- 로티 실행 → 로고 애니메이션 진행 후
- 네트워크 상태가 true(네트워크 연결O)인 경우 로컬에 저장된 토큰이 유효한지 확인 후 유효하다면 홈화면으로, 유효하지 않다면 로그인 화면으로 이동
- 네트워크 상태가 false(네트워크 연결X)인 경우 네트워크 상태를 확인해달라는 토스트 메시지를 띄운 후 네트워크 상태가 true가 될 때까지 대기