Всем привет! Насколько сейчас jetpack XML-ку заменяет? Просто посмотрел демки

— это прекрасно) Так ли на самом деле? Расскажите ещё пожалуйста про подводные камни

25 ответов

17 просмотров

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

Slava
This

это же следствие из композ-архитектуры, как я понял?

что хорошо с Jetpack Compose, это то что фреймворк совместим с View-системой, поэтому сложности подобные описанной Вячеславом решаются обычной оберткой android.view.View в androidx.compose.ui.viewinterop.AndroidView

Silent829
что хорошо с Jetpack Compose, это то что фреймворк...

Придется весь экран на вью держать в описанном мной сценарии. Не очень композ-вей.

Slava
Придется весь экран на вью держать в описанном мно...

Можно же тогда наоборот постепенно переносить части экрана из XML в компоуз с помощью ComposeView и постепенно прийдете к компоуз-вей)

Nikita Tipun
Можно же тогда наоборот постепенно переносить част...

Перечитайте, пожалуйста, ещё раз изначальное сообщение. Там описывается механика, которая в принципе отсутствует в композе из коробки, а именно - поиск заданных чайлдов в дереве и получение их параметров. Да, есть доступ к нодам, но там такие костыли придется воротить, что писать на композе вообще перехочется :)

Silent829
один экран это много?)

Вы уходите в демагогию. Человек задал вопрос о недостатках технологии, я привёл пример, когда на композе в принципе не реализуемо какое-то поведение. Да, это редкий сценарий, но конкретно в моём случае он аффектил три экрана: главный и два на самом популярном флоу в приложении. Но всё же отвечу: даже один экран может быть проблемой, потому что вам придется поддерживать две дизайн-системы в приложении. Т.е. каждая задача от дизайнеров будет в два раза сложнее, хоть доработка, хоть новый компонент.

Slava
Вы уходите в демагогию. Человек задал вопрос о нед...

эм, с каких пор у нас образуется две дизайн-системы?)

Silent829
эм, с каких пор у нас образуется две дизайн-систем...

Одна для композа, вторая - для обычных вью.

Slava
Перечитайте, пожалуйста, ещё раз изначальное сообщ...

А зачем искать чилдов - в идеологии композе - передавай в функции стайте для отрисовки нужного состояния.

Slava
Одна для композа, вторая - для обычных вью.

дизайнер формирует дизайн систему, это уже дело разработчика скармливать эту дизайн систему по-старому или по-новому. Композ позволяет скормить дизайн-систему по-старому из styles.xml

Макс
Да не все так просто.

какие сложности? забыл может

Макс
А зачем искать чилдов - в идеологии композе - пере...

Чтобы найти их расположение на экране, померить и уже на основе этого отрисовать оверлей. Речь о примерно таком функционале:

Silent829
дизайнер формирует дизайн систему, это уже дело ра...

Не все компоненты прописаны только в xml. Иногда вокруг материала пишутся врапперы. Условно есть инпут, а мы делаем компонент с двумя инпутами на строке, да ещё и иконочкой сбоку. И таких кастомных компонентов может быть несколько десятков.

Slava
Не все компоненты прописаны только в xml. Иногда в...

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

Slava
Чтобы найти их расположение на экране, померить и ...

так ты передаешь чтото типа Box{ if(viewstate.isShowSquareOverlay){ Overlay() } Square() }

Silent829
ну так это же дело разработчика сделать два таких ...

Извини, мне надоело тебе доказывать. У тебя есть точка зрения, и ты упорно её давишь, несмотря на приведённые аргументы.

Slava
Придется весь экран на вью держать в описанном мно...

Не помню, чтобы кто-то из гугл говорил, что композ-вей это иметь 100% кодовую базу UI на Jetpack Compose. Интероп есть. Гугл говорит используй столько, сколько хочешь.

Slava
Чтобы найти их расположение на экране, померить и ...

добавил простенький подобный туториал экран в свою демо аппку как пример как можно подобное делать на композе https://github.com/andkulikov/compose-photoapp/commit/0ce26695e7238185fb202f57ef323b50d4e5b96d

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

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

Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Карта сайта