안드로이드 개발 가로/세로 화면 전환할 때 배경화면 변경하는 방법

 

환경: Android Studio 3.0

 

기본적으로 스마트폰을 돌리면 방향에 따라 앱 화면이 가로/세로로 전환됩니다. 그렇지 않은 앱들은 설정에서 한 방향으로 고정했기 때문입니다. 오늘은 가로/세로로 방향을 전환할 때 이벤트를 인식해서 배경화면을 변경하는 방법에 대해 알아 보겠습니다. 다른 방법도 있지만 화면 전환 이벤트를 어떻게 사용하는지 알기 위해서 포스팅 했습니다.

 

onConfigurationChanged() 는 화면 전환을 했을 때 이벤트를 받을 수 있는 함수입니다. 이 함수를 재사용하기 위해 Override 를 해야 합니다. 오른쪽 마우스를 눌러 Generate > Override Methods 메뉴를 선택합니다.

안드로이드 개발 가로/세로 화면 전환할 때 배경화면 변경하는 방법

 

함수 목록에서 onConfigurationChanged() 를 찾습니다. 함수가 너무 많아 찾기 힘들다면 상단 정렬 기능에서 알파벳을 사용해 보세요

안드로이드 개발 가로/세로 화면 전환할 때 배경화면 변경하는 방법

 

onConfigurationChanged() 함수가 추가 되었다면 다음과 같이 소스를 입력합니다. 현재 화면이 어떤 방향인지 알기 위해서는 파라미터로 넘어온 Configuration 값으로 판단해야 합니다. Configuration orientation ORIENTATION_PORTRAIT 이면 세로이고, ORIENTATION_LANDSCAPE 이면 가로입니다

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

    if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        // 세로 전환할 때 이미지 교체
        mLayoutBackground.setBackgroundResource(R.drawable.img_portrait);

    }else if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
        // 가로 전환할 때 이미지 교체
        mLayoutBackground.setBackgroundResource(R.drawable.img_landscape);
    }
}

안드로이드 개발 가로/세로 화면 전환할 때 배경화면 변경하는 방법

 

AndroidManifest.xml 정의

 

다음은 AndroidManifest.xml 에 화면 전환 기능을 사용하기 위한 속성값을 입력해야 합니다. Activity configChanges 속성값에 orientation screenSize 값을 입력합니다. screenSize 앱이 회전할 때마다 activity OnCreate 함수가 호출되지 않도록 합니다. 이 값이 없으면 onConfigurationChanged 함수는 호출하지 않습니다

<activity
    android:name=".OrientationActivity"
    android:configChanges="orientation|screenSize"
    android:theme="@style/Theme.AppCompat.NoActionBar">

세로/가로 화면 고정하는 방법

 

만약 가로/세로 전환을 하고 싶지 않다면 한 방향으로 고정하는 방법이 있습니다. xml 에서 screenOrientation 속성값에 landscape/portrait 중 하나를 입력하는 것입니다. portrait 가 세로이고 landscape 는 가로가 되겠죠

안드로이드 개발 가로/세로 화면 전환할 때 배경화면 변경하는 방법

 

소스에서 속성을 변경하는 방법입니다. Activity setRequestedOrientation() 함수를 이용합니다

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

안드로이드 개발 가로/세로 화면 전환할 때 배경화면 변경하는 방법

저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군