1

내 앱에는 3 개의 화면이 있으며, 모두 스마트 폰에서 세로로, 태블릿에서는 모두 방향으로 표시되어야합니다.Android - 스마트 폰에서만 방향 지정하기

Unitl는 지금은 OnCreate에 다음 코드를 사용했다 :

if (!getResources().getBoolean(R.bool.isTablet)) { 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
} 

을 그러나 내가 가로 모드에서 스마트 폰을 보유하고 몇 초 후 세로로 회전을 위해 가로에 표시됩니다 응용 프로그램을 실행합니다.

많은 답변은 매니페스트를 통해 방향을 잠그는 것이 좋지만 태블릿의 방향을 고정시키는 것은 바람직하지 않습니다.

나는 해결책을 제시하는 정보에 대해 매우 감사하게 생각합니다. 감사.

+1

이 코드를 언제 호출합니까? 아직 setContentView()를 호출하기 전에 * 시도해보십시오. – kcoppock

+0

'setContentView()'전에'onCreate' 안의 첫 번째 행에서 이루어집니다. –

답변

2

태블릿 인 경우 매니페스트에 잠근 다음 코드에서 잠금을 해제 할 수 있습니다.

귀하의 사례에는 문제가 없지만 Nexus 7은 사용자가하는 방법을 사용하여 태블릿으로보고하지 않는다는 점을 읽었습니다. 나는 그것이 정확하다고 확신하지 못한다. 결코 그것을 시도하지 않았다.

+0

코드에서 잠금 해제하려면 어떻게해야합니까? 'setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) '? 내가 태블릿에서 역효과를 만들 것이라고 생각하기 때문에 세로로로드 한 다음 가로로 회전합니다. BTW, 장치가 태블릿인지 여부를 감지하기 위해 화면 크기, 대형 장치 이상을 검사하고 부울 리소스 인'isTablet'를 true로 설정하십시오. –

+1

오, 당신이 내가 소문이 들린 내장 된 부울을 사용하고 있다고 생각했습니다. 그것은 정제에서 역효과를 일으키는 원인이 될지도 모른다, 나는 그것을하는 다른 어떤 생각도 생각할 수 없다. 앱이 시작될 때 스플래시 화면을 표시 할 수 있으며 표시되는 동안 방향 요구 사항을 파악한 다음 실제 앱으로 이동하면 알아낼 수 있습니다. – Ralgha

+0

화면 중 하나에 이미 문제가 발생한 스플래시 화면이 있습니다. –