[java] 현재 화면 방향을 얻으려면 어떻게해야합니까?
onCreate ()에서 활동을 다시 만들 때 세로 대 가로로로드 할 항목 사이를 전환 할 수 있도록 방향이 가로 방향 일 때 플래그를 설정하고 싶습니다. 내 레이아웃을 처리하는 레이아웃 랜드 XML이 이미 있습니다.
public void onConfigurationChanged(Configuration _newConfig) {
if (_newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
this.loadURLData = false;
}
if (_newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
this.loadURLData = true;
}
super.onConfigurationChanged(_newConfig);
}
onConfigurationChanged를 재정의하면 레이아웃 랜드 XML이 가로 방향으로로드되지 않습니다.
onCreate ()에서 장치의 현재 방향을 얻고 싶습니다. 어떻게 구할 수 있습니까?
답변
Activity.getResources().getConfiguration().orientation
답변
int orientation = this.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
// code for portrait mode
} else {
// code for landscape mode
}
의 수퍼 클래스 this
가Context
답변
일부 장치에서는 void onConfigurationChanged()
충돌이 발생할 수 있습니다. 사용자는이 코드를 사용하여 현재 화면 방향을 가져옵니다.
public int getScreenOrientation()
{
Display getOrient = getActivity().getWindowManager().getDefaultDisplay();
int orientation = Configuration.ORIENTATION_UNDEFINED;
if(getOrient.getWidth()==getOrient.getHeight()){
orientation = Configuration.ORIENTATION_SQUARE;
} else{
if(getOrient.getWidth() < getOrient.getHeight()){
orientation = Configuration.ORIENTATION_PORTRAIT;
}else {
orientation = Configuration.ORIENTATION_LANDSCAPE;
}
}
return orientation;
}
그리고 사용
if (orientation==1) // 1 for Configuration.ORIENTATION_PORTRAIT
{ // 2 for Configuration.ORIENTATION_LANDSCAPE
//your code // 0 for Configuration.ORIENTATION_SQUARE
}
답변
int rotation = getWindowManager().getDefaultDisplay().getRotation();
이것은 모든 방향을 보통과 반대 방향으로 줄 것입니다
그리고 그것을 처리
int angle = 0;
switch (rotation) {
case Surface.ROTATION_90:
angle = -90;
break;
case Surface.ROTATION_180:
angle = 180;
break;
case Surface.ROTATION_270:
angle = 90;
break;
default:
angle = 0;
break;
}
답변
getActivity().getResources().getConfiguration().orientation
이 명령은 Portrait의 경우 int 값 1을, Landscape의 경우 2를 반환합니다
답변
경우 사람이 얻을하고자하는 의미 (즉, 전달과 같은 방향 설명을 onConfigurationChanged(..)
사람들과 reverseLandscape
, sensorLandscape
등), 간단하게 사용getRequestedOrientation()
답변
활동 수업에서 아래 방법을 사용하십시오.
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
setlogo();// Your Method
Log.d("Daiya", "ORIENTATION_LANDSCAPE");
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
setlogoForLandScape();// Your Method
Log.d("Daiya", "ORIENTATION_PORTRAIT");
}
}
그런 다음 활동이 구성 변경을 처리한다고 선언하려면 매니페스트 파일에서 해당 요소를 편집하여 android:configChanges
처리하려는 구성을 나타내는 값이 있는 속성 을 포함하십시오 . 가능한 값은 android:configChanges
속성 의 설명서에 나열되어 있습니다 (가장 일반적으로 사용되는 값은 화면 방향이 변경 될 때 다시 시작되지 않도록하는 “방향”이고 키보드 가용성이 변경 될 때 다시 시작하지 않도록하는 “keyboardHidden”). 파이프로 분리하여 속성에 여러 구성 값을 선언 할 수 있습니다. 캐릭터.
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
그게 다야!!