มีหลายวิธีในการทำสิ่งนี้:
บันทึกสถานะกิจกรรม
onSaveInstanceState
คุณสามารถบันทึกสถานะกิจกรรมใน
@Override
public void onSaveInstanceState(Bundle outState) {
/*Save your data to be restored here
Example : outState.putLong("time_state", time); , time is a long variable*/
super.onSaveInstanceState(outState);
}
จากนั้นใช้การbundle
เพื่อคืนค่าสถานะ
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState!= null){
/*When rotation occurs
Example : time = savedInstanceState.getLong("time_state", 0); */
} else {
//When onCreate is called for the first time
}
}
จัดการการเปลี่ยนแปลงปฐมนิเทศด้วยตัวเอง
อีกทางเลือกหนึ่งคือการจัดการการเปลี่ยนแปลงการวางแนวด้วยตัวเอง แต่นี่ไม่ถือว่าเป็นการปฏิบัติที่ดี
เพิ่มลงในไฟล์ Manifest ของคุณ
android:configChanges="keyboardHidden|orientation"
สำหรับ Android 3.2 และใหม่กว่า:
android:configChanges="keyboardHidden|orientation|screenSize"
@Override
public void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
//Handle rotation from landscape to portarit mode here
} else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
//Handle rotation from portrait to landscape mode here
}
}
จำกัด การหมุน
คุณสามารถ จำกัด กิจกรรมของคุณเป็นโหมดแนวตั้งหรือแนวนอนเพื่อหลีกเลี่ยงการหมุน
เพิ่มสิ่งนี้ไปยังแท็กกิจกรรมในไฟล์รายการของคุณ:
android:screenOrientation="portrait"
หรือใช้โปรแกรมนี้ในกิจกรรมของคุณ:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}