Возникла проблема с производительностью, когда используется много вложенных RelativeLayouts.
Например, если у нас есть некоторый RelativeLayout в качестве корня пользовательского интерфейса, и каждый контейнер (кнопка, метка, textview, imageview) являетсяRelativeLayout + компонент на базе Android (например, aButton = RelativeLayout + ImageView + TextView), затем в сложном виде из 4 кнопок, 3 изображений и 6 меток мы получаем ~ 15 вложенных RelativeLayouts.
RelativeLayout имееточень сложный метод onMeasure, который вычисляет размер каждого дочернего элемента для определения размера макета.Расчет размера сложного представления из 15-20 вложенных RelativeLayouts стоит ~ 5 секунд, это слишком много.onMeasure является самым дорогим из всех вызовов, даже рисование заканчивается намного быстрее, чем измерение.<= UPD =>
Чтобы предотвратить появление предложений по использованию собственных представлений Android для создания чего-то сложного:
Требуется возможность добавлять все ко всему.Вот почему каждый контейнер должен быть не просто View, но ViewGroup.И функции RelativeLayout, такие как гравитация и выравнивание, также могут помочь, поэтому используется множество RelativeLayout. <= / UPD =>
Были ли у кого-нибудь эти проблемы с производительностью?
Следует ли заменить RelativeLayout некоторымиДругая проблема с компоновкой решает проблему?
Или удаление всех этих вложенных макетов - единственный способ справиться с проблемой?
Кто-нибудь знает, сколько макетов может быть вложено без появления проблем с производительностью?