앱 아이콘 바꾸기

res (우클릭) > New > Image Asset 누르면 Launcher Icons (Adaptive and Legacy) 를 새로 설정할 수 있다.

Path만 바꿔서 원하는 이미지 선택하고 크기 배율 조정만 해주면 바꿀 수 있다.

Background Layer도 단색 이미지로 바꿔서 깔끔하게 하자.

 

mipmap의 파일이 변경된다.

 

SplashScreen 설정하기

gradle(module: app) > dependencies 에 splashscreen library 추가한다.

implementation("androidx.core:core-splashscreen:1.0.1")

 

app > manifests > AndroidManifest.xml 을 수정한다.

<activity
    android:name=".MainActivity"
    android:exported="true"
    android:theme="@style/Theme.App.Starting">  <!-- ★ 1번 -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" /> <!-- ★ 2번 -->
    </intent-filter>
</activity>

 

1. (★ 2번) 운영체제는 LAUNCHER 카테고리가 있는 MainActivity를 찾아 앱의 첫 시작점으로 인식한다.

2. (★ 1번) 그리고 MainActivity를 실행하기 전에, android:theme에 지정된 @style/Theme.App.Starting을 화면에 먼저 보여준다. 이것이 바로 스플래시 스크린이 된다.

 

res > values > themes.xml

<style name="Theme.App.Starting" parent="Theme.SplashScreen">
    <item name="windowSplashScreenBackground">@android:color/white</item>
    <item name="windowSplashScreenAnimatedIcon">@mipmap/ic_launcher</item> <!-- ★ 3번 -->
    <item name="postSplashScreenTheme">@style/Theme.Schatz</item> <!-- ★ 4번 -->
</style>

 

3.(★ 3번) AndroidManifest.xml이 지정한 Theme.App.Starting 테마는 @mipmap/ic_launcher를 아이콘으로 사용하는 스플래시 화면을 만든다. 이 화면은 앱의 코드가 실행되기도 전에 시스템이 직접 보여주므로 매우 빠르다.

4.(★ 4번) 이 테마는 스플래시 화면이 끝난 후에 적용할 테마로 @style/Theme.Schatz를 지정해 둔다.

 

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        installSplashScreen() // ★ 5번
        super.onCreate(savedInstanceState)
        setContent { // ★ 6번
            ######Theme {
                ...
            }
        }
    }
}

 

5.(★ 5번) 스플래시 화면이 표시되는 동안, MainActivity의 onCreate가 실행된다.

installSplashScreen() 코드는 "이제부터 스플래시 화면은 내가 관리할게"라고 시스템에 알려주는 역할을 한다.

6.(★ 6번) setContent 블록 안에서 Greeting 같은 Composable 함수를 통해 실제 앱의 UI를 그리기 시작한다. 

UI가 준비되면 installSplashScreen()이 자동으로 스플래시 화면을 숨기고 themes.xml에 지정했던 메인 테마(Theme.######)를 적용하며 자연스럽게 메인 화면으로 전환한다.

+ Recent posts