티스토리 뷰
안드로이드 뿐만아니라, 거의 모든 프로그램은 최초 로딩화면이 뜬다.
로딩화면을 만드는 이유는 여러가지가 있을 것 같다.
회사를 어필하기 위한 방법 중에 하나일 것이고,
또는 프로그램을 구동하기 전 리소스를 준비하기 위함일 수도 있을 것이다.
나중에 앱을 완성하고 배포하려고 했는데,
바로 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" <ImageView </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"?> <uses-sdk <application <category android:name="android.intent.category.LAUNCHER" /> </manifest> |