2012-05-08 8 views
2

크기가 크거나 화면 크기가 큰 화면에서 모양이 좋아 보이지만 휴대 전화에서는 세로 방향으로 제한해야하는 앱이 있습니다. 매니페스트에서 Activity의 방향을 제한 할 수 있다는 것을 알고 있지만 조건 적으로 그렇게 할 수있는 방법이 있습니까? 또는 어떤 오리엔테이션이 지원되는지 선택하기 위해 액티비티 자체에서 설정할 수있는 속성이 있습니까?Android : 화면 크기에 따라 활동 방향 제한

public void onCreate(Bundle savedState) { 
    //... 

    if(isScreenLarge()) { 
     // width > height, better to use Landscape 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } else { 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    } 
} 

public boolean isScreenLarge() { 
    final int screenSize = getResources().getConfiguration().screenLayout 
      & Configuration.SCREENLAYOUT_SIZE_MASK; 
    return screenSize == Configuration.SCREENLAYOUT_SIZE_LARGE 
      || screenSize == Configuration.SCREENLAYOUT_SIZE_XLARGE; 
} 

답변

9

내가 내 응용 프로그램에서 사용하는 솔루션입니다. 내가 만든 유일한 변화는 'SCREEN_ORIENTATION_PORTRAIT` 대신`SCREEN_ORIENTATION_UNSPECIFIED`를 사용하는 것입니다. 왜냐하면 태블릿이 가로와 세로를 모두 지원하기를 원했기 때문입니다.
+0

큰 감사 : – mtmurdock

+1

레이아웃 또는 매니페스트에서이 작업을 수행 할 수있는 방법이 있습니까? – mtmurdock

+0

'setRequestedOrientation()'이후의 액티비티 로테이션의 경우'onCreate()'가 두 번 호출된다는 점에주의하십시오. –

관련 문제