반응형
안드로이드(Android) Thread 를 이용해 로딩페이지 만들기 |
환경 : Eclipse Mars, Android 4.2.2 |
이번예제는 로딩페이지를 만드는 것인데 메인페이지에서 정해진 시간동안 머물러 있다가 다음페이지로 넘어갈수 있도록 Thread 를 이용해 만든 샘플입니다. 프로그램을 만들게 되면 로고라든지 로딩페이지 등을 일정시간 머무르게 한뒤 프로그램 메인 페이지로 이동하게 합니다. 그럴때 이용하는 샘플입니다.
▼ 첫번재 페이지에서 일정시간을 중지한후에 다음페이지로 이동합니다. 메인페이지에서 Thread 를 이용해서 객체를 하나 만든후 Wait() 로 정한 시간만큼 멈춥니다. 그런후 시간이 지나면 Intent 를 사용해서 다음페이지로 이동합니다.
// The thread to wait for splash screen events splashThread = new Thread() { @Override public void run() { try { synchronized (this) { // Wait given period of time or exit on touch wait(10000); } } catch (InterruptedException ex) { } finish(); // Run next activity Intent intent = new Intent(); intent.setClass(SplashScreenActivity.this, NextActivity.class); startActivity(intent); } }; splashThread.start();
▼ 그리고 시간을 기다리지 않고 클릭하게 되면 바로 넘어가게 되는데 notifiyAll() 이용해 바로 종료하는 것입니다.
@Override public boolean onTouchEvent(MotionEvent evt) { if (evt.getAction() == MotionEvent.ACTION_DOWN) { synchronized (splashThread) { splashThread.notifyAll(); } } return true; }
▼ 첫번째 로딩페이지 메인 activity 전체 소스 입니다.
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.MotionEvent; public class SplashScreenActivity extends Activity { private Thread splashThread; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash_screen); // The thread to wait for splash screen events splashThread = new Thread() { @Override public void run() { try { synchronized (this) { // Wait given period of time or exit on touch wait(10000); } } catch (InterruptedException ex) { } finish(); // Run next activity Intent intent = new Intent(); intent.setClass(SplashScreenActivity.this, NextActivity.class); startActivity(intent); } }; splashThread.start(); } /** * * Processes splash screen touch events */ @Override public boolean onTouchEvent(MotionEvent evt) { if (evt.getAction() == MotionEvent.ACTION_DOWN) { synchronized (splashThread) { splashThread.notifyAll(); } } return true; } }
▼ 첫번째 메인 activity 의 레이아웃 xml 입니다.
<?xml version="1.0" encoding="utf-8"?> <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="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="50sp" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="Loading..." /> </LinearLayout>
▼ 두번째 이동페이지의 activity 소스입니다.
import android.app.Activity; import android.os.Bundle; public class NextActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_next); } }
▼ 두번째 페이지의 레이아웃 xml 입니다.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="다음페이지 이동" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout>
반응형
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) EditTextPreference 이용해서 옵션값 셋팅하는 방법 (1) | 2015.04.20 |
---|---|
안드로이드(Android) PreferenceActivity 이용해서 사용자 정보 셋팅과 정보가져오기 (0) | 2015.03.26 |
안드로이드(Android) 스마트폰 맥주소(Mac Address) 확인하는 방법 (1) | 2015.03.09 |
안드로이드(Android) GPS 로 현재 이동 속도 알아오기 (5) | 2015.03.05 |
안드로이드(Android) GPS LocationListener 이용해서 도시이름 가져오기 (0) | 2015.02.12 |
안드로이드(Android) PopupWindow 위젯을 이용해 팝업창 만들기 (5) | 2015.02.08 |
안드로이드(Android) 카메라, 갤러리 호출후 이미지 잘래내서 화면에 표시 (12) | 2015.02.05 |
안드로이드(Android) Google Map 버전2 에서 PolyLine 이용해 라인,마크 그리기 (0) | 2015.02.02 |