2020. 12. 31. 22:11ใ๐ฑAndroid/๐ Android Study
Splash ํ๋ฉด์ ์ฑ ์์ํ์๋ง ์ ์๋์ ๋จ๋ ํ๋ฉด์ธ๋ฐ์! ์ค๋์ ์ ๋ง ๊ฐ๋จํ Splash ํ๋ฉด์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ์ด๋ณด๋ คํฉ๋๋ค!
๐ SplashActivity ๋ง๋ค์ด์ฃผ๊ธฐ
Splash ํ๋ฉด์ผ๋ก ์ฌ์ฉํ Activityํ๋๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐activity_splash.xml ํ๋ฉด ๊ตฌ์ฑํ๊ธฐ
์ํ๋๋๋ก xml ํ๋ฉด์ ๊ตฌ์ฑํด์ฃผ์ธ์. ์ ๋ ๊ฐ๋จํ๊ฒ ๊ธฐ๋ณธ android ImageView๋ง ๋์ ์ต๋๋ค.
<?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"
android:background="@color/colorPrimary"
tools:context=".SplashActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:src="@drawable/ic_launcher_foreground"/>
</androidx.constraintlayout.widget.ConstraintLayout>
๐ SplashActivity.kt Handler ๊ตฌํํด์ฃผ๊ธฐ
SplashActivity.kt์ Handler๋ฅผ ๊ตฌํํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. Hadler์ ๋ชฉ์ ์ ํน์ ์๊ฐ๋์ SplashActivity ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋๋ก ํ๊ธฐ ์ํด์ ํ์ํฉ๋๋ค
์ ๋ Splash ํ๋ฉด์ 3์ด๋์ ๋ณด์ฌ์ค ๋ค MainActivitiy๋ก ์ด๋ํ๊ฒ ๊ตฌํํ์์ต๋๋ค.
Splash ํ๋ฉด์ ์ฑ ์ฒ์ ์์์ ๋ฑ 1๋ฒ๋ง ๋ณด์ฌ์ง๋ ํ๋ฉด์ด๋ฏ๋ก ๊ผญ ํ๋ฉด์ ํํ finish() ํด์ฃผ์ ์ผํฉ๋๋ค!
Handler().postDelayed({
val intent = Intent(this, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
startActivity(intent)
finish()
},DURATION)
companion object {
private const val DURATION : Long = 3000
}
SplashActivity.kt ์ ์ฒด ์ฝ๋
package com.example.splash
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
Handler().postDelayed({
val intent = Intent(this, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
startActivity(intent)
finish()
},DURATION)
}
companion object {
private const val DURATION : Long = 3000
}
override fun onBackPressed() {
super.onBackPressed()
}
}
๐ SpalshActivity ์ธํ ํธ ํํฐ ์ค์ ํด์ฃผ๊ธฐ
๋งจ ์ฒ์์ MainActivity๊ฐ ์๋ SplashActivity๊ฐ ์ ์ผ ๋จผ์ ์คํ๋์ด์ผ ํ๋ฏ๋ก ์ธํ ํธ ํํฐ๋ฅผ SplashActivity๋ก ์ง์ ํด์ค๋๋ค.
MainActivity์ ์กด์ฌํ๋ ์ธํ ํธ ํํฐ๋ฅผ SplashActivity๋ก ์ฎ๊ฒจ์ค๋๋ค.
AndroidManifest.xml
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
๐ Splash ํ๋ฉด NoActionBar๋ก ์ค์ ํด์ฃผ๊ธฐ
๋ณดํต์ Splashํ๋ฉด์์๋ ActionBar๊ฐ ์๊ธฐ ๋๋ฌธ์ NoActionBar Theme๋ฅผ ํ๋ ๋ ๋ง๋ค์ด์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
splash ํ๋ฉด์ ์ํ NoActionBar๋ก ์ด๋ฃจ์ด์ง Splash style์ ํ๋ ๋ง๋ค์ด ์ค๋๋ค.
style.xml
<style name="Splash" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
AndroidManifest.xml
<activity android:name=".SplashActivity"
android:theme="@style/Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
์ด๋ ๊ฒ Splash ํ๋ฉด ๊ตฌํ์ด ๋์ด ๋ฌ์ต๋๋ค! ์ฑ ์คํ ๊ฒฐ๊ณผ๋ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ต๋๋ค.
Splash ํ๋ฉด์ ์ด์ฉํ์ฌ ์ข ๋ ์ฑ์ ์์ฑ๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค : ) ์ํ๋ ํ๋ฉด์ผ๋ก Splash ํ๋ฉด์ ๊ตฌ์ฑํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!
'๐ฑAndroid > ๐ Android Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android/Kotlin] darkmode ์ ์ฉํ๊ธฐ (0) | 2020.12.31 |
---|---|
[Android/Kotlin] - WebView ์ฌ์ฉํ๊ธฐ (0) | 2020.12.30 |
[Android/Kotlin] - Wifi ์ฐ๊ฒฐ ์ํ ํ์ธํ๊ธฐ (0) | 2020.12.30 |