티스토리 뷰

반응형

안드로이드 뿐만아니라, 거의 모든 프로그램은 최초 로딩화면이 뜬다.

 

로딩화면을 만드는 이유는 여러가지가 있을 것 같다.

 

회사를 어필하기 위한 방법 중에 하나일 것이고,

또는 프로그램을 구동하기 전 리소스를 준비하기 위함일 수도 있을 것이다.

 

나중에 앱을 완성하고 배포하려고 했는데,

바로 MainActivity가 튀어나오면 얼마나 심심할텐가.

 

그래서 Splash를 이용하여 로딩화면을 만들어 보겠다.

 

 

MainActivity에서 SplashActivity를 불러보도록 하겠다.

 

 

[과정] 

MainActivity의 onCreate에서 startActivity로 MainSplashClass의 Activity를 생성해서 불러준다.

그러면 MainSplashClass의 Activity가 생성되고 또 이 Activity의 onCreate가 불러지게 된다.

MainSplashClass의 Activity는 단순히 보여주고 사라지는 것이기 때문에 Handler를 이용한다.

Handler 객체를 생성하고, sendEmptyMessageDelayed의 함수로 메시지를 보낸다.

Handler의 메소드 handleMessages에다가 Finish()라는 Activity를 종료하는 함수를 콜한다.

그럼 종료되고 MainActivity로 돌아가게 된다.

 

 

 

 

1. MainActivity.java

 

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//MainSplashClass로 부터 Intent 생성 시작.
		startActivity(new Intent(this, MainSplashClass.class));
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

 

 

 

2. MainSplashClass.java

 

 

 

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
 

public class MainSplashClass extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO 자동 생성된 메소드 스텁
		super.onCreate(savedInstanceState);
		setContentView(R.layout.mainsplash_layout);

		Handler hdl = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				// TODO 자동 생성된 메소드 스텁
				finish(); // activity 종료
			}

		};
		hdl.sendEmptyMessageDelayed(0, 3000); // 3초후 메시지 보내지
	}

}

 

 

3. mainsplash_layout.xml 

 

 android:src="@drawable/splash_img" />

 -> 나는 splash_img.png 파일을 준비했었다.

 

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.24"
        android:src="@drawable/splash_img" />

</LinearLayout>

 

 

 

 

 

 

 

4. AndroidManifest.xml

 

 <activity
              android:name="com.mashup.mashupreal.MainSplashClass"
             android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">

 </activity>

  -> Activity를 추가해줘야 오류가 나지 않는다. 중요함.

  -> 타이틀바를 없애고 풀스크린으로.

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mashup.mashupreal"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.mashup.mashupreal.MainActivity"
            android:label="쏭's 편리한세상" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
          <activity
              android:name="com.mashup.mashupreal.MainSplashClass"
             android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
          </activity>
    </application>

</manifest>
 

 

 

 

 

반응형
댓글
최근에 올라온 글
반응형