2) int screenHeight = getWindow().getWindowManager().getDefaultDisplay().getHeight(); int screenWidth = getWindow().getWindowManager().getDefaultDisplay().getWidth(); if (screenWidth > screenHeight) { }
3) public void onConfigurationChanged (Configuration newConfig) { super.onConfigurationChanged(newConfig); if (newConfig.orientation == newConfig.ORIENTATION_PORTRAIT) { } else { } } ** onConfigurationChanged() 를 override 하기 위해서는 Activity를 상속받아야 한다.
#2. Portrait, Landscape에 따른 XML을 각각 구성 - res/layout-land - res/layout-port
android:screenOrientation="portrait" //---세로 화면 고정
android:screenOrientation="landscape" //---가로화면 고정
·화면회전금지방법2
//--- public void onCreate(Bundle savedInstanceState)함수에서
//--- setContentView(~);다음에 아래 라인을 추가 한다.
//---세로 화면 고정 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); //---가로 화면 고정 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
최초 실행되는 MainActivity에 적용되며, 액티비티가 여러 개라면 각 클래스마다 설정해야 함
세로 방향으로 고정됨
packagecom.example.myfirstapp;importandroid.os.Bundle;importandroid.app.Activity;importandroid.view.Menu;publicclass MainActivity extends Activity { @Override protectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); setContentView(R.layout.activity_main);} @Override publicboolean onCreateOptionsMenu(Menu menu){// Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu);returntrue;}}
안드로이드는 화면 회전시(가로=>세로로 전환 또는 반대) oncreate를 다시 호출하기 때문에
기본적으로 내용이 페이지를 처음 열었을때와 같이 변경됩니다. 이를 방지하기 위한 방법 입니다.
주요시스템 변경은 onConfigurationChanged를 이용해 감지할 수 있습니다
orientation: 스크린이 세로에서 가로로 바뀌는것 keyboardHidden: 키보드가 보여지거나 숨겨지는것. fontScale: 사용자가 원하는 폰트의 크기를 변경하는것. locale: 사용자가 언어 세팅을 변경하는것. keyboard: 키보드의 종류가 바뀌는것.
1. AndroidMainfest 정의 <activity android:configchanges="orientation|keyboardhidden"></activity>
2. Source Code 에 추가하기 1@Override 2publicvoid onConfigurationChanged(Configuration newConfig) { 3super.onConfigurationChanged(newConfig); 4/* 5 // 위 소스만 적용했을때 내용이 유지되고 추가 코드를 입력할때는 아래와 같이 한다 6 if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 7 // 가로모드로 변경되었을때 8 if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) 9 // 키보드가 보여질때 10*/ 11} 12