2013-06-10 2 views
1

android:configChanges="orientation|keyboardHidden|screenSize"을 사용하여 화면 회전이 가로에서 세로로 또는 그 반대로 바뀌면 작업이 다시 시작되지 않도록합니다.

내 문제를 해결할 수 있도록 몇 가지 코드 아이디어가 있지만 어쨌든 오리 엔테이션과 함께 confidChanges를 사용하고 있지만 화면 방향을 확인할 수 있습니까 onCreate() ???configChanges를 사용하여 화면 방향을 확인하십시오.

답변

3

Activity의 onConfigurationChanged 메소드를 사용하십시오. (API 안드로이드 3.2 :

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
    } 

또한 안드로이드 포함하도록 매니페스트 파일에서 해당 요소를 편집 할 수 있습니다 :

<activity android:name=".MyActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name"> 

참고 : configChanges 그냥 아래의 코드를 참조 다음 코드를 참조하십시오 레벨 13) 이상으로 설정하면 장치가 세로 방향과 가로 방향 사이를 전환 할 때 "화면 크기"도 변경됩니다. API 레벨 13 이상을 위해 개발할 때 방향 변경으로 인해 런타임 다시 시작을 방지하려는 경우 따라서, 당신은 당신은의 방향이 무엇인지 알고 어떤 장소에서 getResources().getConfiguration().orientation을 사용할 수 있습니다

android:configChanges="orientation|screenSize" for API level 13 or higher . 
+0

세로 방향과 가로 방향을 전환 할 때 앱의 화면 크기를 변경하려고합니다. –

+0

그래서 뭐가 문제 야? –

+0

screenSize 문제입니다. –

0
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 
    int orient = display.getOrientation(); 
    switch(orient) { 
     case Configuration.ORIENTATION_PORTRAIT: 
      if(!oAllow) { 
        setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
      } 
      break; 
     case Configuration.ORIENTATION_LANDSCAPE: 
      if(!oAllow) { 
        setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
      } 
      break; 
    } 
} 
0

을 decalare해야한다 화면.
documentation에서 : 활동

업데이트 실행하는 동안

그리고, 방향 변경을 처리하기 위해 onConfigurationChanged(Configuration newConfig)를 오버라이드 (override) 특별한 경우

에게, 당신은 기반 활동의 다시 시작 우회 할 수 있습니다 하나 이상의 구성 변경 유형. 이것은 매니페스트의 android : configChanges 속성을 사용하여 수행됩니다. 구성 변경의 모든 유형에 대해 사용자가 거기에서 처리한다고 말하면 재시작하지 않고 현재 활동의 onConfigurationChanged (구성) 메소드에 대한 호출을 수신합니다.

+0

입니다. 이미 getResources(). getConfiguration(). orientation을 사용하고 있으며 그 값을 onCreate()하지만 화면 회전을 변경할 때 아무런 영향을주지 않습니다. –

+0

'android : configChanges = "orientation"'구성 파일에 넣으면 시스템이 활동을 파괴하지 않습니다. 대신'onConfigurationChanged (Configuration)'메소드를 호출한다. 따라서'onCreate()'는 다시 호출되지 않습니다. 'onConfigurationChanged (Configuration)'에서 설정 변경을 처리한다. – sromku

0

화면에 나타나는 방향을 감지 했으므로 올웨이먼트를 얻을 수 있음을 명시해야합니다.

OrientationEventListener _orientaion = new OrientationEventListener(
      MainActivity.this) { 

     @Override 
     public void onOrientationChanged(int arg0) { 
      System.out.println("Wortking"); 
     } 
    }; 
    _orientaion.enable(); 

나는 이것이 당신을 도울 것이라고 생각합니다.

+0

하지만 매니페스트에서 ScreenSize를 사용하지 않으면 작동하지 않는 활동이 다시 시작된다. –

관련 문제