วันเสาร์ที่ 5 มีนาคม พ.ศ. 2554

Android: Lock Screen Orientation in Android

Lock Screen Orientation in Android
หากเราไม่อยากให้โปรแกรม android ที่เราเขียนขึ้นมา ไม่พลิกไปพลิกมาหละก็ เราต้องทำอย่างไรบ้างหละ วิธีมันก้อง่ายนิดเดียวเอง แค่ใส่ฟังก์ชั่น setRequestedOrientation เข้าไปในหน้าที่อยากจะล็อกหน้าจอเอาไว้เท่านั้นเอง มาดูฟังก์ชั่นที่ต้องใช้งานและฟังก์ชั่นอื่นๆ ที่เกี่ยวข้องดีกว่า

1) ฟังก์ชั่นแรกใช้เมื่อต้องการล็อกหน้าจอ พารามิเตอร์ที่ใส่เข้าไปได้แก่



  • ล็อกแนวนอน SCREEN_ORIENTATION_LANDSCAPE

  • ล็อกแนนตั้ง SCREEN_ORIENTATION_PORTRAIT


[Code sample – How to lock the orientation]



/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

2) ฟังก์ชั่นสำหรับตรวจสอบว่า ขณะนี้หน้าจออยู่ในแนวตั้งหรือแนวนอน

ใช้ฟังก์ชั่น this.getResources().getConfiguration().orientation


[Code sample – How to detect the current orientation]


switch (this.getResources().getConfiguration().orientation)
{
case Configuration.ORIENTATION_PORTRAIT:
// Do something here
break;
case Configuration.ORIENTATION_LANDSCAPE:
// Do something here
break;
case Configuration.ORIENTATION_SQUARE:
// Do something here
break;
default:
throw new Exception("Unexpected orientation enumeration returned");
break;
}

3) ฟังก์ชั่นที่ใช้เปลี่ยนแนวหน้าจอ เมื่อเกิดอีเวนท์เกิดขึ้น

[Code sample – Locking rotation while performing an action]


// Sets screen rotation as fixed to current rotation setting
private void mLockScreenRotation()
{     // Stop the screen orientation changing during an event
switch (this.getResources().getConfiguration().orientation)
{
case Configuration.ORIENTATION_PORTRAIT:
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
case Configuration.ORIENTATION_LANDSCAPE:
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
}
}

4) ฟังก์ชั่นที่ใช้เพื่อระบุว่า ไม่มีการล็อกหน้าจออีกแล้ว ใช้ฟังก์ชั่น setRequestedOrientation นั้นหละ แต่เซ็ตเป็น ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED แล้วโปรแกรมจะไม่มีการล็อกหน้าจอนะครับ

[Code sample – How to re-enable screen rotation]


// allow screen rotations again

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

Referrence

adaydesign :)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น