뭐 가로,세로 같은 화면을 쓰겠다면야 상관 없겠지만 다른 화면을 보여주고 싶으면
화면 방향 전환이 됐다는 이벤트를 잡아 와서 각각 레이아웃을 바꿔치기 하면 된다.
그러면 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();
}
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);
}
}
super.onCreate(savedInstanceState);
if ( this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { // 세로
setContentView(R.layout.main_vertical);
} else { // 가로
setContentView(R.layout.main_horizontal);
}
}
가로로 실행하든지 세로로 실행하든지 맘대로 하라 그래라.
이 정도 알려 줬는데 그냥 가면 혼난다!! ㅋㅋ
-
mba admissions consulting 2012.11.29 05:19
사실.. 개인적으로 별로 였지만 지나고 나면 생각나고 한번 쯤 또 가보고 싶네요.
-
covers for boots 2019.11.21 02:39
I read your blog post and this is nice blog post.. thanks for taking the time to share with us. have a nice day