Я думаю, что это реализуемо, так как поведение поворота экрана может перейти на уровень приложения.
Изменение ориентации экрана программно с помощью кнопки
Ответ 1
Да, это возможно!
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
Обратитесь к ссылка:
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
Ответ 2
Да, вы можете настроить ориентацию экрана программно в любое время, когда хотите:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
для пейзажного и портретного режима соответственно. Метод setRequestedOrientation() доступен для класса Activity, поэтому его можно использовать внутри вашей деятельности.
И вот как вы можете получить текущую ориентацию экрана и соответствующим образом настроить его в зависимости от текущего состояния:
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
Ответ 3
Используйте это, чтобы установить ориентацию экрана:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
или
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
и не забудьте добавить это в свой манифест:
android:configChanges = "orientation"
Ответ 4
По возможности, не используйте 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);
Ответ 5
Рабочий код:
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);
}
}
вызовите этот метод в вашем нажатии кнопки