android 가로세로 화면 전환 비활성화 솔루션

일부 네티즌들은 액티비티가 백그라운드로 전환하거나 레이아웃이 가로 LANDSCAPE에서 포트레이트로 전환되는 것을 발견할 수 있다. 액티비티를 다시 전환하면 onCreate 방법을 터치할 수 있다. 우리는androidmanifest에서 할 수 있다.xml의 activit 요소에 이 속성 Android:configChanges="orientation|keyboardHidden"을 넣으면 됩니다. 예를 들어 Java 코드입니다
 
/* Display , */
final Display defaultDisplay = getWindow().getWindowManager()
.getDefaultDisplay();

intScreenH = defaultDisplay.getHeight();
intScreenW = defaultDisplay.getWidth();

/* Landscape */
if (intScreenW > intScreenH)
{
/* Landscape => Portrait */
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else
{
/* Portrait => Landscape */
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
/* Display , */
final Display defaultDisplay = getWindow().getWindowManager()
.getDefaultDisplay();
intScreenH = defaultDisplay.getHeight();
intScreenW = defaultDisplay.getWidth();
/* Landscape */
if (intScreenW > intScreenH)
{
/* Landscape => Portrait */
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else
{
/* Portrait => Landscape */
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
동시에 Activity의 Java 파일에서 onConfigurationChanged(Configuration newConfig)를 다시 불러옵니다. 이렇게 하면 레이아웃 전환이나 창 전환 시 onCreate를 다시 불러오지 않습니다.코드는 다음과 같습니다. Java 코드
 
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
{
//land
}
else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
{
//port
}
}
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
{
//land
}
else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
{
//port
}
}

좋은 웹페이지 즐겨찾기