2014-01-23 3 views
4

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

+0

брат дает ширину экрана, тогда я дам вам решение –

ответ

8

Самым простым способом поместить это в 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; 
     } 
    } 
0

Вы можете программно handle runtime configuration changes как то

в манифесте:

<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 
    } 
} 

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

-1

, например, 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); 


} 
Смежные вопросы