ฉันคิดว่าสิ่งนี้สามารถใช้ได้เนื่องจากพฤติกรรมการหมุนหน้าจอสามารถไปถึงระดับแอปพลิเคชันได้
ฉันคิดว่าสิ่งนี้สามารถใช้ได้เนื่องจากพฤติกรรมการหมุนหน้าจอสามารถไปถึงระดับแอปพลิเคชันได้
คำตอบ:
ใช่มันสามารถใช้ได้!
ข้อมูลกิจกรรม SCREEN_ORIENTATION_LANDSCAPE
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
ข้อมูลกิจกรรม SCREEN_ORIENTATION_PORTRAIT
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ActivityInfo
http://developer.android.com/reference/android/content/pm/ActivityInfo.html
อ้างอิงลิงค์:
Button buttonSetPortrait = (Button)findViewById(R.id.setPortrait);
Button buttonSetLandscape = (Button)findViewById(R.id.setLandscape);
buttonSetPortrait.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
});
buttonSetLandscape.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
});
http://android-er.blogspot.in/2011/08/set-screen-orientation-programmatically.html
ได้คุณสามารถตั้งค่าการวางแนวหน้าจอตามโปรแกรมได้ตลอดเวลาที่คุณต้องการโดยใช้:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
สำหรับโหมดแนวนอนและแนวตั้งตามลำดับ เมธอด setRequestedOrientation () มีให้สำหรับคลาสกิจกรรมดังนั้นจึงสามารถใช้ภายในกิจกรรมของคุณได้
และนี่คือวิธีที่คุณจะได้รับการวางแนวหน้าจอปัจจุบันและตั้งค่าอย่างเพียงพอโดยขึ้นอยู่กับสถานะปัจจุบัน:
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
final int orientation = display.getOrientation();
// OR: orientation = getRequestedOrientation(); // inside an Activity
// set the screen orientation on button click
Button btn = (Button) findViewById(R.id.yourbutton);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
switch(orientation) {
case Configuration.ORIENTATION_PORTRAIT:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
case Configuration.ORIENTATION_LANDSCAPE:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
}
}
});
นำมาจากที่นี่: http://techblogon.com/android-screen-orientation-change-rotation-example/
แก้ไข
นอกจากนี้คุณสามารถรับการวางแนวหน้าจอโดยใช้Configuration
:
Activity.getResources().getConfiguration().orientation
getRequestedOrientation()
เพื่อรับการวางแนวหน้าจอปัจจุบัน: stackoverflow.com/a/21909327/1037294
getRequestedOrientation()
ให้คุณUNSPECIFIED
เมื่อคุณเริ่มแอป ดังนั้นด้วยฟังก์ชั่นด้านบนจะไม่เปลี่ยนหน้าจอและหากคุณเพิ่มลงUNSPECIFIED
ในswitch
นั้นควรวางหน้าจอไว้ในตำแหน่งแนวตั้ง / แนวนอนก่อน
หากเป็นไปได้โปรดอย่าใช้ SCREEN_ORIENTATION_LANDSCAPE หรือ SCREEN_ORIENTATION_PORTRAIT ใช้แทน:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
สิ่งเหล่านี้ช่วยให้ผู้ใช้ปรับทิศทางอุปกรณ์ให้เป็นแนวนอนหรือแนวตั้งตามลำดับ หากคุณเคยเล่นเกมที่มีสายชาร์จเสียบเข้าไปในท้องคุณจะรู้ดีว่าทำไมการมีทั้งสองทิศทางจึงมีความสำคัญต่อผู้ใช้
หมายเหตุ: สำหรับโทรศัพท์อย่างน้อยหลายเครื่องที่ฉันได้ตรวจสอบแล้วจะอนุญาตให้ใช้โหมดแนวตั้ง "ด้านขวาขึ้น" เท่านั้นอย่างไรก็ตาม SENSOR_PORTRAIT ทำงานได้อย่างถูกต้องบนแท็บเล็ต
หมายเหตุ: ฟีเจอร์นี้เปิดตัวใน API ระดับ 9 ดังนั้นหากคุณต้องรองรับ 8 หรือต่ำกว่า (ไม่น่าจะเป็นในตอนนี้) ให้ใช้:
setRequestedOrientation(Build.VERSION.SDK_INT < 9 ?
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE :
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(Build.VERSION.SDK_INT < 9 ?
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT :
ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
ใช้สิ่งนี้เพื่อกำหนดแนวของหน้าจอ:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
หรือ
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
และอย่าลืมเพิ่มสิ่งนี้ในรายการของคุณ:
android:configChanges = "orientation"
"orientation|screenSize"
อย่างดูที่นี่: developer.android.com/guide/topics/resources/…
รหัสการทำงาน:
private void changeScreenOrientation() {
int orientation = yourActivityName.this.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
showMediaDescription();
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
hideMediaDescription();
}
if (Settings.System.getInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION, 0) == 1) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
}, 4000);
}
}
เรียกวิธีนี้ในการคลิกปุ่มของคุณ