2009-09-11 2 views
65

응용 프로그램이 화면 방향 변경을 완전히 무시하도록 만드는 방법이 있습니까?응용 프로그램에서 화면 방향 변경을 무시하도록 만드는 방법은 무엇입니까?

+0

Android 1.5에는 분명히 버그가 하나 있습니다. 맞춤 화면 크기 (예 : Apad와 같은 800x480)를 사용하여 XML 또는 코드를 통해 가로로 표시하면 사실 인물 사진이됩니다. – Dornbi

+0

https://github.com/delight-im/Android-BaseLib/blob/master/Source/src/im/delight/android/baselib/Screen.java에서'Screen.lockOrientation (this)'을 호출 할 수 있습니다 if 코드에서 오리엔테이션을 잠금 및 잠금 해제하려고합니다. (더 유연합니다) – caw

답변

58

키보드가 열리거나 닫힐 때 기본 동작을 무시하고 화면 방향 변경을 금지 할 수 있습니다. 매니페스트 매니페스트

열기를 수정

, 응용 프로그램 탭으로 전환하고 방향 변경 동작에 대한 오버라이드 (override) 할 원하는 활동을 선택합니다. 화면 방향 : - 원하는 중 세로 또는 가로를 선택

  1. 은 내 두 개의 필드를 변경해야하는 속성. 이것이 기본 레이아웃이 될 것입니다.

  2. 우선 적용하려는 구성 변경에 대한 이벤트를 선택하십시오. 이 경우 keyboardHidden 및 orientation입니다. 활동 구현

    수정

지금 당신이 원하는 활동 내에서 단일 함수를 재정의해야합니다.

아래 기능을 활동 클래스에 추가하기 만하면됩니다.

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

Source->Override/Implement Methods 메뉴 옵션을 사용하는 경우 기본 구현입니다.

그게 전부 야! 이제 당신의 오리엔테이션은 항상 지켜 질 것입니다.

이 설정은 활동 단위이므로, 방향 변경을 금지하려는 각 활동에 대해이 단계를 반복해야합니다.

(SDK 1.1 기준)

+16

단순히 수퍼 클래스를 호출하여 아무것도 변경하지 않습니까? – Matthias

+0

음 .. 나는 방금 나를 위해 일하는 조리법을 주었다. –

+10

나는 아주 비슷한 것을 가지고 놀고 있었을뿐입니다. Manifest 파일의 변경은 충분하다고 생각합니다. 적어도 그들은 나를위한 것이 었습니다. (이것은 논리적으로 보입니다. Matthias가 지적했듯이). –

26

당신은 (활동에서 호출) 다음 줄에 코드에서 동일한 변경을 할 수 있습니다 : 당신이 전화를하면

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

, 응용 프로그램이있을 것입니다 가로 (또는 세로) 모드에서. 다른 ActivityInfo 열거 형과 함께 동일한 호출을 사용하여 다시 방향 이동에 민감하게 만들 수 있습니다.

주제에 대한 전체 DevX 기사가 Developing Orientation-Aware Android Applications입니다.

(경고 :. 나는 DevX가 등록 벽을 걸었다이 링크를 게시 한 이후)

+0

이것은 Android 2.2에서 저에게 도움이 된 유일한 대답입니다. 감사! –

14

는이 같은 AndroidManifest.xml 파일에 활동을 정의 할 수 있습니다

<activity 
    android:name=".MyActivity" 
    android:screenOrientation="portrait" 
    android:configChanges="orientation|keyboardHidden|keyboard"/>` 

이 경우 각 활동에 대한 속성을 설정해야합니다. 모든 응용 프로그램에 대한 인라인 솔루션을 찾지 못했습니다.

19

AndroidManifest.xml 또는 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);으로 설정하는 경우 태블릿과 관련된 문제가 발생합니다. 자연/기본 방향은 가로입니다. 당신이 진정으로 완전하게 화면 방향을 무시 하려면

내가이 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); 값을 사용으로 변경합니다. 스택에 대해 자세히 이야기합니다.   오버플로 질문 Android natural sensor orientation help.

<activity 
    android:name=".MyActivity" 
    android:screenOrientation="nosensor" 
    android:configChanges="orientation|keyboardHidden|keyboard"/> 
+0

이렇게하면 화면이 회전하지 않습니다. –

+1

나는 내가 따라야할지 모르겠다 ... 그게 화면을 돌리는 것을 피하기위한 요점이다. – bytebender

+0

"화면 방향 변경을 완전히 무시합니다."는 경우 회전해도 데이터는 그대로 유지됩니다. –

2
<activity android:screenOrientation="portrait"></activity> 
1

당신은 현재의 방향을 읽고 모든 활동의 평생 동안 이런 식으로 유지하려면, 그래서 내가 한 것은 다음이에서 onCreate의 끝에서입니다 : 여기

은 XML이다 :

// choose an orientation and stay in it 
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
else if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
2

은 활동이 추가 :

android:configChanges="orientation|screenSize"

관련 문제