Kangho_Story

[안드로이드 코틀린 Kotlin] 스플래시 엑티비티(첫 화면) 띄우기 본문

Android

[안드로이드 코틀린 Kotlin] 스플래시 엑티비티(첫 화면) 띄우기

캉호 2024. 5. 2. 00:29
728x90
반응형

앱이 처음 시작하면 스플래시 화면을 2초간 띄운 후 기존에 로그인한 사용자라면 MainActivity로 intent하고 처음 접속하는 사용자라면 LoginActivity로 intent하는 SplashActivity를 만들어보자.

 

우선 Empty Views Activity를 하나 만들어주고 이름은 SplashActivity로 한다.

스플래시 엑티비티 생성

그리고 앱 시작시 SplashActivity부터 시작해야 하므로 AndroidManifest.xml에 들어가서 기존에 MainActivity에 있던 <intent-filter>를 잘라내서 SplashActivity에 붙여준다.

메니페스트

 

그리고 나는 파이어베이스의 Autentication을 사용해서 로그인 기능을 구현할 예정이며 이와 관련된 설정은 생략하도록 한다.

 

class SplashActivity : AppCompatActivity() {

    private lateinit var auth: FirebaseAuth

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_splash)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }


        // 일정 시간 지연 이후 실행하기 위한 코드
        Handler(Looper.getMainLooper()).postDelayed({
            auth = Firebase.auth
            val currentUser = auth.currentUser
            if (currentUser == null) {
                Log.d("splash","비로그인")
                //비로그인 상태
                // 일정 시간이 지나면 MainActivity로 이동
                val intent = Intent(this, LoginActivity::class.java)
                startActivity(intent)
                // 이전 키를 눌렀을 때 스플래시 스크린 화면으로 이동을 방지 하기 위해
                // 이동한 다음 사용 안 함으로 finish 처리
                finish()
            }else {
                Log.d("splash","로그인")
                //로그인 상태
                // 일정 시간이 지나면 MainActivity로 이동
                val intent = Intent(this, MainActivity::class.java)
                startActivity(intent)
                // 이전 키를 눌렀을 때 스플래시 스크린 화면으로 이동을 방지 하기 위해
                // 이동한 다음 사용 안 함으로 finish 처리
                finish()
            }
        }, 2000) // 시간 2초 이후 실행
    }
}

 

SplashActivity에서 로그인 상태인지 비로그인 상태인지에 따라서 어느 Acitivity로 intent할지가 결정된다.

 

이후 실행해보면 스플래시 화면이 2초간 지속되고 나는 비로그인 사용자이므로 LoginActivity로 이동하게 된다.

스플래시 엑티비티
로그인 엑티비티

 끝!

728x90
반응형
Comments