2011-07-26 4 views
0

방향 변경을 처리하는 활동이있는 Android 앱이 있습니다 (매니 페스트에서 android:configChanges="keyboardHidden|orientation"). 또한 수퍼 클래스를 호출하는 onConfigurationChanged 처리기가 있습니다.Android : landscape to rotating

장치를 회전하면 활동이 세로 모드로 유지됩니다. 그리고 전체 화면은 X 축이 물리적으로 아래에서 위로, Y 축이 왼쪽에서 오른쪽으로, 상태 표시 줄이 왼쪽 화면 가장자리를 따라 움직이며 모든 텍스트가 물리적으로 위로 움직이는 기괴한 상태입니다. 시스템이 방향 변경을 인식하지 못하게하는 것입니다.

내가 정말로하고 싶은 것은 활동을 다시 시작하지 않고 몇 가지주의 깊게 배치 된 레이아웃 속성을 사용하여 방향 변경을 처리하는 것입니다. 그러나 GUI의 위에서 언급 한 상태에서 나는 그것을 할 수 없다. 주 레이아웃 파일을 다시로드하면 변경되지 않습니다.

질문 - 시스템에 물리적 방향을 전환하여 XY 축이 정상적으로 작동하도록하려면 어떻게해야합니까?

편집 : 여기가 궁금 데이터 포인트의 모든 전화를 onConfigChanged에 당신은 정말 android:configChanges를 사용하지 말아야 1.

답변

0

매니페스트의 android:screenOrientation="portrait" 속성이 원인입니다. 이 속성을 사용하면 시스템이 활동을 재시작해도 화면이 실제 가로 모드로 전환되지 않습니다.

0

의 newConfig.orientation입니다. 이 기술은 최후의 수단으로 간주됩니다. 자세한 내용은 Handling Runtime Changes을 참조하십시오.

간략한 설명 : android:configChanges을 사용하는 경우 구성 변경 이벤트를 처리하고 새 구성을 위해 UI 리소스를 다시로드해야하는 책임은입니다. 이 호출되면 getResources()은 이미 새 구성에서 올바른 리소스를 가리 킵니다. 새로운 레이아웃 (변경 될 수있는)으로 모든 레이아웃, 문자열, 치수, 드로어 블 등을 수동으로 다시 설정하기 만하면됩니다.


당신은 당신이 configChanges와 함께 가기로 결정 이유도 이유를 언급하지 않았다 대신 정상적인 활동 워크 플로우. 이것은 몇 가지 대안을 제시하는 데 유용 할 수 있습니다.

+0

* 구성 변경을 처리하려고합니다. 첫 번째 단계는 화면이 가로로 작동하도록하는 것입니다. 맞습니까? 어디 폭> 높이? 그리고 나는 그것에 실패하고있다. onConfigChange()에 새 리소스를로드하는 것은 일을하지 않으며 여전히 인물의 초상화에 나타납니다. 레이아웃은 세로 방향으로 표시되지 않습니다. –