Android: ทำ SplashScreen ง่ายนิดเดียว

บทความนี้เป็นตัวอย่างของการทำ Splash Screen หรือหน้า Intro ก่อนเข้า Application ใน Android นะ

ตัวอย่าง Source Code สามารถ Download ได้ที่นี้ SplashScreenDemo

1. สร้าง Android Project ใหม่

Create Project Part1

Create Project Part2

2. สร้าง Layout ของหน้า SplashScreen ใน Folder layout

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:background=”#FFF”>
<ImageView android:layout_gravity=”center”
android:src=”@drawable/android”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content” />
</LinearLayout>

3. สร้าง Activity Class สำหรับหน้า SplashScreen ใน Folder src

public class SplashScreenActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splashscreen);
}

}

การทำ SplashScreen โดยใช้ Handler

3.1 การใช้ Handler สำหรับทำ Splash Screen นั้นสามารถทำได้โดยใช้ Method ของ Handler ที่ชื่อว่า postDelayed(Runnable, DelayedTime)

Runnable: คือ Process ที่จะกำหนดให้กับตัว Handler
ในตัวอย่างคือเรียกคำสั่ง finsish() เพื่อปิด Activity ปัจจุบัน
จากนั้นจึงเรียกคำสั่ง startActivty เพื่อเปิดหน้า Activity หลักของ Application ขึ้นมา

DelayedTime: คือเวลาที่เมื่อผ่านไปตามที่กำหนดแล้วจะเรียก Runnable ขึ้นมาทำงาน มีหน่วยของเวลาเป็น Millisecond (1000 Millisecond = 1 Second)
ในตัวอย่างกำหนดไว้ 2000 Millisecond หรือ 2 Second

private Handler mHandler;
mHandler = new Handler();// Call postDelayed Method for running process after delay time
mHandler.postDelayed(new Runnable() {@Override
public void run() {
finish();
startActivity(new Intent(SplashScreenActivity.this,
MainActivity.class));
}}, 2000);

การทำ SplashScreen โดยใช้ Thread

3.2 การใช้ Thread สำหรับทำ Splash Screen ทำได้โดยสร้าง Thread ขึ้นมาใหม่และใช้คำสั่ง start เพื่อสั่งให้ Thread ทำงาน และใน Thread ให้ทำการ Override Method run() จากนั้นจึงใช้คำสั่ง sleep(time) เข้ามาช่วยทำ SplashScreen

sleep เป็นคำสั่งให้หยุดทำงาน โดยเราสามารถกำหนดเวลาที่ต้องการสั่งให้ Thread หยุดทำงานได้ ซึ่งหน่วยของเวลาคือ Millisecond หลังจากสั่งให้หยุดทำงานเสร็จจึงเรียกใช้ Method finish() เพื่อสั่งปิด Activity ปัจจุบัน และตามด้วย Method startActivity เพื่อเปิดหน้า Activity หลักของ Application

new Thread() {

@Override
public void run() {
try {
sleep(2000);
finish();
startActivity(new Intent(SplashScreenActivity.this,
MainActivity.class));
} catch (Exception e) {
e.printStackTrace();
}
}

}.start();

4. แทรก Activty Tag ในไฟล์ AndroidManifest.xml

ทำการเปลี่ยน Activity แรกสุดที่จะถูกเรียกเป็น SplashScreenActivty และทำการแทรก Activity Tag ของ Class Activity หลักของ Application

<activity android:name=”.SplashScreenActivity”  android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
<activity android:name=”.MainActivity”>
</activity>

Output:

1. แสดงหน้า Activity ของ SplashScreen ที่สร้างขึ้น

Output 01

2. หลังจากผ่านไป 2 วินาที ก็จะปิดหน้า SplashScreen ปัจจุบันและเรียกหน้า Activity หลักของ Application ขึ้นมา

Output 02

credit : http://puyblog.piscessera.com/android-ทำ-splashscreen-ง่ายนิดเดียว

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s