프로그래밍/Android

안드로이드 인트로(스플래시) 화면을 만들어보자

Lou Park 2019. 4. 24. 15:46

카카오톡, 네이버, 구글 등 여러 앱들은 대부분 스플래시 화면이라고 하는 것을 가지고 있다.
앱 실행시 잠깐 로고가 뜨는 화면을 말하는데, 오늘은 그것을 만들어보려고 한다.
내가 진행할 강의는 인터넷에 있는 다른 안드로이드 스플래시 화면 만들기 강의랑은 다른점이 있는데, 바로 Thread-Handler를 사용하지 않는다는 것이다.
Handler를 사용해서 만드는 방법은 지정한 시간 후에 화면이 넘어가게하는 방법인데, 아래 단점과 같은 이유로 별로다…

여러분의 앱 로고가 아무리 멋지다 하더라도 로딩이 다 끝났는데 스플래시 화면을 봐 줄 사람은 없다. ㅠㅠ

Handler 사용시

  • 장점지정한 시간동안 스플래시 화면을 보여줄 수 있다.

  • 단점지정한 시간동안 사용자를 억지로 기다리게 한다.

내가 만들 스플래시 화면은 순수하게 앱 로딩이 끝나면 전환되는 스플래시 화면! 이다.

drawable 폴더에 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/cardview_light_background"/>
    <!-- 로고 -->
    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/ic_launcher"/>
    </item>
</layer-list>



스플래시 이미지가 될 화면이다. 코드로 적혀있어서 무슨 화면이 될지 모르실 분들을 위해서 사진을 준비했다.

앱의 로고를 가운데 넣고,#EEE정도되는 color를 배경에 깐 모습이다.
디자인은 여기에서 여러가지 건드리면된다.

xml이 준비되었다면 다음 단계로 넘어가면된다.

values/styles.xml 수정하기

<resources>
    ...
    <!-- 아래 스타일을 추가해 준다 -->
    <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
    </style>
</resources>

values 폴더 안에 있는styles.xml에서 새로운 스타일을 하나 추가 해 준다.
이름은 SplashTheme 이라고 임의로 명명하겠다.

SplashActivity.java 생성

public class SplashActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // MainActivity.class 자리에 다음에 넘어갈 액티비티를 넣어주기
        Intent intent = new Intent(this, MainActivity.class);
        intent.putExtra("state", "launch");
        startActivity(intent);
        finish();
    }
}

SplashActivity.java파일을 만들어서 위와 같이 입력해준다.
지금은MainActivity.class로 넘어간다고 했지만, 여러분의 앱의 메인 액티비티 이름을 넣으면된다.

AndroidManifest.xml 수정하기

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.gold24park.mcpeguidebook">
    ...
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:name="com.gold24park.mapemasterbook.util.AnalyticsApplication"
        android:theme="@style/AppTheme">

        <!-- 시작 액티비티를 SplashActivity로 설정, android:theme를 SplashTheme로 설정 -->
        <activity android:name="com.gold24park.mapemasterbook.SplashActivity"
            android:theme="@style/SplashTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name="com.gold24park.mapemasterbook.MainActivity"></activity>
    </application>
</manifest>

AndroidManifest.xml에서 주석을 참고하여 수정하면 완성!