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()
}
}
참고
https://velog.io/@s2ilver8/Android-StudioSplash-%ED%99%94%EB%A9%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0
'기타 > Android' 카테고리의 다른 글
[Android] ImageView 꽉차게(scaleType) (0) | 2022.03.10 |
---|---|
[Android] ImageView 투명도 설정 (0) | 2022.03.10 |
따릉이 공공자전거 Clone (0) | 2022.03.10 |
[Android Studio / Kotlin] 안드로이드 효과음 넣기 (soundPool) / 고기굽는 소리 (0) | 2022.02.28 |
[Kotlin] 코틀린 HashMap value 기준으로 정렬하기 (0) | 2022.02.28 |