Как установить ориентацию действия в Android на основе устройства? - PullRequest
6 голосов
/ 13 февраля 2012

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

Спасибо, Nithin

Ответы [ 5 ]

1 голос
/ 18 сентября 2013

попробуйте это У меня отлично работает .....

if ( isXLargeScreen() )
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

и эта функция для выбора между планшетом и телефоном, Вызывается в ЕСЛИ выше .....

public static boolean isXLargeScreen(Context context) {
return (context.getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
} 
1 голос
/ 21 марта 2012

У вас есть 2 метода:

a) Создайте разные наборы макетов и чертежей для телефона и планшета отдельно и спроектируйте их в соответствии с нужной вам ориентацией.

b) Проверьтеработающее устройство во время выполнения и установите ориентацию.Чтобы проверить устройство, проверьте следующие параметры и установите программную ориентацию:

  (1) Build.VERSION.SDK_INT
  (2) Configuration.SCREENLAYOUT_SIZE_MASK
0 голосов
/ 13 февраля 2012

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

Если нужны размеры экрана в пикселях активности, вы можете использовать getSize:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

Если не Activity, вы можете получить отображение по умолчанию через WINDOW_SERVICE:

WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

if(width<= (resolution width of tablet) && height<=(resolution height of tablet))
{
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT );
}

Не давать никаких команд в манифесте на основе

android: экранная ориентация

0 голосов
/ 13 февраля 2012

Я сам новичок в этом, но, возможно, было бы возможно сделать это, нацеливаясь на определенный уровень API или dpi?Вы можете предоставить альтернативные ресурсы для различных целевых устройств.

Например:

res/layout/main.xml
res/layout-xhdpi/main.xml
res/layout-v11/main.xml

Хорошую документацию по этому вопросу можно найти здесь .

0 голосов
/ 13 февраля 2012

Вы можете использовать этот класс, чтобы получить информацию об устройстве о текущей сборке, извлеченную из системных свойств.

Чтобы установить свойства ориентации, используйте следующий атрибут ...

android:screenOrientation=["unspecified" | "user" | "behind" |
                                     "landscape" | "portrait" |
                                     "reverseLandscape" | "reversePortrait" |
                                     "sensorLandscape" | "sensorPortrait" |
                                     "sensor" | "fullSensor" | "nosensor"]
...