본문 바로가기
Android Studio

[Kotlin] 안드로이드 스플래시 스크린, SplashScreen

by 열정적인 이찬형 2022. 3. 9.

설명

스플래시 스크린이란?

카카오톡, 틱톡, 유튜브 등 어플리케이션을 실행했을 때 잠깐 뜨는 로고 사진, 애니메이션 등 표시되도록 하는 것입니다.

 

다른 어플리케이션 화면을 가져오는 것이 저작권이 생각되어 볼품 없지만 간단하게 그림판으로 만든 화면입니다.

 

예를 들어 아래 화면에서 몇 초 뒤에 다음 홈 화면으로 넘어가는 상황에서 아래 화면이 나오고 있는 화면을 스플래시 스크린으로 볼 수 있습니다.

최근 만들어지는 어플리케이션, 모바일 게임 등 스플래시 스크린을 사용하는만큼 안드로이드 스튜디오에서 Handler()를 사용하여 구현하는 방법을 알아보도록 하겠습니다.


사용법

Splash Layout

LinearLayout을 사용하여 간단하게 Layout화면을 조성하였습니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/splash_img"
    tools:context=".splash.SplashActivity">
</LinearLayout>

스플래시 화면은 제가 간단하게 제작하는 은행 어플리케이션에서 사용한 로고입니다.

(@drawable/splash_img)

SplashActivity

Handler()와 Intent를 사용하여 SplashLayout 화면이 나온 뒤 3초 후에 LoginActivity화면으로 넘어가게 하였습니다.

class SplashActivity : AppCompatActivity() {
    companion object{
        private const val splash_Time_OUT : Long = 3000	//시간 3초 설정
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.splash_page)
        Handler().postDelayed({	//Handler 수행
        	val intent = Intent(this, LoginActivity::class.java)
          	startActivity(intent)
          	finish()
        }, splash_Time_OUT)
    }
}

Anko 라이브러리 사용시

Anko 라이브러리를 사용하여 Intent 코드를 간략화할 수 있습니다.

Anko 의존성을 먼저 추가한 뒤

android{
	...
}
dependencies {
	...
    //----Anko Commons 의존성 추가--------
    //anko_version = "0.10.2"
    compile "org.jetbrains.anko:anko-commons:$anko_version"
}

SplashActivity

Handler()와 Anko에 startActivity을 사용하여 두 줄로 작성된 코드를 한 줄로 표현할 수 있습니다.

 

class SplashActivity : AppCompatActivity() {
    companion object{
        private const val splash_Time_OUT : Long = 3000	//시간 3초 설정
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.splash_page)
        Handler().postDelayed({		//Handler 수행
            startActivity<LoginActivity>()	//Anko 이용한 intent 실행
            finish()		//현 페이지 종료
        }, splash_Time_OUT)
    }
}

여기서는 2줄 코드를 하나로 줄였지만 안드로이드 프로그래밍에 Intent를 많이 사용하여 Anko를 사용하여 코드를 줄여가는 것을 추천드립니다.

Anko는 Toast, Intent 등 여러가지 코드를 간단하게 작성할 수 있습니다.

 

댓글