728x90
반응형

앱을 만들면서 Intro, Splash화면은 사용자가 어떤 앱을 실행했는지 알려주는 좋은 기능입니다.


하지만 가끔 검정, 회색, 흰색의 화면이 잠깐 나온 다음에 스플래시 화면이 나오는 앱이 많습니다.


그래서 이번 포스팅에서는 스플래시 화면을 따로 만들기 보다는 처음에 나오는 검정, 회색, 흰색 화면을 이용해 스플래시 화면을 만들고자 합니다.


1. background_splash.xml 만들기

<?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="@mipmap/ic_launcher"/>
</item>

</layer-list>

res/drawable 안에 background.splash.xml를 만든 다음에 위 코드를 넣어줍니다.


이렇게 하면 배경은 흰색이고 가운데에 앱 로고가 들어가게 됩니다.


2. SplashTheme 만들기

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>

res/values/styles.xml에 NoActionBar를 상속받는 SplashTheme를 만들어 줍니다.


이렇게 하면 저 테마를 적용한 Activity는 Background로 우리가 만든 background_splash를 보여주게 됩니다.


3. 빈 Activity 만들기

public class SplashActivity extends AppCompatActivity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

startActivity(new Intent(getApplicationContext(), MainActivity.class));
finish();
}
}

이렇게 setContentView()도 하지 않고 바로 startActivity()를 실행하여 MainActivity로 넘어가줍니다.

SplashActivity는 finish()를 해줍니다.


4. Manifest.xml에 SplashActivity 선언하기

<activity
android:name=".SplashActivity"
android:screenOrientation="portrait"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>

이제 2번에서 만든 Theme를 3번에서 만든 Activity에 넣어주고 3번에서 만든 Activity를 시작 Activity로 만들어줍니다.


5. 테스트 해보기



이제 Handler.postDelayed()에서 벗어나봅시다!


출처

https://www.bignerdranch.com/blog/splash-screens-the-right-way/

https://android.jlelse.eu/right-way-to-create-splash-screen-on-android-e7f1709ba154

728x90
반응형

+ Recent posts