2016-11-03 4 views
1

화면 방향이 바뀌면 onConfigurationChange에 내 의견을 다시 정리하고 싶습니다. 활동 재시작 및보기 레크리에이션은 너무 많이 소비됩니다. 그래서 저는 견해를 지켜야합니다.Android : 방향 변경시 너비와 높이 교환

LinearLayout이 하나 있습니다. 방향을 변경하고 싶습니다. 방향이 변경되면 모든 하위 요소의 너비와 높이 값을 바꾸고 싶습니다. (내 경우에는 0dp, wrap_contentmatch_parent 일 수 있습니다.)

당연히 이전의 방향을 유지하고 폭과 높이를 바꾸는 아이들에 대해 반복 할 수 있습니다. 그러나이 일은 본질적으로 나에게 독특하지 않게 보입니다. 그렇게 쉬운 방법이 있습니까? 이미 어딘가에 이미 구현 된 것일까 요?

답변

2

활동이 재시작 될 때만 구현됩니다.

반복을 포함하지 않는 한 가지 방법은 본질적으로 Android 시스템에서 수행하는 가로 레이아웃으로 직접보기를 다시 만드는 것입니다. 이점은 나머지 활동을 다시 만들 필요가 없다는 것입니다. 단점은 뷰 (onClickListener, onItemClickListener 등)에 적용한 모든 리스너의 바인딩을 해제해야한다는 것입니다. 그렇게하지 않으면 메모리 누수가 발생합니다.

그러나이 작업을 수행하는 간단한 방법이 있습니다. 레이아웃을 뷰를 제어하는 ​​단일 단편 스타일로 처리하십시오. 모든 클릭과 사용자 상호 작용은 활동을 활동으로 되돌려 보내는이 단편에 의해 처리됩니다. onConfigurationChange이 호출되면 FragmentManager에서이 조각을 제거한 다음 새 Fragment을 추가하면됩니다.