Câu trả lời:
Có, nó có thể thực hiện được!
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ActivityInfo
http://developer.android.com/reference/android/content/pm/ActivityInfo.html
Tham khảo liên kết:
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
Có, bạn có thể đặt hướng màn hình theo chương trình bất cứ lúc nào bạn muốn bằng cách sử dụng:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
cho chế độ ngang và dọc tương ứng. Phương thức setRequestedOrientation () có sẵn cho lớp Activity , vì vậy nó có thể được sử dụng bên trong Activity của bạn.
Và đây là cách bạn có thể lấy hướng màn hình hiện tại và đặt nó phù hợp tùy thuộc vào trạng thái hiện tại của nó:
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;
}
}
});
Lấy từ đây: http://techblogon.com/android-screen-orientation-change-rotation-example/
BIÊN TẬP
Ngoài ra, bạn có thể lấy hướng màn hình bằng cách sử dụng Configuration
:
Activity.getResources().getConfiguration().orientation
getRequestedOrientation()
để lấy hướng màn hình hiện tại: stackoverflow.com/a/21909327/1037294
getRequestedOrientation()
cung cấp cho bạn UNSPECIFIED
khi bạn khởi động ứng dụng. Vì vậy, với trình nghe ở trên, nó sẽ không thay đổi màn hình và nếu bạn thêm UNSPECIFIED
vào, switch
nó sẽ đặt màn hình ở một trong các vị trí Chân dung / Ngang trước.
Bất cứ khi nào có thể, vui lòng không sử dụng SCREEN_ORIENTATION_LANDSCAPE hoặc SCREEN_ORIENTATION_PORTRAIT. Thay vào đó hãy sử dụng:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
Những điều này cho phép người dùng định hướng thiết bị theo hướng ngang hoặc hướng dọc tương ứng. Nếu bạn đã từng phải chơi một trò chơi với một dây cáp sạc cắm vào bụng, thì bạn biết chính xác lý do tại sao việc có cả hai hướng có sẵn lại quan trọng đối với người dùng.
Lưu ý: Đối với điện thoại, ít nhất một số điện thoại mà tôi đã kiểm tra, nó chỉ cho phép chế độ dọc "bên phải", tuy nhiên, SENSOR_PORTRAIT hoạt động bình thường trên máy tính bảng.
Lưu ý: tính năng này đã được giới thiệu trong API Cấp 9, vì vậy nếu bạn phải hỗ trợ 8 hoặc thấp hơn (không có khả năng xảy ra tại thời điểm này), thay vào đó hãy sử dụng:
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);
Sử dụng tùy chọn này để đặt hướng của màn hình:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
hoặc là
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
và đừng quên thêm cái này vào tệp kê khai của bạn:
android:configChanges = "orientation"
"orientation|screenSize"
, Hãy xem tại đây: developer.android.com/guide/topics/resources/…
Mã làm việc:
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);
}
}
gọi phương thức này trong lần nhấp vào nút của bạn