Android: как разрешить ориентацию на основе устройства - PullRequest
2 голосов
/ 03 апреля 2011

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

Примером может быть: смартфон, на котором запущено приложение,разрешено использовать ресурсы макета в layout-small и layout-normal, и вообще не разрешается использовать ландшафт.Более крупное планшетное устройство может использовать пользовательские интерфейсы, которые более удобны для большого экрана и могут использоваться как в книжной, так и в альбомной ориентации, с уникальными пользовательскими интерфейсами для каждой ориентации.1005 *

Ответы [ 2 ]

1 голос
/ 03 апреля 2011

Чтобы заставить Activity перейти в портретный режим, вы можете установить его в манифесте Android, но таким образом вы не сможете указать его для небольших экранов, я думаю, что это невозможно.Также вы должны быть осторожны, потому что некоторые телефоны предназначены для ландшафтного режима.http://developer.android.com/guide/topics/manifest/activity-element.html#screen

Чтобы предоставить альтернативные макеты для экрана определенного размера, вы можете сделать это, добавив параметры в имя папки

/res/layout-small/main.xml
/res/layout-normal/main.xml
/res/layout-large/main.xml
/res/layout-xlarge/main.xml

http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

0 голосов
/ 04 апреля 2011

Вы можете попытаться получить размер экрана программно, используя что-то вроде:

int width = display.getWidth();
int height = display.getHeight();

Затем разрешить / запретить в зависимости от того, находится ли размер экрана между конкретными границами?

...