Как заблокировать ориентацию экрана для телефона, а не для планшета? (Android)
Я работал над проектом Android, который должен быть совместим с телефонами и планшетами на Android. На планшете приложение работает отлично и тоже хорошо выглядит. Однако на телефоне мы сталкивались с проблемами как программно, так и в плане компоновки (работа с 10,1-дюймовым экраном намного проще, чем с 4-дюймовым экраном). Чтобы решить некоторые из этих проблем, мы решили отключить ориентацию экрана, но только для версии телефона, по крайней мере, временно.
Вопрос прост: как отключить ориентацию экрана для телефона Android, оставив его активным для планшетов Android? Я знаю, что могу сделать это в файле манифеста, однако это также заблокирует ориентацию планшета, которому я верю.
4 ответа
Вы также можете сделать это из приложения.
Ориентация экрана блокировки (Android)
http://developer.android.com/reference/android/app/Activity.html
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
А атрибуты можно найти здесь:
http://developer.android.com/reference/android/R.attr.html
Чтобы определить, является ли устройство Android планшетом или телефоном, вам следует использовать это решение (другие вопросы и ответы по SO), /questions/15605755/opredelit-yavlyaetsya-li-ustrojstvo-smartfonom-ili-planshetom/15605787#15605787
Прежде всего, постарайтесь не делать этого. Я решил сделать это, потому что это было легко решить сложную проблему. Но на самом деле, постарайтесь не делать этого.
Если вы действительно хотите сделать это, используйте следующий код.
В своей деятельности создайте метод:
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);
Создание отдельных действий - лучший способ, так как легко поддерживать версии вкладки и телефона.