programing

baselineAligned를 false로 설정하면 선형 레이아웃의 성능이 어떻게 향상됩니까?

powerit 2023. 8. 11. 22:40
반응형

baselineAligned를 false로 설정하면 선형 레이아웃의 성능이 어떻게 향상됩니까?

방금 xml로 UI를 구축하고 있었는데 ListView의 성능을 향상시키기 위해 Lint가 경고를 주고 Android:baselineAligned를 false로 설정하라고 했습니다.

이 경고를 추가한 린트 변경 사항에 대한 문서는 다음과 같습니다.

레이아웃 성능:성능 향상을 위해 Android:baselineAligned="false"를 설정해야 하는 가중치가 있는 선형 레이아웃을 찾고 성능 문제를 일으킬 수 있는 중첩 가중치가 있는 경우도 찾습니다.

누가 이것이 왜 성능을 향상시키는지, 특히 체중과 관련이 있을 때 설명할 수 있습니까?

설정별android:baselineAligned="false"앱 레이아웃이 하위 기준선을 정렬하기 위해 수행해야 하는 추가 작업을 방지하고 있습니다. 이는 성능을 확실히 향상시킬 수 있습니다. (UI에서 불필요한 작업 감소 => 성능 향상)

어떻게.android:baselineAligned="false"Help. 정답이 아니라 개념을 얻는 데 도움이 될 수 있습니다.

수평 선형 레이아웃에서 3개의 항목(아이콘, 텍스트, 버튼)을 수직으로 중앙에 배치할 수 있었습니다.

이 방법은 간단해 보이지만 실제로는 Android: gravity="center_delayout"을 선형 레이아웃 속성으로 지정하는 것만으로는 충분하지 않습니다. 아이콘은 가운데에 있지만 텍스트와 버튼은 그렇지 않습니다.이는 (아마도) 텍스트에 기준선이 있고 중심화 알고리즘이 '실제' 수직 중심 대신 이를 사용하기 때문입니다.하지만 더 나쁜 것은 버튼(텍스트 옆에 오는)이 텍스트의 기준선을 사용하여 중앙에 배치된다는 것입니다.

선형 레이아웃에서 Android:baselineAligned="false"를 지정하면 이 기능이 해제되고 모든 것이 올바르게 중앙에 배치됩니다.

// Baseline alignment requires to measure widgets to obtain the
                // baseline offset (in particular for TextViews). The following
                // defeats the optimization mentioned above. Allow the child to
                // use as much space as it wants because we can shrink things
                // later (and re-measure).
                if (baselineAligned) {
                    final int freeSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
                    child.measure(freeSpec, freeSpec);
                }

https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/LinearLayout.java#L1093

언급URL : https://stackoverflow.com/questions/9319916/how-does-setting-baselinealigned-to-false-improve-performance-in-linearlayout

반응형