2011-07-05 2 views
0

나는 방향의 활동은 세로에 잠겨있다 :업데이트 아이 뷰는

<activity android:name="MainActivity" android:label="@string/app_name" 
     android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar"> 

그러나 활동에서 내가 가지고 내가 특히 텍스트, 사각형을 그리고있는 몇 가지 사용자 정의보기하는 화살표를 나타내는 경로입니다.

전체 활동 레이아웃을 변경하지 않고 전화가 회전되었을 때 화살표를 업데이트 할 수 있어야합니다.

그래서 활동 및 레이아웃은 항상 세로이지만 휴대 전화가 세로에서 가로로 기울이면 내 중첩 된보기에 알림을 보내고 다시 그려야합니다.

실제 방향의 변경 내용을 수신하고 업데이트하여 중첩 된 뷰에 다시 그리기를 지시하려면 어떻게해야합니까?

감사, P

답변

0

UPDATE : 현재 활성화 Activity 그래도 portrait 또는 landscape (테스트하지 않은 다른 값으로 screenOrientation 세트가있을 때 방향 변화를 감지 할 방법이없는 것처럼

것 같습니다. 심지어 방송 수신기를 사용하고 ACTION_CONFIGURATION_CHANGED

나는 생각할 수있는 유일한 방법은 수동으로 센서를 추적하는 것입니다.

이가 작동하지 않습니다 : 당신은 당신의 ActivityonConfigurationChanged() 기능을 무시하고 그 함수에서 UI를 새로해야

.

이 기능을 호출하려면 활동에 android:configChanges="orientation"을 추가해야합니다.

+0

xml 특성과 메서드 구현 (호출시 토스트가 표시됨)을 모두 추가했는데 아무 것도 발생하지 않습니다. 나는'screenOrientation = "portrait"설정 때문에 그것을 추측하고 있나? – pstanton

+0

@inazaruk - 내가 방금했기 때문에 manifest에서 screenOrientation을 잠그고 시도해 보셨습니까? onConfigurationChanged가 전혀 호출되지 않았습니다 – Marmoy

+0

맞아요. 'screenOrientation'이 설정되면 화면 방향 설정 변경이보고되지 않습니다. – inazaruk

1

물론 할 수 있습니다! OrientationEventListener의 하위 클래스를 만들고 onOrientationChanged 메소드에서 수행해야 할 작업을 수행하십시오.

클래스를 인스턴스화 할 때 생성자에 컨텍스트를 전달한 다음 객체에 enable()을 호출하면 편리합니다.

단지 단점은 인물이나 풍경이 아니라 각도로 정확한 회전입니다. 그러나 약간의 디버깅과 멋진 if/then 문을 사용하면 해당 숫자의 범위를 파악할 수 있습니다. 호출

소자의 방향이 변경된 :

여기 문서에서 힌트이다. orientation 파라미터는 거꾸로 경우 0 내지 180 개도, 그것의 좌측 상단에있는 경우 (359) orientation 장치가 자연 위치에 배향 0 도 90 도인에 이르는 각도이며, 오른쪽이 위로 오면 270도. 장치가 평면에 가까울 때 ORIENTATION_UNKNOWN이 반환되고 방향을 결정할 수 없습니다.

문서는 here입니다.

희망이 도움이됩니다.

+0

또한 나중에 답장하더라도이 시점부터 필요할 경우 여전히 도움이 될 것이라고 생각했습니다. – Qix

+0

예, 이것은 정상적으로 작동하는 것 같습니다. – inazaruk