Как да деактивирате пейзажното оформление на малки екрани

Разрешавам цялата възможна ориентация за моето приложение както за портрет, така и за пейзаж (малък-нормален-голям-xголям), но след като го тествах на малък екран, просто не ми хареса как изглежда, така че , това, което се опитвам да направя, е да деактивирам пейзаж за малки оформления. Има ли начин това да стане?

Всичко, което открих, бяха промени, които трябва да направя във файла на манифеста, но вярвам, че чрез преконфигуриране на манифеста ще приложа промените към всички оформления.


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