AsyncTask를 시작하기 때문에 회전하지 못하게하려는 활동 중 하나가 있으며 화면 회전으로 다시 시작됩니다.
이 활동을 알리는 방법이 있습니까? "사용자가 화를 내면서 전화를 흔들어도 화면을 회전시키지 마십시오"?
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
AsyncTask를 시작하기 때문에 회전하지 못하게하려는 활동 중 하나가 있으며 화면 회전으로 다시 시작됩니다.
이 활동을 알리는 방법이 있습니까? "사용자가 화를 내면서 전화를 흔들어도 화면을 회전시키지 마십시오"?
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
답변:
더하다
android:screenOrientation="portrait"
또는
android:screenOrientation="landscape"
<activity>
매니페스트 의 요소에 대한 작업이 완료되었습니다.
당신은 자동 화면 회전을 방지하기 위해 아래의 논리를 따를 수 있는 동안 당신은 AsyncTask
실행이다 :
getRequestedOrientation()
.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR)
.AsyncTask
.AsyncTask
사용하여 이전 방향 상태를 복원합니다 setRequestedOrientation(oldOrientation)
.의 Activity
내부 (UI 스레드에서 실행) 속성에 액세스 하는 방법에는 여러 가지가 있습니다 AsyncTask
. AsyncTask
내부 클래스로 구현하거나 클래스 Handler
를 찌르는 메시지 를 사용할 수 있습니다 Activiy
.
이 작업을 수행하는 가장 쉬운 방법은
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
바로 onCreate 내에서
setContentView(R.layout.activity_main);
그래서...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
AndroidManifest에 들어 가지 않고 다음과 같이 할 수 있습니다.
screenOrientation = getResources().getConfiguration().orientation;
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
... AsyncTask
screenOrientation = getResources().getConfiguration().orientation;
@Override
protected void onPostExecute(String things) {
context.setRequestedOrientation(PlayListFragment.screenOrientation);
or
context.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
}
여기서 유일한 단점은 API 레벨 18 이상이 필요하다는 것입니다. 기본적으로 이것은 스피어의 끝입니다.
Activity.java
@Override
public void onConfigurationChanged(Configuration newConfig) {
try {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
// land
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
// port
}
} catch (Exception ex) {
}
AndroidManifest.xml
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name="QRCodeActivity" android:label="@string/app_name"
android:screenOrientation="landscape" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
AndroidManifest.xml의 ACTIVITY에 대한 다음 속성 만 있으면됩니다.
android:configChanges="orientation"
따라서 전체 활동 노드는 다음과 같습니다.
<activity android:name="Activity1"
android:icon="@drawable/icon"
android:label="App Name"
android:excludeFromRecents="true"
android:configChanges="orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
AndroidManifest.xml에 다음을 추가하십시오.
[앱> src> 메인> AndroidManifest.xml]
<activity android:name=".MainActivity"
android:configChanges="orientation"
android:screenOrientation="portrait"/>
예:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx.zzzzzz.yyyyy">
<uses-permission android:name="A-PERMISSION" />
<application>
<activity android:name=".MainActivity"
android:screenOrientation="portrait"
android:configChanges="orientation">
</activity>
</application>
</manifest>
ADT ( Android Developer Tools ) 및 Eclipse 를 사용하는 경우 AndroidManifest.xml-> 애플리케이션 탭->으로 이동하여 활동을 선택할 수 있습니다. 마지막으로 원하는 방향을 선택하십시오. 많은 옵션 중 하나를 선택할 수 있습니다.
이 방법으로 시도해 볼 수 있습니다
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.itclanbd.spaceusers">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<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=".Login_Activity"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
화면 회전을 방지하는 것보다 앱을 빌드하는 더 좋은 방법 인 AsyncTask 를 사용하는 대신 활동이 변경 되어도 데이터를 안전하게 유지 하려면 AsyncTaskLoader 를 사용하십시오 .
"portrait"
AndroidManifest.xml 파일의 사용자 는 좋은 솔루션처럼 보일 수 있습니다. 그러나 특정 장치 (가로에서 가장 잘 작동)가 올바른 방향을 얻지 않고 세로로 이동하도록합니다. 최신 Android 버전에서는 오류가 발생합니다. 그래서 내 제안은 사용하는 것이 좋습니다 "nosensor"
.
<activity
...
...
android:screenOrientation="nosensor">