반응형
Splash 화면이란?
앱을 실행할 때 보여주는 시작화면을 말합니다. 짧게는 1초에서 길게는 5초까지 보여줍니다.
보통 앱 실행 시 앱의 정체성을 보여주거나 필요한 데이터를 로딩하기 위해 사용합니다. 하지만 의도적으로 앱 실행을 지연시키거나 작업을 처리하는 용도로 사용하는 것은 지양합니다.
Android에서 Splash 화면 구현하기
일반적인 Activity를 구현하는 방식으로 Splash 화면을 구현할 수 있습니다. 하지만 layout.xml
부르게 된다면 오히려 Splash 화면에서 시간과 리소스가 낭비되기 때문에 여기서는 좀 더 효율적인 방법으로 만들어 보겠습니다.
우선 Splash 화면의 배경으로 사용할 xml을 만들어 줍니다.
background_splash.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/main_color"></solid>
</shape>
themes.xml
에 style을 추가해줍니다.
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
</resources>
manifest
파일에 application 태그 안에 다음 내용을 추가해줍니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.com.testing">
<application>
<!--아래 부분 추가-->
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!---------------->
</application>
</manifest>
SplashActivity
를 만들어줍니다.
SplashActivity.kt
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val intent = Intent(applicationContext, MainActivity::class.java)
startActivity(intent)
finish()
}
}
화면이 너무 빨리 넘어가서 시간을 지정해주고 싶다면 아래의 코드로 변경해주시면 됩니다. (2초 지연)
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Handler(Looper.getMainLooper()).postDelayed({
val intent = Intent(applicationContext, MainActivity::class.java)
startActivity(intent)
finish()
}, 2000)
}
}
반응형
'개발 > Android' 카테고리의 다른 글
[Android] Fragment에서 View Binding 사용 시 주의사항 (0) | 2022.01.03 |
---|---|
[Android] Retrofit - API 통신을 쉽게 구현해보자 (0) | 2021.12.16 |
[Android] Intent로 데이터 전달 시 용량 제한 (0) | 2021.09.16 |
[Android] (번역) Comparing Kotlin Coroutines with Callbacks and RxJava (0) | 2021.08.20 |
[Android] 스마트폰 내장 DB를 사용하기 위한 Room 2탄 (0) | 2021.08.13 |
댓글