program tip

응용 프로그램이 화면 방향 변경을 무시하도록하는 방법은 무엇입니까?

radiobox 2020. 11. 11. 19:41
반응형

응용 프로그램이 화면 방향 변경을 무시하도록하는 방법은 무엇입니까?


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


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

매니페스트 수정

매니페스트를 열고 애플리케이션 탭으로 전환 한 다음 방향 변경 동작에 대해 재정의하려는 원하는 활동을 선택합니다.

  1. 속성 내에서 두 필드를 변경해야합니다. 화면 방향 : 세로 또는 가로 중 원하는 것을 선택합니다. 이것이 기본 레이아웃입니다.

  2. 재정의하려는 구성 변경에 대한 이벤트 선택 :이 경우에는 keyboardHidden 및 orientation이 있습니다.

활동 구현 수정

이제 원하는 활동 내에서 단일 기능을 재정의해야합니다.

활동 클래스에 아래 함수를 추가하기 만하면됩니다.

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

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

그게 다야! 이제 오리엔테이션은 항상 유지됩니다.

이 설정은 활동별로 적용되므로 방향 변경을 금지하려는 각 활동에 대해이 단계를 반복해야합니다!

(SDK 1.1 기준)


다음 줄 (활동에서 호출 됨)을 사용하여 코드에서 동일한 변경을 수행 할 수 있습니다.

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

이 호출을하면 애플리케이션이 가로 (또는 세로) 모드로 유지됩니다. 동일한 호출 (다른 ActivityInfo 열거 형 사용)을 사용하여 방향 전환에 다시 민감하게 만들 수 있습니다.

Developing Orientation-Aware Android Applications 항목에 대한 전체 DevX 기사가 있습니다.

(경고 :이 링크를 게시 한 이후 DevX는 등록 벽을 세웠습니다.)


에 의해 AndroidManifest.xml또는 함께 설정하는 경우 태블릿setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 에 문제가 발생할 것입니다 . 자연 / 기본 방향은 가로입니다.

화면 방향 변경완전히 무시 하려면이 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);값을 사용 합니다. Stack Overflow 질문 Android natural sensor orientation help 에서 자세히 설명합니다 .

다음은 xml입니다.

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

다음 AndroidManifest.xml과 같이 파일 에서 활동을 정의 할 수 있습니다 .

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

이 경우 각 활동에 대한 속성을 설정해야합니다. 모든 애플리케이션에 대한 인라인 솔루션을 찾지 못했습니다.


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

활동에 다음을 추가하십시오.

android:configChanges="orientation|screenSize"


현재 방향을 읽고 모든 활동의 수명 동안 이런 방식으로 유지하려고하므로 onCreate가 끝날 때 다음과 같이했습니다.

// 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);

참고URL : https://stackoverflow.com/questions/1410504/how-to-make-an-application-ignore-screen-orientation-change

반응형