저는 뷰 컨테이너가 필요할 때마다 항상 RelativeLayout을 사용했습니다. 유연성 때문에 정말 단순한 것을 표시하고 싶었더라도.
그렇게해도 괜찮습니까? 아니면 성능 / 우수 사례 관점에서 가능한 한 LinearLayout을 사용해보아야합니까?
감사!
저는 뷰 컨테이너가 필요할 때마다 항상 RelativeLayout을 사용했습니다. 유연성 때문에 정말 단순한 것을 표시하고 싶었더라도.
그렇게해도 괜찮습니까? 아니면 성능 / 우수 사례 관점에서 가능한 한 LinearLayout을 사용해보아야합니까?
감사!
답변:
Romain Guy는 Google I / O 2013 (Android 용 사용자 정의보기 작성)에서 모든 사람이 모든 작업에 RelativeLayouts를 사용하게 된 오해를 명확히했습니다. RelativeLayout은 항상 두 번의 측정 패스를 수행해야합니다. 전체적으로보기 계층 구조가 단순한 한 무시해도됩니다. 그러나 계층 구조가 복잡한 경우 추가 측정 단계를 수행하면 잠재적으로 상당한 비용이 발생할 수 있습니다. 또한 RelativeLayouts를 중첩하면 지수 측정 알고리즘을 얻게됩니다.
많은 뷰를 레이아웃하지 않는 한 (예 : ListView에서) LinearLayout 또는 RelativeLayout 중에서 선택하는 성능은 무시할 수 있습니다. 작업에 가장 편리한 것을 선택하고 필요할 때만 성능에 대해 걱정하십시오.
다음은 효율적인 레이아웃 만들기 에 대한 공식 문서 가 RelativeLayout 및 LinearLayout의 성능에 대해 말하는 내용입니다.
기본 기능을 고수하는 것은 안타깝게도 사용자 인터페이스를 만드는 가장 효율적인 방법이 아닙니다. 일반적인 예는 LinearLayout의 남용으로 뷰 계층 구조에서 뷰가 급증하는 경우입니다. 애플리케이션에 추가하는 모든보기 또는 더 나쁜 경우에는 모든 레이아웃 관리자에 비용이 발생합니다. 초기화, 레이아웃 및 그리기 속도가 느려집니다. 레이아웃 패스는 가중치 매개 변수를 사용하는 여러 LinearLayout을 중첩 할 때 특히 비용이 많이들 수 있습니다.이 경우 하위 항목을 두 번 측정해야합니다.
Relativelayout은 Linearlayout보다 더 효과적입니다.
에서 여기 :
기본 레이아웃 구조를 사용하면 가장 효율적인 레이아웃이된다는 것은 일반적인 오해입니다. 그러나 애플리케이션에 추가하는 각 위젯 및 레이아웃에는 초기화, 레이아웃 및 그리기가 필요합니다. 예를 들어, LinearLayout의 중첩 된 인스턴스를 사용하면 뷰 계층 구조가 지나치게 깊어 질 수 있습니다. 또한 layout_weight 매개 변수를 사용하는 LinearLayout의 여러 인스턴스를 중첩하면 각 하위 항목을 두 번 측정해야하므로 비용이 많이들 수 있습니다. 이것은 ListView 또는 GridView에서 사용되는 경우와 같이 레이아웃이 반복적으로 확장 될 때 특히 중요합니다.
2018 업데이트 : Android N 릴리스에서이 ConstraintLayout
클래스는와 유사한 기능을 제공 RelativeLayout
하지만 훨씬 더 저렴한 비용으로 제공됩니다. 매우 강력한 레이아웃 관리자이며 복잡한 GUI를 구축해야 할 때마다 사용해야합니다.
당신은 시도 할 수 있습니다
<LinearLayout>
<ViewPager/><!--Loading images from net, it is very good as a testing case.-->
<ViewPagerIndicator/>
<TextView/> <!--Show some info about page-->
</LinearLayout>
<RelativeLayout>
<ViewPager/><!--Loading images from net, it is very good as a testing case.-->
<ViewPagerIndicator below="id of ViewPager"/>
<TextView below="id of ViewPagerIndicator"/> <!--Show some info about page-->
</RelativeLayout>
페이지가 인터넷에서 일부 이미지를로드하는 경우 많은 차이가 있음을 알 수 있습니다. 이 경우 LinearLayout은 RelativeLayout보다 100 % 우수합니다.