Как заблокировать ориентацию экрана для телефона, но не для планшета? (Android)

Я работаю над проектом Android, который предназначен для совместимости с телефонами и планшетами Android. На планшете приложение отлично работает и хорошо выглядит. Тем не менее, по телефону мы сталкиваемся с проблемами как программно, так и макета (работа с 10,1-дюймовым экраном намного проще, чем 4-дюймовый экран). Чтобы решить некоторые из этих проблем, мы решили отключить ориентацию экрана, но только для версии телефона, по крайней мере временно.

Вопрос прост: как отключить ориентацию экрана для телефона Android, сохраняя его активным для планшетов Android? Я знаю, что могу сделать это в файле манифеста, однако это также заблокирует ориентацию планшета, на который я верю.

Solutions Collecting From Web of "Как заблокировать ориентацию экрана для телефона, но не для планшета? (Android)"

Вы можете сделать это и из приложения.

Блокировка ориентации экрана (Android)
http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation(int)

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

И атрибуты можно найти здесь:

http://developer.android.com/reference/android/R.attr.html#screenOrientation


Чтобы обнаружить, если Android-устройство является планшетным или телефонным, вы должны использовать это решение (разные вопросы Q & A), https://stackoverflow.com/a/9308284/492624

Прежде всего, постарайтесь не делать этого. Я выбрал это, потому что это было простое решение сложной проблемы. Но на самом деле постарайтесь не допустить этого.

Если вы действительно хотите это сделать, используйте следующий код.

В вашей деятельности создайте метод:

  private boolean isTablet() { return (this.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE; } 

И затем в вашем onCreate выполните следующее:

  if (!isTablet()) { // stop screen rotation on phones because <explain> setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } 

Казалось бы, это не невозможно, если вы справляетесь с этим во время выполнения, получая размер экрана, а затем RunTimeConfigurationChanges , тогда он может вам помочь.

Попытайтесь применить изменения времени выполнения .

И дайте мне знать, если вы получите успех на этом.

Благодарю.

Один из способов – создать отдельные действия для версии телефона и версии планшета. А затем зафиксируйте их ориентации в файле манифеста Android. Другой метод – проверить устройство, которое в настоящее время используется, и зафиксировать ориентацию в самой активности с помощью кода,

  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

Создание отдельных видов деятельности – это лучший способ, с помощью которого можно легко сохранить версии вкладок и телефонов.