[안드로이드] 로딩 화면 구현 하기

안드로이드 책을 옆에 끼고 처음부터 차근차근 보는 것보단, 무엇이라도 만들어 보는 것이 좋다 생각했다.
어느정도 알고는 있지만 깊게 알지는 못하는 나-_-a

로딩 화면 구현도 여기저기 찾아 보고 이를 바탕으로 작성 해보았다. (대부분 로딩 화면 구현과 비슷할 듯 하다)

1. 로딩 화면 구현 하기
MainActivity

public class MainActivity extends Activity {
    private Handler mHandler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        startActivity(new Intent(this, SplashActivity.class)); //SplashActivity적어줍니다. SplashActivity실행
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_main); //Main레이아웃 
        initialize(); // 적어도 되고 안적어도 됩니다. 이 경우 스레드 작업을 위한 함수입니다.
    }
   
    // Splash화면이 뜨는 동안 다른 작업을 할 수 있도록 처리 하는 방법입니다. 
    // 해당 출처 http://isulnara.com/tt/227
    private void initialize(){
          InitializationRunnable init = new InitializationRunnable();
          new Thread(init).start();
    }
}


SplashActivity

public class SplashActivity extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_splash); //splash이미지 레이아웃 
      
        Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {        
         finish(); //현재 액티비티 즉 SplashActivity 종료
        
                                //페이드 인 페이드 아웃 효과 res/anim/fadein, fadeout xml을 만들어 줘야 합니다.
         overridePendingTransition(R.anim.fadein, R.anim.fadeout);
         }
        };
        handler.sendEmptyMessageDelayed(0,2000); //2000 시간 설정 1000->1초
    }  
  public void onBackPressed(){} //splash 이미지 띄우는 과정에 백 버튼을 누를 수도 있다. 백버튼 막기
}


[요약]
음 그러니깐 MainActivity 자체에서 먼저 SplashActivity를 호출하고 2초 뒤에 이 SplashActivity가 사라지면서 MainActivity가 보이는 듯 하다. (Activity는 차곡차곡 쌓이는[?])

MainActivity 시작 -> SplashActivity -> SplashActivity 2초뒤 종료 -> MainActivity

2. 애니메이션 추가
fadein.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="300" />

fadeout.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="300" />

res폴더에 anim폴더를 만들어 그 밑에 작성 하면 된다.

[결과]
Splash화면 뜨고 페이드 인 아웃~ 되면서 MainActivity가 자연스럽게 나온다!










댓글

이 블로그의 인기 게시물

블로그 이전 작업 및 블로깅 할 목록 정리

[Spring Framework] Redirect +a 궁금증! ver_0.1

Phoenix 라이브러리 - ERROR 2008 (INT10): Unable to find cached index metadata 발생 시