0

У меня есть небольшое требование в моем проекте Android.Android Orientation Lock

  1. Мое приложение должно работать Пейзаж в таблетки и Портрет в Телефон
  2. Есть ли способ, чтобы зафиксировать ориентацию в Заявке, вместо того, чтобы в деятельности.
+0

андроид: экранОриентация = "портрет" –

+0

@RohitGoswami Какова будет ориентация в планшете, если мы заблокируем ориентационный портрет – Suresh

+2

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

ответ

1

Вы можете проверить размер экрана следующий тис кусок кода:

public static boolean isTablet(Context context) { 
    return (context.getResources().getConfiguration().screenLayout 
      & Configuration.SCREENLAYOUT_SIZE_MASK) 
      >= Configuration.SCREENLAYOUT_SIZE_LARGE; 
} 

, чем установленная ориентация:

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
+0

Нужно ли устанавливать запрошенную ориентацию в каждом действии ??? – Suresh

+0

да) это точка разного вида деятельности - разная конфигурация. –

+0

Спасибо. Нужно ли вообще обращаться в глобальном масштабе (т. Е. Вместо того, чтобы устанавливать ориентацию в каждом действии, любой другой вок, чтобы установить для приложения?) – Suresh

1

Чтобы избежать вычисления для размера экрана вы можете использовать вместо этого Boolean в РАЗМЕРЫ как

в values-sw600dp/bools.xml -> <bool name="isTablet">true</bool>

values-sw720dp/bools.xml -> <bool name="isTablet">true</bool> 

и простой values/bools -> <bool name="isTablet">false</bool>

Затем в деятельности вы можете просто набор

boolean isTablet = getResources().getBoolean(R.bool.isTablet); 
     if (isTablet) { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     } else { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     } 
     super.onCreate(savedInstanceState); 

Примечание это будет работать только для API level 3.2 и выше.

0
if (getResources().getDisplayMetrics().widthPixels > getResources().getDisplayMetrics().heightPixels) 
    { 
     bLandscape = true; 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     //initViews_Land(); 
    } 
    else 
    { 
     bLandscape = false; 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     //initViews_Port(); 
    } 

Один из способов использования этого кода - это ваше действие.

Другой способ - создать два разных проекта для телефона и планшета. Загрузите два APK (планшет APK должен иметь более высокий номер версии) и активируйте оба из них в расширенном режиме. Play Маркета будет управлять автоматически в зависимости от устройства, оно устанавливается

Телефон манифеста: Все мероприятия должны иметь андроида: screenOrientation = "sensorPortrait"

... 
<compatible-screens> 
    <screen 
     android:screenDensity="ldpi" 
     android:screenSize="small" /> 
    <screen 
     android:screenDensity="mdpi" 
     android:screenSize="small" /> 
    <screen 
     android:screenDensity="mdpi" 
     android:screenSize="normal" /> 
    <screen 
     android:screenDensity="hdpi" 
     android:screenSize="normal" /> 
    <screen 
     android:screenDensity="mdpi" 
     android:screenSize="large" /> 
    <screen 
     android:screenDensity="hdpi" 
     android:screenSize="large" /> 
</compatible-screens> 

<supports-screens 
    android:anyDensity="true" 
    android:largeScreens="true" 
    android:normalScreens="true" 
    android:resizeable="true" 
    android:smallScreens="true" 
    android:xlargeScreens="false" /> 
... 

Tablet манифеста: Все мероприятия должны имеют андроид: screenOrientation = "sensorLandscape"

... 
<compatible-screens> 
    <screen 
     android:screenDensity="xhdpi" 
     android:screenSize="large" /> 
    <screen 
     android:screenDensity="xhdpi" 
     android:screenSize="xlarge" /> 
    <screen 
     android:screenDensity="hdpi" 
     android:screenSize="xlarge" /> 
    <screen 
     android:screenDensity="mdpi" 
     android:screenSize="xlarge" /> 
</compatible-screens> 

<supports-screens 
    android:anyDensity="true" 
    android:largeScreens="false" 
    android:normalScreens="false" 
    android:resizeable="false" 
    android:smallScreens="false" 
    android:xlargeScreens="true" /> 
... 

надеюсь, что это может быть hel p