Skip to content

4.4.1 스플래시

Minha Lee edited this page Feb 26, 2023 · 4 revisions

WrittenBy Write About


구현 방법

1. 네트워크 상태 체크

// 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가 될 때까지 대기
Clone this wiki locally