Programming

RelativeLayout이 LinearLayout보다 비쌉니까?

procodes 2020. 7. 27. 08:00
반응형

RelativeLayout이 LinearLayout보다 비쌉니까?


정말 간단한 것을 표시하고 싶더라도 유연성 때문에 View 컨테이너가 필요할 때마다 항상 RelativeLayout을 사용했습니다.

성능 / 우수 사례 관점에서 그렇게 할 수 있습니까, 아니면 가능한 경우 LinearLayout을 사용해보아야합니까?

감사!


Romain Guy는 Google I / O 2013 (Android 용 맞춤보기 작성)에서 한 연설에서 모든 사람이 RelativeLayouts를 사용하기 시작한 오해를 분명히했습니다. RelativeLayout은 항상 두 개의 측정 패스를 수행해야합니다. 뷰 계층 구조가 단순하다면 전반적으로 무시할 수 있습니다. 그러나 계층이 복잡한 경우 추가 측정 단계를 수행하면 비용이 많이들 수 있습니다. 또한 RelativeLayouts를 중첩하면 지수 측정 알고리즘을 얻게됩니다.

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=1m41s

https://www.youtube.com/watch?v=NYtB6mlu7vA&t=38m04s


많은 뷰를 배치하지 않는 한 (예 : 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 % 우수합니다.

참고 URL : https://stackoverflow.com/questions/4069037/is-a-relativelayout-more-expensive-than-a-linearlayout

반응형