Изменение ориентации экрана программно с помощью кнопки

Я думаю, что это реализуемо, так как поведение поворота экрана может доходить до уровня приложения.

Solutions Collecting From Web of "Изменение ориентации экрана программно с помощью кнопки"

Да, это возможно!

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

Да, вы можете настроить ориентацию экрана в любое время, когда хотите:

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

Для пейзажного и портретного режима соответственно. Метод setRequestedOrientation () доступен для класса Activity , поэтому его можно использовать внутри вашей 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 

Используйте это, чтобы задать ориентацию экрана:

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

или

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

И не забудьте добавить это в свой манифест:

 android:configChanges = "orientation" 

По возможности не используйте 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);