Как отключить альбомную ориентацию на маленьких экранах

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

Все, что я нашел, это изменения в файле манифеста, но я считаю, что, перенастроив манифест, я применю изменения ко всем макетам.


person Bith    schedule 23.01.2014    source источник
comment
брат дай ширину экрана тогда я дам тебе решение   -  person Ravind Maurya    schedule 23.01.2014


Ответы (4)


Самый простой способ - поместить это в метод onCreate() всех ваших действий (а еще лучше поместить его в класс BaseActivity и расширить от него все свои действия)

@Override
protected void onCreate(Bundle bundle) {
   super.onCreate(bundle);

   if (isLargeDevice(getBaseContext())) {
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
   } else {
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
   }
}

Вы можете использовать этот метод, чтобы определить, является ли устройство телефоном или планшетом:

private boolean isLargeDevice(Context context) {
        int screenLayout = context.getResources().getConfiguration().screenLayout;
        screenLayout &= Configuration.SCREENLAYOUT_SIZE_MASK;

        switch (screenLayout) {
        case Configuration.SCREENLAYOUT_SIZE_SMALL:
        case Configuration.SCREENLAYOUT_SIZE_NORMAL:
            return false;
        case Configuration.SCREENLAYOUT_SIZE_LARGE:
        case Configuration.SCREENLAYOUT_SIZE_XLARGE:
            return true;
        default:
            return false;
        }
    }
person Nachi    schedule 23.01.2014

Проверьте эту ссылку, вы можете проверить тип устройства и установить ориентацию по мере необходимости.

Android: разрешить портретную и альбомную ориентацию для планшетов , но заставить портрет на телефоне?

person deniz    schedule 23.01.2014

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

в вашем манифесте:

    <activity android:name=".MyActivity"
      android:configChanges="orientation|keyboardHidden"
      android:label="@string/app_name">

в вашей деятельности

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {

     ///check the screen size and change it to potrait
    }
}

или проверьте этот ответ, чтобы узнать, как проверить размер экрана и изменить его

person Carlos Robles    schedule 23.01.2014

например, устройства с размером экрана 480: Применить в методе oncreate:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
if(width==480){

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


}
person Ravind Maurya    schedule 23.01.2014