안드로이드 개발 가로/세로 화면 전환할 때 배경화면 변경하는 방법 |
환경: 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);
'안드로이드 개발' 카테고리의 다른 글
안드로이드 개발 RelativeLayout 화면을 Java 소스에서 구현하는 방법 (0) | 2017.12.17 |
---|---|
안드로이드 개발 No orientation specified, and the default is horizontal. This is a common source of bugs when children are added dynamically. 에러 해결 (0) | 2017.12.06 |
안드로이드 개발 Android WebView 로컬 HTML 파일 표현하는 방법 (0) | 2017.12.04 |
안드로이드(Android) 개발 컴포넌트 공유 객체 Application 만들어서 사용하는 방법 (0) | 2017.11.30 |
안드로이드 개발 ViewHolder 패턴 이용해서 ListView 성능 향상하는 방법 (0) | 2017.11.22 |
안드로이드 폰캡 PhoneGap 설치방법, 기본 앱 만들어서 실행하는 방법 (1) | 2017.11.12 |
이클립스(Eclipse) 안드로이드 에뮬레이터 연결해서 실행하는 방법 (3) | 2016.11.17 |
안드로이드(Android) AlertDialog.Builder 상속받아 화면 디자인 가능한 AlertDialog 만들기 (0) | 2015.06.04 |