«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

올해는 머신러닝이다.

[펌]안드로이드 로딩화면 추천 구축방법 본문

Android/Tip&Tech

[펌]안드로이드 로딩화면 추천 구축방법

행복한 수지아빠 2011. 12. 8. 11:53
출처 : http://isulnara.com/tt/227

안드로이드(android) 앱이 실행되면서 스플래시(splash, 로딩) 화면을 띄우는 소스입니다.


여러가지 방법이 있겠지만 제가 사용하는 방법은 아래와 같습니다.

AndroidManifest.xml
<!-- 메인 액티비티 -->
<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="SplashActivity"/>

MainActivity .java
public class MainActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        startActivity(new Intent(this, SplashActivity.class));

        initialize();  // 시간이 걸리는 작업 처리
    }

    /**
     * 스플래시 표시하는 것과 초기화를 동시에 진행시키기 위하여 쓰레드 처리
     *
     */
    private void initialize()
    {
        InitializationRunnable init = new InitializationRunnable();
        new Thread(init).start();
    }


    /**
     * 초기화 작업 처리
     *
     */
    class InitializationRunnable implements Runnable
    {
        public void run()
        {
            // 여기서부터 초기화 작업 처리
            // do_something
        }
    }
}

SplashActivity.java
public class SplashActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        initialize();
    }

    private void initialize()
    {
        Handler handler =    new Handler()
                                     {
                                         @Override
                                         public void handleMessage(Message msg)
                                         {
                                             finish();    // 액티비티 종료
                                         }
                                     };

        handler.sendEmptyMessageDelayed(0, 3000);    // ms, 3초후 종료시킴
    }
}


* 화면을 가로/세로 모드로 전환할 경우 스플래쉬 액티비티가 보이는 문제가 발생할 경우 대처
- 여러가지 방법이 있겠지만 아래처럼 처리하면 됩니다.(2010/10/27 추가)

AndroidManifest.xml
<!-- 메인 액티비티 -->
<activity android:name="MainActivity" android:label="@string/app_name"android:configChanges="keyboardHidden|orientation">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

<!-- 스플래시(로딩) 액티비티 -->
<activity android:name="SplashActivity"/>
예제 다운로드: