[java] 현재 화면 방향을 얻으려면 어떻게해야합니까?

onCreate ()에서 활동을 다시 만들 때 세로 대 가로로로드 할 항목 사이를 전환 할 수 있도록 방향이 가로 방향 일 때 플래그를 설정하고 싶습니다. 내 레이아웃을 처리하는 레이아웃 랜드 XML이 이미 있습니다.

public void onConfigurationChanged(Configuration _newConfig) {

        if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            this.loadURLData = false;
        }

        if (_newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
            this.loadURLData = true;
        }

        super.onConfigurationChanged(_newConfig);
    }

onConfigurationChanged를 재정의하면 레이아웃 랜드 XML이 가로 방향으로로드되지 않습니다.

onCreate ()에서 장치의 현재 방향을 얻고 싶습니다. 어떻게 구할 수 있습니까?



답변

Activity.getResources().getConfiguration().orientation


답변

int orientation = this.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
    // code for portrait mode
} else {
    // code for landscape mode
}

의 수퍼 클래스 thisContext


답변

일부 장치에서는 void onConfigurationChanged()충돌이 발생할 수 있습니다. 사용자는이 코드를 사용하여 현재 화면 방향을 가져옵니다.

public int getScreenOrientation()
{
    Display getOrient = getActivity().getWindowManager().getDefaultDisplay();
    int orientation = Configuration.ORIENTATION_UNDEFINED;
    if(getOrient.getWidth()==getOrient.getHeight()){
        orientation = Configuration.ORIENTATION_SQUARE;
    } else{ 
        if(getOrient.getWidth() < getOrient.getHeight()){
            orientation = Configuration.ORIENTATION_PORTRAIT;
        }else { 
             orientation = Configuration.ORIENTATION_LANDSCAPE;
        }
    }
    return orientation;
}

그리고 사용

if (orientation==1)        // 1 for Configuration.ORIENTATION_PORTRAIT
{                          // 2 for Configuration.ORIENTATION_LANDSCAPE
   //your code             // 0 for Configuration.ORIENTATION_SQUARE
}


답변

int rotation =  getWindowManager().getDefaultDisplay().getRotation();

이것은 모든 방향을 보통과 반대 방향으로 줄 것입니다

그리고 그것을 처리

int angle = 0;
switch (rotation) {
    case Surface.ROTATION_90:
        angle = -90;
        break;
    case Surface.ROTATION_180:
        angle = 180;
        break;
    case Surface.ROTATION_270:
        angle = 90;
        break;
    default:
        angle = 0;
        break;
}


답변

getActivity().getResources().getConfiguration().orientation

이 명령은 Portrait의 경우 int 값 1을, Landscape의 경우 2를 반환합니다


답변

경우 사람이 얻을하고자하는 의미 (즉, 전달과 같은 방향 설명을 onConfigurationChanged(..)사람들과 reverseLandscape, sensorLandscape등), 간단하게 사용getRequestedOrientation()


답변

활동 수업에서 아래 방법을 사용하십시오.

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

        // Checks the orientation of the screen
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {

            setlogo();// Your Method
            Log.d("Daiya", "ORIENTATION_LANDSCAPE");

        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {

            setlogoForLandScape();// Your Method
            Log.d("Daiya", "ORIENTATION_PORTRAIT");
        }
    }

그런 다음 활동이 구성 변경을 처리한다고 선언하려면 매니페스트 파일에서 해당 요소를 편집하여 android:configChanges처리하려는 구성을 나타내는 값이 있는 속성 을 포함하십시오 . 가능한 값은 android:configChanges속성 의 설명서에 나열되어 있습니다 (가장 일반적으로 사용되는 값은 화면 방향이 변경 될 때 다시 시작되지 않도록하는 “방향”이고 키보드 가용성이 변경 될 때 다시 시작하지 않도록하는 “keyboardHidden”). 파이프로 분리하여 속성에 여러 구성 값을 선언 할 수 있습니다. 캐릭터.

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

그게 다야!!