티스토리 뷰


  앱을 실행하자마자 아래와 같은 이미지를 띄우고 대략 2~3초 뒤에 메인 화면으로 넘어가는 동작을 구현해 보겠습니다.

  우선 가장 무난한 페이스북 인트로 화면을 예제로 잡아보겠습니다.

  우선 아래와 같이 인트로로 사용할 이미지를 준비합니다.

  저는 가장 무난한 페이스북 이미지에 나인패치를 입혀서 적용했습니다. 화면을 다 덮는 이미지를 사용해도 되지만 intro 화면에 사용될 Drawable 을 정의한 xml 파일을 사용하는 것이 좋습니다.


  우선 values 폴더의 style.xml 파일에 다음과 같은 테마를 하나 추가시켜줍니다.

  액션바와 타이틀을 제거하고 인트로에 사용될 배경 이미지를 출력하는 테마입니다.

<style name="IntroTheme" parent="android:Theme.Light.NoTitleBar">
            <item name="android:windowBackground">@drawable/intro</item>
            <item name="android:windowActionBar">false</item>
            <item name="android:windowNoTitle">true</item>
</style>


  그리고 AndroidManifest.xml 에서 Intro 를 보여줄 Activity 에 해당하는 엘리먼트에 다음과 같은 속성을 추가시켜서 인트로 테마를 지정합니다.

android:theme="@style/IntroTheme"


 마지막으로 인트로 화면을 보여줄 해당 Activity 에 인트로 화면을  표시하기 위하여 코드를 다음과 같이 작성합니다.

 아래 코드는 액티비티 하나로 인트로와 컨텐츠를 모두 보여주는 예 입니다.

Preview:

public class MainActivity extends Activity {

	@Override
	protected void onCreate(final Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		boolean isRunIntro = getIntent().getBooleanExtra("intro", true);
		if(isRunIntro) {
			beforeIntro();
		} else {
			afterIntro(savedInstanceState);
		}
	}
	
	// 인트로 화면 
	private void beforeIntro() {
		// 약 2초간 인트로 화면을 출력.
		getWindow().getDecorView().postDelayed(new Runnable() {
			@Override
			public void run() {
				Intent intent = new Intent(MainActivity.this, MainActivity.class);
				intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
				intent.putExtra("intro", false);
				startActivity(intent);
				// 액티비티 이동시 페이드인/아웃 효과를 보여준다. 즉, 인트로
                                //    화면에 부드럽게 사라진다.
				overridePendingTransition(android.R.anim.fade_in, 
                                                                     android.R.anim.fade_out);
			}
		}, 2000);
	}
	
	// 인트로 화면 이후.
	private void afterIntro(Bundle savedInstanceState) {
		// 기본 테마를 지정한다.
		setTheme(R.style.AppBaseTheme);
		setContentView(R.layout.activity_main);
	}

}

실행 결과




댓글
  • 프로필사진 hyomin 안녕하세요 지나가던 학생인데요.. 앱을 직접 클릭해서 실행하면 제대로 되는데 웹브라우저처럼 url누르고 실행가능한 앱 목록중 제가 만든 앱을 실행하면 인트로 화면이 안나오고 바로 뜨더라고요. getIntent하는 부분을 고치면 될것 같은데 어떻게 해야할지 모르겠어서요. 혹시 알고계신다면 알려주시겠나요? 2014.10.31 12:03 신고
  • 프로필사진 범 범2 이용약관위배로 관리자 삭제된 댓글입니다. 2014.10.31 14:28
  • 프로필사진 범 범2 제가 뭘 잘못 눌렀는지 답글이 삭제되었네요.

    아래 코드를
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)

    다음 것으로 바꿔주면 됩니다.
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | intent.FLAG_ACTIVITY_NEW_TASK);


    FLAG_ACTIVITY_NEW_TASK 에 대한 내용은 http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK 를 참고하세요.

    2014.10.31 15:55 신고
댓글쓰기 폼