Android Splash 화면에 대한 내용입니다.
스플래시 화면 작동 방식
사용자가 앱을 실행할 때 앱 프로세스가 실행되지 않거나(콜드 스타트) 활동이 만들어지지 않은 상태(웜 스타트)라면 다음 이벤트가 발생합니다. 스플래시 화면은 핫 스타트 중에 표시되지 않습니다.
- 시스템은 개발자가 정의한 테마와 애니메이션을 사용하여 스플래시 화면을 표시합니다.
- 앱이 준비되면 스플래시 화면이 닫히고 앱이 표시됩니다.
그니깐 앱 로딩이 완료될 때 까지 스플래시를 보여주는 방식인데 themes.xml에 아래와 같이 작성해줍니다.
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.Jetpack_Ex" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- 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>
<style name="Theme.Jetpack_Exs.ss" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/purple_200</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/test</item>
<item name="postSplashScreenTheme">@style/Theme.Jetpack_Ex</item>
</style>
</resources>
build.gradle에 추가해주고
implementation 'androidx.core:core-splashscreen:1.0.0-beta02'
Menifest에서 만든 테마 적용해주고
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bokchi.jetpack_ex">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Jetpack_Ex">
<activity
android:name=".MainActivity"
android:theme="@style/Theme.Jetpack_Exs.ss"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
MainActivity에서 아래와 같이 적용 끝.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
installSplashScreen()
Thread.sleep(2000)
setContentView(R.layout.activity_main)
}
}
- 참조
https://developer.android.google.cn/about/versions/12/features/splash-screen?hl=ko
'Android(Kotlin)' 카테고리의 다른 글
SharedPreferences / EncryptedSharedPreferences (0) | 2022.07.26 |
---|---|
Android Lottie (0) | 2022.05.16 |
SaveFile Android kotlin (0) | 2022.05.02 |
Android REQUEST_IGNORE_BATTERY_OPTIMIZATIONS (0) | 2022.04.29 |
기존 Retrofit Callback 계속 붙이면? (0) | 2022.04.13 |