로딩 화면을 구현하는 방법은 두 가지로 나눌 수 있는데, 로딩 화면을 메인으로 설정하는 방법과 메인 화면에서 로딩 화면을 호출하는 방법이다.

전자는 앱의 시작점을 로딩 화면으로 설정하는 것으로 LoadingActivity → MainActivity 순서로 실행된다. 후자는 기본 시작점인 메인 화면에서 로딩 화면을 호출하는 것으로 MainActivity → LoadingActivity → MainActivity 순서로 실행된다.

방법의 차이일 뿐, 두 방법 모두 같은 결과물을 보여준다.

로딩 화면을 메인으로 설정

  • activity_loading.xml

로딩 화면의 레이아웃을 간단하게 구성한다. xml을 만든 후 화면 중앙에 ‘로딩’ 글자가 보이도록 TextView를 추가하였다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="로딩"
        android:layout_gravity="center_horizontal"
        android:textSize="30dp" />

</LinearLayout>
  • LoadingActivity.java

activity_loading을 로딩 화면의 View로 설정한다. startLoading() 메소드는 로딩 화면이 나타난 후 2초뒤에 MainActivitiy를 실행하도록 한다.

public class LoadingActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_loading);

        startLoading();
    }

    private void startLoading() {
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent = new Intent(getBaseContext(), MainActivity.class);
                startActivity(intent);
                finish();
            }
        }, 2000);
    }

}
  • AndroidManifest.xml

애플리케이션의 시작점을 LoadingActivity로 변경한다. 그리고 아래에 MainActivity를 추가한다.

<activity
    android:name=".LoadingActivity"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

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

메인 화면에서 로딩 화면 호출

  • LoadingActivity.java

위와 다르게 MainActivity를 실행하지 않고 2초 뒤 종료된다.

public class LoadingActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_loading);

        startLoading();
    }

    private void startLoading() {
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                finish();
            }
        }, 2000);
    }

}
  • MainActivity.java

onCreate() 부분에 LoadingActivity를 실행하는 코드를 추가한다.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Intent intent = new Intent(this, LoadingActivity.class);
    startActivity(intent);
}
  • AndroidManifest.xml

처음 만들어진 상태 그대로 MainActivity가 시작점이다. 아래에 LoadingActivity에 대한 부분만 추가한다.

<activity
    android:name=".MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity 
    android:name=".LoadingActivity"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
</activity>