세로 모드에서만 작동하는 앱이 있으며 모든 활동에 대해 매니페스트 파일에서 방향을 세로로 변경했습니다. 그러나 장치를 회전하면 활동이 다시 생성됩니다. 활동을 파괴하지 않는 방법?
답변
대한 API 12 이하 : 추가
android:configChanges="orientation"
방향이 변경 될 때마다 화면 크기도 변경되므로 API 13 이상을 대상으로하는 경우 “screenSize”를 추가하십시오 . 그렇지 않으면 새 장치가 계속해서 활동을 파괴합니다. “screenSize”사용에 대한 자세한 내용은 아래 Egg의 답변을 참조하십시오.
android:configChanges="orientation|screenSize"
AndroidManifest.xml의 활동에. 이렇게하면 활동이 자동으로 다시 시작되지 않습니다. 자세한 내용 은 설명서 를 참조하십시오 .
답변
공식 문서에서 flurin은 말했습니다,
참고 : 애플리케이션이 API 레벨 13 이상을 대상으로하는 경우 (minSdkVersion 및 targetSdkVersion 속성에 의해 선언 된대로) ‘screenSize’구성도 선언해야합니다. 기기가 세로 방향과 가로 방향 사이를 전환 할 때도 변경되기 때문입니다.
따라서 앱이 API 레벨 13 이상을 대상으로하는 경우 대신이 구성을 설정해야합니다.
android:configChanges="orientation|screenSize"
답변
올바른 솔루션은
android:configChanges="orientation|screenSize"
Android 문서 :
현재 사용 가능한 화면 크기가 변경되었습니다. 이것은 현재 가로 세로 비율에 비해 현재 사용 가능한 크기의 변경을 나타내므로 사용자가 가로와 세로 사이를 전환 할 때 변경됩니다. 그러나 애플리케이션이 API 레벨 12 이하를 대상으로하는 경우 활동은 항상이 구성 변경을 자체적으로 처리합니다 (이 구성 변경은 Android 3.2 이상 기기에서 실행되는 경우에도 활동을 다시 시작하지 않음). *
답변
나는 이것을 조금 엉망으로 만든 다음 Manifest 파일 내에서 configChanges를 활동 수준이 아닌 응용 프로그램 수준에 두었다는 사실을 알 렸습니다. 다음은 코드가 올바르게 작동 할 때의 모습입니다.
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:configChanges="orientation|screenSize|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
답변
이제 Android가 분할 화면 (Android 용어로 “다중 창”)을 지원하므로 screenSize | smallestScreenSize | screenLayout | orientation도 추가 할 수 있습니다. 따라서 회전 및 분할 화면을 처리하려면 android : configChanges에서 다음과 같은 것을 원할 것입니다.
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:configChanges="orientation|screenSize|keyboardHidden|smallestScreenSize|screenLayout">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
답변
플로팅 이미지에서이 코드를보십시오. 화면 회전을 처리하는 가장 흥미로운 방법이 있습니다. http://code.google.com/p/floatingimage/source/browse/#svn/trunk/floatingimage/src/dk/nindroid/rss/orientation
답변
매니페스트에 작성하십시오.
android:configChanges="orientation|screenSize|keyboardHidden"
문제를 해결 한 활동에서 이것을 재정의하십시오.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}