본문 바로가기
AndroidStudio/Kotlin

[Android Studio / Kotlin] Splash 화면 구현하기

by D.B_18 2021. 12. 21.

앱을 켜면 로고와 앱 이름이 나오고 메인 화면으로 전환되는 것을 볼 수 있습니다.

이 화면을 Splash라고 합니다. 오늘은 Splash 화면을 구현해보도록 하겠습니다...!

 

1. Splash Activity xml 생성

우선, Splash 화면으로 사용할 Activity 화면을 생성합니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/main_background"
    android:gravity="center">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Test"
        android:textColor="@color/main_text"
        android:textSize="30sp"
        android:textStyle="bold" />
</LinearLayout>

 

저는 간단하게 Test가 나오도록 작성했습니다.

2. SplashActivity class 생성

Splash 화면을 구현하기 위해서 SplashActivity class를 생성해줍니다.

Splash 화면은 메인 화면으로 넘어가기 전에 앱을 켜자마자 나오는 화면이므로, 일정 시간이 지나면 메인 화면으로 전환되도록 구현해야 합니다.

class SplashActivity: AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.splash_activity)

        val handler = Handler()
        handler.postDelayed({
            val intent = Intent(applicationContext, MainActivity::class.java)
            startActivity(intent)
            finish()
        }, 2000)
    }

    override fun onPause() {
        super.onPause()
        finish()
    }
}

handler.postDelayed를 이용해서 일정 시간이 경과되면 화면이 메인화면으로 전환되도록 구현했습니다.

3. 시작 화면을 Splash 화면으로 변경

앱을 켰을 때 기본으로 MainActivity가 나오므로, 우리는 첫 화면이 SplashActivity가 되도록 수정해야 합니다.

 

설정은 manufests에서 할 수 있습니다.

기존에 첫 화면으로 등록되어 있는 MainActivity 대신에 SplachActivity로 변경하고, MainActivity를 등록하는 코드를 추가해줍니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.slackerplanner">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.SlackerPlanner">
        <activity android:name=".MainActivity">

        </activity>
        <activity
            android:name=".SplashActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
728x90
반응형