Какой порядок вложенных макетов наиболее эффективен в Android - PullRequest
14 голосов
/ 21 марта 2011

Не думаю, что я действительно когда-либо вкладывал более чем в три уровня Layouts (RelativeLayout, LinearLayout, FrameLayout) в Android.Я не имею в виду элементы списка, которые также используют пользовательский макет для ListView, а просто обычные макеты для действия.

Кстати, я разговаривал с другим разработчиком о вложении макетов для определенного макета, который мыобсуждали, и он, казалось, думал, что даже несколько вложенных макетов действительно замедлили производительность.Я подумал, что есть доля правды, но не может быть так много.

У кого-нибудь есть более экспертный подход к этому?Любой вклад?Мнение?

Спасибо.

ОБНОВЛЕНИЕ для тех, кто нашел в Google: Первый ответ ниже - отличный ресурс.Похоже, что многие люди пропускают подобные ответы, но, пожалуйста, проверьте это.Очень ценный.

Ответы [ 5 ]

31 голосов
/ 21 марта 2011

Думаю, для этого нет серебряной пули, но я дам вам несколько советов:

1) Попробуйте использовать инструменты, поставляемые с Android SDK.

Я склонен анализировать свои макеты, используя hierarchyviewer и layoutopt, пытаясь уменьшить количество используемых View и высоту дерева.

2) Прочитать сообщения Ромена Гая о <include>, <merge> и <ViewStub> Эти теги используются не часто, но они обеспечивают "быстрые" взломы.

3) Используйте dmtracedump и измерьте, сколько времени потребуется, чтобы раздуть представление.

Вы можетепроверьте, сколько времени требуется, чтобы раздуть вид.Получите инфлятор и измерьте, сколько времени потребуется, чтобы надуть каждый из ваших вариантов.

1 голос
/ 21 марта 2011

Я не провел ни одного надлежащего тестирования, чтобы поддержать это, но все же я считаю, что Android был спроектирован для использования раскладок для предоставления адекватных пользовательских интерфейсов, это практически единственный способ поддержки нескольких экранов, поэтому я бы не сталбеспокоиться о том, что является наиболее эффективным, просто выглядит так, как должно.

Любой другой вид плохой практики программирования, вероятно, будет иметь больший эффект по сравнению с вложением макетов.

0 голосов
/ 22 января 2015

Не могу дать вам полный ответ, но Romain Guy специально указал, что вложенные RelativeLayouts имеют экспоненциальное время для измерения.

См. видео здесь, в 38:08 mark

0 голосов
/ 10 сентября 2013

Разница будет гораздо важнее, когда вы используете такой макет для каждого элемента в ListView, например. Надеемся, этот простой пример показал вам, что знакомство с вашими макетами - лучший способ узнать, как оптимизировать ваш пользовательский интерфейс.

0 голосов
/ 21 марта 2011

на самом деле все они основаны на одном классе ... но, по-моему, было бы лучше использовать их следующим образом:

<RelativeLayout>
    <LinearLayout>
        <at> here we just create nested more as we wont></at>
    </LinearLayout>
</RelativeLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...