핸드폰에 있는 앱들을 켜보면 대개 앱 로고와 앱 제목이 나오고 몇초뒤에 메인화면으로 전환이 되는 것을 볼 수 있습니다.
이 화면을 Splash이라고 합니다.
1. Splash Activity 생성
우선 Splash화면으로 사용할 Activity를 생성합니다.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SplashActivity">
<TextView
android:id="@+id/tv_splash"
android:text="Splash Activity"
android:textSize="40sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
2. Splash Activity Class생성
Splash 화면을 구현하기 위해 Splash Activity Class를 생성합니다.
Splash 화면은 메인 화면으로 넘거가기 전에 앱을 실행시키자 마자 나오는 화면으로, 일정 시간이 지나면 메인 화면으로
전환되도록 구현합니다.
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
val handler = Handler()
handler.postDelayed({
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}, 3000)
}
}
handler.postDelayed를 이용해서 일정 시간이 지나게되면 화면이 메인 화면으로 전환하도록 구현합니다.
3. 앱 시작화면을 Splash Activity로 변경
앱을 실행시켰을 때 기본적으로 MainActivity가 나오게됩니다.
Splash화면을 처음으로 실행이 되도록 manufests에서 설정해야 합니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.duran.myapplication12341234">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyApplication12341234"
tools:targetApi="31">
<activity
android:name=".SplashActivity"
android:exported="false" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
manufests를 보게되면 MainActivity에 intent-filter에
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
해당 코드들이 있습니다.
이 코드들을 MainActivity에서 SplashActivity로 변경하게되면 SplashActivity가 먼져 실행이 되고 SplashActivityClass에서 작성한 시간이 지나게되면 MainActivity로 이동하는 것을 확인할 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.duran.myapplication12341234">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyApplication12341234"
tools:targetApi="31">
<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>
<activity
android:name=".MainActivity"
android:exported="true">
</activity>
</application>
</manifest>
'안드로이드 > Kotlin' 카테고리의 다른 글
[Kotlin] Splash Screen(로딩 화면) 만들어보기 (0) | 2022.09.28 |
---|---|
[Kotlin] Toolbar Custom해보기 (0) | 2022.09.28 |
[Kotlin] var와 val의 차이점 (0) | 2022.08.06 |
[Kotlin] 데이터 클래스(Data class) (0) | 2022.07.30 |
[Kotlin] View Binding (0) | 2022.07.27 |