169 похожих чатов

Друзья, нужна помощь Есть layout, в котором очень много вьюх (~80),

из-за этого он заметно долго прогружается перед тем как показаться. К тому же, мне нужно на многие вьюхи навесить слушателей. В общем, много работы происходит при инициализации фрагмента. Хорошая новость, что большинство этих вьюх разделены по группам. В разделе "Существительное" у меня одни вьюхи, в "Глагол" другие вьюхи и так далее. Сейчас по выбору категории я показываю один LinearLayout и прячу другие

Мой вопрос звучит так. Какой есть надежный и хороший способ оптимизации этого макета? Я думал и чтобы иметь просто LinearLayout, а по смене категории удалять из него все вью и загружать необходимые. Думал впихнуть фрагменты, которые будут меняться, но мне нужно, чтобы эти фрагменты могли передавать нужные мне данные в родительский фрагмент

Результат ViewStub

29 ответов

28 просмотров

Сделай RecyclerView и под каждый блок сверстай макет и прикрепи в ViewHolder. Сохраняй поля в вьюмодельке. Думаю поможет

https://developer.android.com/training/improving-layouts/loading-ondemand Возможно это как-то поможет

Savva-Mirzoyan Автор вопроса
Vadim Dzhibalov
Сделай RecyclerView и под каждый блок сверстай мак...

Думаешь, делать ресайклер для 3 элементов, где каждый повторяется 1 раз? Ресайлер вью тогда вообще не использует свои настоящие функции переисползования вьюх

Savva-Mirzoyan Автор вопроса

Как по мне, это неправильное использование ресайклерВью

Savva Mirzoyan
Как по мне, это неправильное использование ресайкл...

а как по мне правильное. Хотя хз. Не нравится такое, что вообще все не влезло на екран и нужно еще скролить и это не список....

Savva-Mirzoyan Автор вопроса
Ярослав🇺🇦
а как по мне правильное. Хотя хз. Не нравится тако...

Вьюха большая и должна скролиться, но это не список, чтобы тащить сюда ресайклер или листвью

Ярослав🇺🇦
а как по мне правильное. Хотя хз. Не нравится тако...

Ну так я и говорю Scroll view Constraint layout И внутри него все вью добавлять и ни ни больше вложенности

George Levchenko
Ну так я и говорю Scroll view Constraint layout И...

это вообще самый адекватный вариант

George Levchenko
Ну так я и говорю Scroll view Constraint layout И...

да оно нифига не даст со стороны производительности когда много вьюх вообще на екране)

George Levchenko
Вложенность уберет и это добавит

я бы хотел увидеть такой хмл, сколько там строк будет)

Savva-Mirzoyan Автор вопроса

Добавил ViewStub. Ситуация стала совсем немного лучше, но задержка все равно заметна

Savva-Mirzoyan Автор вопроса

Опенсорс позволяет все :) Какой код конкретно, его там много

Savva Mirzoyan
Добавил ViewStub. Ситуация стала совсем немного лу...

Оптимизируй вёрстку, собери proguard версию, можно даже AsyncLayoutInflater попробовать заюзать

Savva-Mirzoyan Автор вопроса
George Levchenko
вёрстку

https://gist.github.com/savvasenok/6715fa0435d618e9f5cea5622d0eb268

Ilya
Оптимизируй вёрстку, собери proguard версию, можно...

так выше уже писали чтобы оптимизировал) И примерно каким способом

Savva-Mirzoyan Автор вопроса
Ilya
Оптимизируй вёрстку, собери proguard версию, можно...

Разве прогард помогает оптимизировать загрузку макетов?

Savva-Mirzoyan Автор вопроса
George Levchenko
так выше уже писали чтобы оптимизировал) И примерн...

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

Savva Mirzoyan
Разве прогард помогает оптимизировать загрузку мак...

Нет, но он в целом приложение делает быстрее

При том что в обсфусцированном приложении и не дебаг версии в целом всё быстрее работает, в том числе инфлейт

Savva Mirzoyan
Добавил ViewStub. Ситуация стала совсем немного лу...

В крайнем случае можно из кода сверстать или не удалять вьюху при закрытии вкладки)

Savva-Mirzoyan Автор вопроса
Ilya
При том что в обсфусцированном приложении и не деб...

Сомневаюсь, что сможет сократить время отрисовки с 700+мс до приемлимых для 60 фпс

Savva Mirzoyan
Сомневаюсь, что сможет сократить время отрисовки с...

отключённый дебаг априори ускоряет работу))

Savva Mirzoyan
Сомневаюсь, что сможет сократить время отрисовки с...

это не время отрисовки, это время на создание ui

Dmitriy
это не время отрисовки, это время на создание ui

вариантов два, создать ui заранее или упростить настолько чтоб он создавался быстрее

Savva Mirzoyan
https://gist.github.com/savvasenok/6715fa0435d618e...

Бро, у тебя вложенные линеар лейауты внутри скроллвью, ну это по стандарту будет очень напряжно работать, к тому я посмотрел видео процесса работы, там ещё все нормально))

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта