Как заблокировать ориентацию экрана для телефона, но не для планшета? (Android)
Я работаю над проектом Android, который предназначен для совместимости с телефонами и планшетами Android. На планшете приложение отлично работает и хорошо выглядит. Тем не менее, по телефону мы сталкиваемся с проблемами как программно, так и макетными (работа с 10,1-дюймовым экраном намного проще, чем 4-дюймовый экран). Чтобы решить некоторые из этих проблем, мы решили отключить ориентацию экрана, но только для версии телефона, по крайней мере временно.
Вопрос прост: как отключить ориентацию экрана для телефона Android, сохраняя его активным для планшетов Android? Я знаю, что могу сделать это в файле манифеста, однако это также заблокирует ориентацию планшета, который я считаю.
Ответы
Ответ 1
Вы можете сделать это и из приложения.
Блокировка ориентации экрана (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-устройство - Tablet или Phone, вы должны использовать это решение (разные SO Q & A), fooobar.com/questions/33132/...
Ответ 2
Прежде всего, постарайтесь не делать этого. Я выбрал это, потому что это было простое решение сложной проблемы. Но на самом деле постарайтесь не допустить этого.
Если вы действительно хотите это сделать, используйте следующий код.
В вашей деятельности создайте метод:
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);
}
Ответ 3
Кажется, что это не невозможно, если вы обрабатываете это во время выполнения, получая размер экрана, а затем делаете RunTimeConfigurationChanges
. Тогда может это вам помочь.
Попробуйте Обработка изменений времени выполнения.
И дайте мне знать, если вы получите успех на этом.
Спасибо.
Ответ 4
Один из способов - создать отдельные действия для версии телефона и версии планшета. И затем зафиксируйте их ориентации в файле манифеста android. Другой метод - проверить устройство, которое в настоящее время используется, и зафиксировать ориентацию в самой активности с помощью кода,
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Создание отдельных действий - лучший способ, поскольку его легко поддерживать вкладку и версии телефона.