반응형

아무처리 안해도 화면 돌아가는데 반응은 한다. 그런데 매번 Activity의 onCreate()가 다시 불리는 구조.

만약 onCreate()가 매번 불리는게 싫다면 여기 참조

화면 전환 이벤트를 처리하고 싶다면 onConfigurationChanged()를 overide하면 되는데 여기 참조

단!, 위 링크대로 하면 onConfigurationChanged()가 안불리고, 여기에 있는대로 API level 13이상에서는 screenSize를 추가 해줘야 한다.

원래는 landscape용 화면 xml을 별도로 만들어 주면 좋다.

여기 참조

소스코드 상에서 현재의 orientation을 알아오는데는 다음처럼 하면된다.

(상수값을 직접 만들어 써야해서 조금 지저분 하다.)

(참고로 ORIENTATION_180으로는 핸드폰 돌려도 들어오지 않았다.)


final int ORIENTATION_0 = 0;
final int ORIENTATION_90 = 1;
final int ORIENTATION_180 = 2;
final int ORIENTATION_270 = 3;

Display display = ((WindowManager)mc.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int orientation = display.getRotation();
switch (orientation)
{
  default:
  case ORIENTATION_0: // Portrait
    //dostuff
	  System.out.println("orientation ORIENTATION_0");
    break;
  case ORIENTATION_90: // Landscape left
    //do stuff
	  System.out.println("orientation ORIENTATION_90");
    break;
  case ORIENTATION_180: // Upside down.
    //do stuff
	  System.out.println("orientation ORIENTATION_180");
    break;
  case ORIENTATION_270: // Landscape right
    //do stuff
	  System.out.println("orientation ORIENTATION_270");
    break;
}

참조할 만한 링크는 여기 이다.

emulator

AVD(emulator) portrait/landscape 전환 : Ctrl + F11

근데 2.3이나 4.4버전의 경우는 화면 전환시 버그가 있다고 한다. (나도 경험)

여기

반응형

+ Recent posts