본문 바로가기
TechNical/Android

Android] 화면 전환 이벤트 잡아내기

by 강멍멍이 2011. 10. 16.
반응형
이놈의 폰을 세로로 쓰다가 가로로 기울이면 화면 전환이 일어 난다.
뭐 가로,세로 같은 화면을 쓰겠다면야 상관 없겠지만 다른 화면을 보여주고 싶으면
화면 방향 전환이 됐다는 이벤트를 잡아 와서 각각 레이아웃을 바꿔치기 하면 된다.
그러면 onConfigurationChanged 를 구현해 주면 된다.

// 화면 전환시 레이아웃 변경
 public void onConfigurationChanged(Configuration newConfig) {
  
  super.onConfigurationChanged(newConfig);
  
  if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { // 세로 전환시 발생
       setContentView(R.layout.main_vertical);
  } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { // 가로 전환시 발생
       setContentView(R.layout.main_horizontal);
  }  
 
  afterLayoutChanged();
  
 }

레이아웃을 가로,세로 두개로 구현해서 바뀌는거에 따라서 맞춰주면 된다.

근데 그러면 간월적으로 폰을 가로로 들고 해당 앱을 실행 시키는 이상한 애들이 있을 수도 있다.
onConfigurationChanged 얘가 있어서 알아서 해 줄 것 같지만 안 해준다. 썩을...
앱이 실행된 상태에서 일어나는 전환 이벤트에 대해서만 처리를 해 주나 보다.

그러면 시작할때 잡아와야 하니까 onCreate 에다가 요렇게 넣어주면 된다.

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if ( this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { // 세로
            setContentView(R.layout.main_vertical);
        } else { // 가로
             setContentView(R.layout.main_horizontal);
        }
}


가로로 실행하든지 세로로 실행하든지 맘대로 하라 그래라.
이 정도 알려 줬는데 그냥 가면 혼난다!! ㅋㅋ
반응형

댓글