programing

어떻게 현재 화면 방향 갈 수 있나요?

newsource 2022. 8. 21. 19:43

어떻게 현재 화면 방향 갈 수 있나요?

는 활동이 onCreate()에 있도록 내 인생 로드할 사이에 초상화 속의 비능률 풍경 바꿔 볼 수 있을 때 나의 오리엔테이션 풍경에 나는 단지 국기들 제시하고 싶다.난 이미 내 레이아웃을 다루고 있는 layout-land 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 Over-riding 가로 방향에서 적재에서 내 layout-land 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

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;
}

일부 장치에서는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
}
getActivity().getResources().getConfiguration().orientation

이 명령 있는 풍경의 초상을int 값 1과 2를 반환합니다.

의미 있는 오리엔테이션 기술을 얻고 싶은 사람이 있는 경우(예: 에 전달됨)onConfigurationChanged(..)저것들과reverseLandscape,sensorLandscape등)를 간단하게 사용할 수 있습니다.

저는 여러분 중 몇 분에게 관심을 가질 다른 대안을 제안하고 싶습니다.

android:configChanges="orientation|keyboardHidden" 

는, 삽입되는 레이아웃을 명시적으로 선언하는 것을 나타내고 있습니다.

레이아웃 랜드와 레이아웃 폴더 덕분에 자동 주입을 유지하고 싶은 경우.onCreate에 추가하기만 하면 됩니다.

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
        getSupportActionBar().hide();

    } else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
        getSupportActionBar().show();
    }

여기서는 전화기의 방향에 따라 액션바를 표시하거나 표시하지 않습니다.

액티비티 클래스에서 다음 방법을 사용합니다.

 @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:configChangesAtribute에는 처리할 Configuration을 나타내는 값을 지정합니다.사용 가능한 값은 의 매뉴얼에 기재되어 있습니다.android:configChanges속성(가장 일반적으로 사용되는 값은 화면 방향이 변경될 때 다시 시작되지 않도록 하기 위한 "방향" 및 "방향"입니다.)[숨김(Hidden)]를 선택하면 키보드의 가용성이 변경되었을 때 재시작되지 않습니다).여러 Configuration 값을 pipe | 문자로 구분하여 Atribute에 선언할 수 있습니다.

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

이상입니다!!

onConfigurationChanged 메서드를 덮어쓰고 기본 작업을 수행할 경우 덮어쓰기 메서드의 첫 번째 문으로 super.onConfigurationChanged()를 사용하는 것을 고려하십시오.

언급URL : https://stackoverflow.com/questions/3663665/how-can-i-get-the-current-screen-orientation