[Android / Kotlin] Splash화면 만들기
Splash 화면이란?
이미지나 로고, 현재 버전의 소프트웨어를 포함한 그래픽 요소를 보여주는 화면!
앱의 화면이 나오기전에 1~2초간 나오는 화면이다.
화면이 필요한 이유? 넣는 이유?
디자인 적인 요소, 브랜드나 앱의 이미지각인을 위해 넣는다고 한다.
또는, 어플리케이션을 열었을때, 0.x몇초 동안의 공백화면을 채우기 위해서
빈 화면이 뜨는 이유?
Application을 실행하면, 첫 Activity의 onCreate()가 실행되기 전에 setTheme()이 먼저 실행된다.
setTheme() : 액티비티에 테마가 지정 되어있을 때 테마를 표시하는 메서드이다.
setTheme() -> onCreate() 순으로 호출되기 때문에 테마가 먼저 나타난 후, 화면 layout이 불러와지는 것
theme이 지정되어 있지 않은 경우
: setTheme()이 먼저 호출 되는데, 빈화면이 나타날 것이다!
MainActivity에는 기본적으로 이 공백을 채우기 위한 theme이 따로 지정되어있지 않음.
setTheme()과 onCreate()의 layoutInflation 사이에 빈화면이 나타나는 것이다.
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
handler.postDelayed({
val intent = Intent(baseContext, MainActivity::class.java)
startActivity(intent)
finish()
}, 2000)
}
만약, SplashActivity를 사용해서 Splash화면을 만들면 똑같이, 0.x초의 공백화면이 나타나게 된다!
Activity와 똑같이 layout.xml파일을 불러오기 때문에!
Theme을 활용해서 Splash화면을 만들어야한다!!
- Splash 화면의 배경으로 활용되는 배경 Xml을 생성
layout이 아닌 drawable에 background_splash.xml파일을 생성해야한다!
item android:drawable = "@color~"/> 부분은 배경색이고
bitmap에는 가운데에 splash_icon을 넣어주는 것!
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/white" />
<item>
<bitmap
android:gravity="center"
android:src="@drawable/splash_image" />
</item>
</layer-list>
- values/themes.xml에서 SplashTheme을 설정한다.
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Week9" parent="Theme.MaterialComponents.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<!-- Splash theme. -->
<style name="SplashTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. -->
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<!-- white status bar -->
<!-- <item name="android:windowLightStatusBar">true</item> -->
<!-- background -->
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
</resources>
-SplashAcivity의 기본 Theme을 변경한다
Androidmanifest에서 MainActivity속성에 theme을 설정해준다
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
-SplashActivity
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var intent = Intent(this, MainActivity::class.java)
startActivity(intent)
finish()
}
}
참고
[내 맘대로 정리한 안드로이드] 스플래시(Splash) 화면은 어떻게 만들어야 효율적으로 활용할 수
스플래시(Splash) 화면과 그 목적 스플래시 화면은 앱의 본격적인 화면이 나오기 전에 1~2초 간 잠시 나타나는 화면이다. 일반적으로 단색 배경에 어플리케이션의 로고가 중앙에 표시되는 경우가
holika.tistory.com
https://velog.io/@s2ilver8/Android-StudioSplash-%ED%99%94%EB%A9%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0
[Android Studio]Splash 화면 만들기
Splash Screen이란? 이미지나 로고, 현재 버전의 소프트웨어를 포함한 그래픽 요소를 보여주는 화면으로 보통 프로그램이 실행되고 있을 때 나오는 화면이다. Splash Screen의 목적 안드로이드 앱을 시
velog.io