Size: a a a

Android Dev Подкаст

2019 July 09

AK

Andrey Kulikov in Android Dev Подкаст
Igor
Все таки они не раскрыли, как они сейчас делают measure/layout.
И почему у них глубокие иерархии нe тормозят, а в старом проходе все так плохо, что затащили iOS констрейнты.
на данный момент вся compose иерархия это одна андроид вью. measure логика всех compose компонентов сохраняется как лямбды для ленивого вычисления, потом когда нам нужно посчитать размер нашей единственной android view все эти лямбды вычисляются, запоминаются расчитанные размеры, в следующий раз когда что то изменится будут пересчитаны только те компоненты, которые изменились, или изменился доступный для них размер. то есть на данный момент это одна вьюха с легкими абстракциями для measure и кешированным результатом. в дальнейшем мы теоретически можем перенести эти расчеты на другой тред без изменения апи, но прямо сейчас все на одном потоке. будем изучать что работает лучше и пробовать разные подходы
источник

I

Igor in Android Dev Подкаст
Andrey Kulikov
на данный момент вся compose иерархия это одна андроид вью. measure логика всех compose компонентов сохраняется как лямбды для ленивого вычисления, потом когда нам нужно посчитать размер нашей единственной android view все эти лямбды вычисляются, запоминаются расчитанные размеры, в следующий раз когда что то изменится будут пересчитаны только те компоненты, которые изменились, или изменился доступный для них размер. то есть на данный момент это одна вьюха с легкими абстракциями для measure и кешированным результатом. в дальнейшем мы теоретически можем перенести эти расчеты на другой тред без изменения апи, но прямо сейчас все на одном потоке. будем изучать что работает лучше и пробовать разные подходы
Я же правильно понял, что у вас вместо flex используется подход флатера с декарированием/вкладыванием?
источник

AK

Andrey Kulikov in Android Dev Подкаст
нужно вкладывать, да. например чтобы поместить два элемента горизонтально вкладываем в Row. есть FlexRow, который позволяет сделать аналогичное LinearLayout с весами
источник

I

Igor in Android Dev Подкаст
Andrey Kulikov
нужно вкладывать, да. например чтобы поместить два элемента горизонтально вкладываем в Row. есть FlexRow, который позволяет сделать аналогичное LinearLayout с весами
А можно будет отказаться от плагина, если я захочу руками все в emit заворачивать?
Или к примеру решу сам генерит UI в рантайме по данным с сервера? backend driven UI)
источник

AK

Andrey Kulikov in Android Dev Подкаст
нельзя будет отказаться. но будет легко написать парсер модели с сервера который эммитит нужные элементы на основе пришедшей модели простыми if/when блоками
источник

I

Igor in Android Dev Подкаст
Блин, if/else/when это слишком ограничено.
Хочется произвольную иерархию виджетов, иначе смысла в backend driven никакого.
источник

AK

Andrey Kulikov in Android Dev Подкаст
я не вижу чем это ограничивает. прямо код с сервера нельзя прислать, потому что его все равно нужно будет компилировать, но можно сделать конечное количество переиспользуемых компонент и подставлять нужное куда потребуется в соответствии с тем что пришло с сервера
источник

AK

Andrey Kulikov in Android Dev Подкаст
например в теории можно будет передавать с сервера свг и на клиенте его разбирать и представлять в виде compose совместимого vector drawable
источник

I

Igor in Android Dev Подкаст
Хм, понятно что нечего не понятно) но всё-таки, как и Артем выражу недовольствие в обязательности плагина компилятора.

Который по сути является расширением языка (как тот же suspend) и может интерферировать со всеми существующими и бушующими фичи/тулингои языка (а сейчас он вроде и suspend не поддерживает)
источник

ST

Sasha Tainyuk in Android Dev Подкаст
Неужели у нас будет нормальный блюр? 🤔
источник

Sergey λ in Android Dev Подкаст
надеюсь нет ) самый бесполезный и жрущий ресурсы эффект 🌝
источник

ST

Sasha Tainyuk in Android Dev Подкаст
Sergey λ
надеюсь нет ) самый бесполезный и жрущий ресурсы эффект 🌝
ну, судя по BlurStyle,  то да.))
источник

D

Dmitry in Android Dev Подкаст
Sasha Tainyuk
Неужели у нас будет нормальный блюр? 🤔
С чего бы? Блюр в гпу упирается.
источник

ST

Sasha Tainyuk in Android Dev Подкаст
Dmitry
С чего бы? Блюр в гпу упирается.
ну мало ли.)
источник

D

Dmitry in Android Dev Подкаст
Как сможем ожидать вменяемого гпу даже на африканских android one - так и блюр можно будет ждать. То что не исключено, но к топику вроде как не относится.
источник
2019 July 10

K

Kopusha in Android Dev Подкаст
какие именно преимущества у flex подхода, против иерархии для server driven? У Spotify вроде есть их GLUE и у airbnb своя поделка, и там и там приходит кастомный протокол описания UI, который парсится на клиенте. GLUE точно иерархичный, должен хорошо лечь на Compose.
источник

K

Kopusha in Android Dev Подкаст
(GLUE они представили в 2014-м и до сегодняшнего дня у них только 5% UI server driven. Сильно так бежать перенимать, наверное, не стоит)
источник

DE

Denis Egorov in Android Dev Подкаст
Andrey Kulikov
на данный момент вся compose иерархия это одна андроид вью. measure логика всех compose компонентов сохраняется как лямбды для ленивого вычисления, потом когда нам нужно посчитать размер нашей единственной android view все эти лямбды вычисляются, запоминаются расчитанные размеры, в следующий раз когда что то изменится будут пересчитаны только те компоненты, которые изменились, или изменился доступный для них размер. то есть на данный момент это одна вьюха с легкими абстракциями для measure и кешированным результатом. в дальнейшем мы теоретически можем перенести эти расчеты на другой тред без изменения апи, но прямо сейчас все на одном потоке. будем изучать что работает лучше и пробовать разные подходы
А как будет готовиться кадр? Я правильно понял, что вы ушли от DisplayList и сами рулите буффером для кадра?
источник

AK

Andrey Kulikov in Android Dev Подкаст
Denis Egorov
А как будет готовиться кадр? Я правильно понял, что вы ушли от DisplayList и сами рулите буффером для кадра?
на данный момент для каждого рисующего компонента не создаётся своего RenderNode, как делает каждый View, мы можем это изменить в будущем. прямо сейчас у нас есть специальный компонент RepaintBoundary. все, что будет в него обернуто, будет сначала отрисовано в RenderNode буфер. например его будем использовать в подобном ScrollView компоненте чтобы при скролле просто сдвигать RenderNode вместо того чтобы перерисовывать весь контент
источник
2019 July 11

AS

Anton Shkurenko ⚜️ in Android Dev Подкаст
Всем привет, такой вопрос, я не помню, чтоб в подкасте обсуждалось, но может есть где-то, подскажите какие-то паттерны для фича тогглов, очевидные вещи, которые напрашиваются: иф-елс, ну или убер рибы, которые по ключу подключаются, и если первое слишком уж, то второе достаточно громздкое и не всех сейчас убедить те же рибы использовать, может есть что-то похожее? Общепринятые практики какие-то
источник