Тёмный

Jetpack Compose - будущее Android UI и убийца Fragment 

Android Broadcast. Все об Андроид разработке
Просмотров 37 тыс.
50% 1

Из видео вы узнаете как Jetpack Compose изменит написание UI в Android и на других платформах, как он убьёт Fragment и новые подходы в разработке после прихода Compose
🔗 AvitoTech avito.tech/
🔗 Поддержать проект taplink.cc/android_broadcast/...
🔗 Каналы "Android Broadcast" taplink.cc/android_broadcast
0:00 Вступление
0:33 План доклада
1:21 Старый Android UI
2:40 Лучший Layout
3:00 Как реализовать список
3:56 Custom View
5:15 Особенности UI на Android View
6:43 Декларативный UI
7:06 Jetpack Compose
8:46 Концепции Jetpack Compose
10:13 Как Compose решил проблем View
11:03 Compose. Динамический контент
11:36 Compose. Интерактивное превью в Android Studio
12:43 Списки в Compose
13:30 Compose Multiplatform
15:30 Производительность Compose
16:03 Compose убьёт Fragment
18:10 Библиотеки с поддержкой Compose
18:39 Минусы Compose
20:41 Преимущества Compose
21:51 Пора попробовать Compose в Production
22:36 Заключение
#AndroidBroadcast #Compose #JetpackCompose #Fragment #android

Опубликовано:

 

26 май 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 230   
@AndroidBroadcast
@AndroidBroadcast 2 года назад
🔗 Avito.Tech avito.tech/ 💰 Поддержать проект на Boosty bit.ly/3sratqQ или Patreon patreon.com/android_broadcast 🔗 Telegram канал "Android Broadcast" ttttt.me/android_broadcast
@user-zt1hn9nc8w
@user-zt1hn9nc8w 2 года назад
0ке
@vladk3524
@vladk3524 2 года назад
Дождался) Жду гайдов. Особенно интересно как анимировать все. Спасибо!
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Часть анимаций была значительно упрощена, но вот жду появления MotionLayout для Compose.
@maksonic_official
@maksonic_official 2 года назад
@@AndroidBroadcast во во) это была моя первая мысль, что будет с моушн лейаут, ведь штука годная!
@AndroidBroadcast
@AndroidBroadcast 2 года назад
@@maksonic_official Основная ее ценность - визуальный редактор анимаций. Без него библиотека просто еще один способ работы с анимацией в Android
@maksonic_official
@maksonic_official 2 года назад
@@AndroidBroadcast я всегда моушн сцену создавал через xml, точнее описывал поведение анимации, через дизайн только смотрел как анимация работает) не знал что и через дизайн можно создавать анимации) в любом случае motion layout очень полезная вещь!
@Chekist2008
@Chekist2008 2 года назад
Как всегда круто и максимально информативно! Спасибо!
@alexandersafonov3350
@alexandersafonov3350 2 года назад
Комментарий в поддержку канала Поставил в своём проетке api 21 (повысил с 16 версии) и теперь пробую Compose для простых экранов, пока что очень нравится.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Потом и уходить не захочется!
@user-cs4dl3kk8r
@user-cs4dl3kk8r 2 года назад
Спасибо за выпуск . Очень жду видео про него
@ankudinova
@ankudinova 2 года назад
очень интересно, спасибо 🙏💕
@ch1pkavarenychenko84
@ch1pkavarenychenko84 2 года назад
как всегда отличная подача информации, ждём больше видео по композ🔥👍
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Будет, только надо самому начать туда погружаться
@dmytromarchuk3023
@dmytromarchuk3023 2 года назад
Отличнейшее видео. Кратко, по сути. Идеально. Спасибо!
@vasyavasya6823
@vasyavasya6823 2 года назад
Благодарю за отличный, современный контент !)
@heroachilles
@heroachilles 2 года назад
Очень интересный контент! Спасибо.
@user-si5qp1yc9k
@user-si5qp1yc9k 2 года назад
Супер. Спасибо!
@Espanamia
@Espanamia 2 года назад
спасибо, лайк!
@ilyaponomarenko5354
@ilyaponomarenko5354 2 года назад
Отличный выпуск! Спасибо :)
@AndroidBroadcast
@AndroidBroadcast 2 года назад
И вам спасибо, что не прошли мимо и оставили комментарий
@user-mk3tm1cc4y
@user-mk3tm1cc4y 2 года назад
Здравствуйте! Очень странный вопрос, а где Вы нашли этот флажок Котлин, который на заднем плане?))
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Его раздавала JB как мерч свои Kotlin User Groupd и на конференциях давали
@deadchannal
@deadchannal 2 года назад
Круто!
@Andoctorey
@Andoctorey 2 года назад
Спасибо! 🔥
@renatkhakimov5378
@renatkhakimov5378 2 года назад
Спасибо большое за работу, благодаря Вам в первую очередь обратил внимание на android. Написал первое приложения на классическом view, если так можно выразиться. Подскажите, если не затруднит, извините заранее за возможно нубский вопрос. На compose уже можно смело писать приложения для android ? Я имею ввиду нет ли проблем корректной работой compose с другими инструментами экосистемы Аndroid, или может есть подводные камни ? Из видео мне лично показалось, что это уже по настоящему production решение.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Костяк инструментов работает без проблем, но есть то что может отставать по продвинутым возможностя. Если вы только начинаете, я рекомендую вам разобраться в старой системе и потом уже браться за новую, но просто потрогать точно стоит чтобы увидеть как поменялась система. P.S. надеюсь вы рады своему выбору Android
@renatkhakimov5378
@renatkhakimov5378 2 года назад
Кирилл, спасибо большое за ответ
@renatkhakimov5378
@renatkhakimov5378 2 года назад
Да, android класс, хорошо, что увидел ваш канал, приложение под andoid я писал быстрее, чем для ios. Экосистема android мне показалось более понятной и понравилась больше. Еще больше мне нравится идея фулстека, но пока делать решил упор больше на какую-то одну платформу)
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Верно. На старте надо окрепнуть в одной технологии и уже затем смотреть по сторонам. Так и проще будет разбираться, особенно если первой технологией получится зарабатывать на жизнь
@vladislavm2447
@vladislavm2447 2 года назад
Спасибо за ваши видео Кирилл - интересно\полезно! Может подскажете - какой ни будь (лучше какие то) хороший средне\большой проект с открытым исходным кодом где вью на Compose. Очень интересно как влияет на архитектуру, какую делают структуру каталогов… Также если бы было с удовольствием посмотрел бы видео с разбором
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Стандартные примеры Compose. Ещё посмотри TiVi
@vladislavm2447
@vladislavm2447 Год назад
Спасибо! просмотрю@@AndroidBroadcast
@beginnercoding1089
@beginnercoding1089 2 года назад
Кирилл, благодарю за качественный контент! Не могу понять почему у Вас так мало просмотров. У Вас отличные видео. Продолжайте в том же духе)
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Малая ниша, поэтому всегда будет так. Со временем придут новые и просмотры вырастут. Спасибо за поддержку
@user-hr2dk6jy1k
@user-hr2dk6jy1k 2 года назад
Так то xml это максимальная декларативность - там надо потрудится чтобы всунуть императив. Пример с каунтером как я понял так же "устанавливает атрибуту text тек значение каунтера" или это не изменение стейта, а своего рода связывание? То что из коробки можно прям в ide "тестить" представление в связке с логикой(обработки событий) скорее всего останется невостребованной так как это тестирование сломается на первом же обращении к серверу или каком то композите который включает в себя чуть больше чем 1 текстовое поле и 2 кнопки. разрабы чаще всего будут продолжать "экономить" на создании инструментов тестирования разрабатываемого функционала чтобы при разработке можно было в несколько инструкций создавать фейковые состояния для проверки своего представления(под разные разрешения, с в разных позициях и прочее)... Кто вот прям сейчас работая в "паттерне" mvvm мешает создать тестовый билдер для подделки контракта viewmodel и проверить в досконально все интересующие вариации рендеринга разрабатываемой view? При этом технической проблемы в этом нет - сама студия как раз отлично этим пользуется для первичного превью при создании так надоевшего xml. Так же никто не мешает прям сейчас сделать фейковые реализации всяких репозиториев и прочего DAL, с удобным API первичной инициализации оптимизированного под удобную инициализацию тестовыми данными. Это даст возможность не переходя на специальные технологии оттестить в изолированном окружении вьюху вместе с состоянием презентационного слоя(view + viewmodel). те самые щелчки на + и -, только не прям из idea, а запустив разрабатываемое activity в фейковыми зависимостями. Но полагаю что все эти возможности остаются только в виде потенциальных из-за "экономии". ведь зачем писать лишний код, его же надо поддерживать, а у нас не такое сложное приложение, и времени на это нет - нам бы очередную фичу запилить нащелкивая в ui и в лучшем случае постоянно подкручивая заглушки в какой нить WireMock, SoapUI или своего очень обобщённого велосипеда
@dmitriymitroshin7525
@dmitriymitroshin7525 2 года назад
Спасибо большое. Интересно, что там с диалогами и ботомшитами.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
BottomSheet уже поддерживает из коробки, как и диалоги
@d.mertsalov
@d.mertsalov 2 года назад
Спасибо!
@user-em5jw6zv6n
@user-em5jw6zv6n 2 года назад
Через годик можно будет пробовать:)
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Можно уже смело тянуть в прод
@user-oc7py1vy6s
@user-oc7py1vy6s 2 года назад
Что по кнопке платного комментария? Почему на твоём канале её нет? Хочется протестировать её на твоём канале. Про бусти, патреоны знаю, но я хочу кнопку.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Я не могу включить монетизацию, так как Google не присылает мне письмо с проверкой физического адреса. Так что грустно ( Да и комиссия там конская - 30% + за вывод. Хочешь поддержать - воспользуйся donate.stream/android_broadcast
@vitalyzolkin5046
@vitalyzolkin5046 2 года назад
На новом проекте начали использовать Compose. Это можно сравнить как пересесть с Java на Kotlin. Прикольные анимации можно делать в 100 строк кода )
@AndroidBroadcast
@AndroidBroadcast 2 года назад
100 строк я считаю много. Хочется компактнее, хотя зависит от сложности хореографии элементов
@vitalyzolkin5046
@vitalyzolkin5046 2 года назад
@@AndroidBroadcast возможно можно будет оптимизировать, но все равно гораздо проще чем по старинке ☺️
@st.libertos
@st.libertos 2 года назад
Открыл для себя ваш канал, всё круто!
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Как нашел? Знакомые, реклама или поиск ?
@st.libertos
@st.libertos 2 года назад
Просто рекомендации. Как раз учил фрагменты (я новачок) и тут "Убийца Fragment" 👍
@robin839168
@robin839168 2 года назад
Про Recycler мега круто
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Там не всё так радужно, но самая обычная реализация делается в разы быстрее
@user-hp2yi9yy3x
@user-hp2yi9yy3x 2 года назад
Большое спасибо за овервью
@illyaevseev312
@illyaevseev312 2 года назад
Видео зацепило названием. Хоть сразу и было понятно, что у этого убийцы пока силенок маловато что бы просто заменить все, что уже есть, но все-же любопытство взяло верх. Лично мне Compose импонирует. Даже несмотря на все имеющиеся косяки на сегодняшний день. Да и простота того же lazyColumn подкупает. И на простых примерах все работает отлично. Но как часто мы сталкивается с простыми случаями? Обычно это ежик с id-шниками, в который входят другие ежики со своими зависимостями и все это нужно динамически подгружать. И хорошо если с бэкэндом все замечательно. А если нет? И вот тут уже простой пример вдруг превращается в не очень-то и понятного монстра. И, заметьте, это не самый сложный случай.
@backoff6776
@backoff6776 Год назад
1. Ежик с IDшками ушел в туман с распостранением ViewBinding. 2. От чего помимо Presenter, или VM еще должен быть зависим ежик с ID-шками? Если на практике у вас имплементация БЭ влияет на View - возможно, вам стоит освежить в памяти SOLID.
@illyaevseev312
@illyaevseev312 Год назад
@@backoff6776 Вы абсолютно ничего не поняли. Давайте на примере. Вам нужно показать список фирм-клиентов. Для каждой фирмы дополнительно нужно отображать менеджера со стороны компании и менеджера компании помимо других полей. Так же для каждого из менеджеров нужно получить его состояние на SIP сервере и аватар. Т.е. у клиента есть managerId, а у менеджера есть avatarId. Пользователь приложения в настройках указывает какие поля нужно отображать и в каком порядке для каждого из типов фирм-клиентов. И теперь самое вкусное. Фирм-клиентов десятки тысяч. Как несложно понять загрузить все на телефон это отельная непростая задача. Поэтому это сразу отпадает. Только тотальная динамическая подгрузка маленькими порциями в зависимости от того, что отображается в конкретный момент времени. Любое изменение тут-же приводит к перестроению списка. И если все сделать по-простому, то анимация хорошо если вообще когда-то закончится. А ведь есть еще поиск и фильтрация. Как без них если элементов много? И по хорошему нужно не просто показать то, что нашел, а как-то выделить текст из-за которого сейчас каждый из элементов отображается.
@backoff6776
@backoff6776 Год назад
​@@illyaevseev312 , окей, допустим. Не понял, как это: "отображать менеджера со стороны компании и менеджера компании". Я не большой спец в классификации менеджеров. Это очепятка, или два разных человека?) Исходя из задачи, у меня будет несколько задействованных Getaway: - REST сервер - SIP сервер - SPrefs 1. Fragment подписывается на VM. Вот здесь момент: мой это проект, или коммерческий? Если коммерческий - ViewModel будет содержать LiveData, который будет излучать полный(на текущий момент) список клиентов, который с помощью DiffUtils будет скармливаться адаптеру. Так бысттрее. Если это мой проект - я буду играться с обновлением списка сам, т.к. мне не нравится идея сравнивать изменения внутри вью. Во фрагменте к списку прикручена прослушка scrollLIstener. Когда позиция N становится видимой - Fragment дергает вью-модель: loadNext(). Упустим обработку ошибки, лоадера. В VM есть соответствующие LiveData и фрагмент на них подписан. Все. Помимо VM никаких других зависимостей у фрагмента нет. Ну может быть еще фрагмент контейнера, если мы используем SharedLiveData для передачи внешнего VM вложенным вьюшкам. 2. VM имеет зависимость от UseCase(или Repository, или где мы там Bussines Logic обрабатываем), возможно каких-нибудь мапперов и прочей вспомагательной мишуры. В loadClients VM запускает соответстующий UseCase(допустим, у нас UseCase-ы), меняет свое состояние и подписывается на результат. 3. Use case идет на SIPGateway, потом параллельно на REST и в SPrefs. Полученные результаты агрегируются в соответствующий DTO и отправляются, как результат, в обсервер, переданный View-моделью. 4. Вью модель получает опповещение о новой порции данных и обновляет LiveData. Fragment получает новый список и отдает его в адаптер через DiffUtil. Список обновляется. По тому же принципу через соответствующие UseCase ViewModel подписывается на изменения на стороне SIP сервера и изменения настроек в SPrefs. При получении оповещения от них, LiveData так же обновляется, adapter рендерит соответствующий ViewHolder в зависимости от настроек и усттанавливает состояние клиента на SIP сервере. Вроде все. Тут задача скорее объемная, чем сложная. Ах да и аватарка грузиться каким-нибудь Glide, или Picasso. Вот тут возникает та же архитектурная лажа, что c DiffUtil(а именно запрос изображения самой на стороне View, ее кеширование, обработка результата и т.д. в обход бизнесс логики приложения), но опять же.. это реалии дроид разработки. В пет-проекте, я бы отказался от Glide, или пробовал бы использовать его в Geteway, но в коммерческой разработке поступил бы стандартно. Вроде все. Fragment не зависит не от чего кроме VM и утилит типа Glide, DiffUtil, данные во вью обновляются ViewBinding.. Никаких ежиков. Никакихлишних зависимостей кроме вышеупомянутых библиотек. Вроде все. Где я неправ?
@illyaevseev312
@illyaevseev312 Год назад
@@backoff6776 Ну не поняли о чем я хотел сказать так не поняли.
@backoff6776
@backoff6776 Год назад
@@illyaevseev312 , ну да. Видимо я что-то не понял в указанном примере. Потому собсно я и спросил: "где я неправ?". Не вижу связи между описанной задачей и необходимостью клепать елки из ID-шек, или скармливать множество зависимостей фрагменту(активности). ID-шки останутся под капотом ViewBinder, а вью будет зависима только от ViewModel, утилит и, возможно внешней вью-модели контейнера. Какая бы крививая не была реализация БЭ, все необходимые костыли будут спрятаны в реализации Gateway, за фасадом и вью слою будет вообще на них плевать. Сложность агрегирования ответтов от разных серверов и синхронизации запросов будет инкапсулирована в UseCase и тоже закрыта за фасадом: OutPort. В чем собсно беда, которую я не учел?
@miralirafiyev4646
@miralirafiyev4646 2 года назад
На мой взгляд слишком похожий на react Composable - это компонент который рисует ui Можно пасавать пропсы между компонентами У каждого компонента свой стейт или общий у родителя Ну блин язык Kotlin а дальше react =) Круто, и автору огромное спасибо!
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Это общее движение разработки UI в приложениях, поэтому и языки адаптируются. Как и фреймворки. Задача языка - позволять эффективно решать задачи разработчиков на нем
@coffemilk652
@coffemilk652 Год назад
У меня вопрос насчет существующего приложения, хотелось бы новые экраны уже описывать компосом, прочитал что есть MdcTheme, вопрос как долго он будет существовать и поддерживаться? У нас проект крупный, и быстро перевести все невозможно
@AndroidBroadcast
@AndroidBroadcast Год назад
Думаю достаточно пока актуальна View, а это ещё долгие годы
@user-ko7jw2ru3y
@user-ko7jw2ru3y 2 года назад
Спасибо
@user-hq7yk6gj1p
@user-hq7yk6gj1p 2 года назад
28 июля произошло 2 великих события - я родился и вышел stable jetpack compose
@user-ro2ny8ux3g
@user-ro2ny8ux3g 2 года назад
познавательно)
@igoryazovtsev942
@igoryazovtsev942 2 года назад
Спасибо за видео :) Compose лучше использовать в новых проектах, а старые делать по старинке, иначе со временем будет каша
@RomanTokarenko
@RomanTokarenko 2 года назад
Если модульность занесена, можно новые фичи на композе пробовать писать
@user-pg5cc2kf9z
@user-pg5cc2kf9z Год назад
если я правильно понял то котлин это просто "обёртка" для явы? код на котлине преобразуется в код на яве и выполняется? нафига оно надо, не проще ли без посредников обойтись..
@AndroidBroadcast
@AndroidBroadcast Год назад
Не так.Java и Kotlin компилируются в байт-код, только kapt генериь Java классы для совместимости с Java Annotation Processing
@rewegate
@rewegate 2 года назад
А что с Flutter? Пишу на нем больше года, все устраивает кроме запоздалых обновлений UI виджетов. С выходом Compose задумался, стоит ли полностью перейти с Flutter на него. Flutter - тоже проект Гугла, получается некая конкуренция внутри компании. Есть страх, что Flutter закроют и сосредоточатся на Compose. Есть мысли на этот счёт?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Jetpck Compose - решение чисто для Android. Compose Multiplatform делает JetBrains и вот это уже угроза Flutter
@atamyratbabayev9295
@atamyratbabayev9295 2 года назад
Мне кажется, что Flutter в ближайшем времени закрывать не собираются, почитайте про фуксию (если фуксия, как система будет жива) . Также у Flutter быстрорастущая комьюнити, так как Dart имеет низкий порог входа, в принципе как и у Flutter. Кроме того, Flutter активно развивается, да достаточно полазить на их канале.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Flutter уже занял свои нишу и растет. Будущее точно есть, но какой объем узнаем только ты будущем
@MS-xz4yk
@MS-xz4yk Год назад
молодец обзорчик зачетный
@GarcianSmt
@GarcianSmt 2 года назад
Классный мерч!)
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Жду не дождусь уже дать вам возможность заполучить его себе
@bolnoi8
@bolnoi8 2 года назад
Как по мне, компоуз ещё сыроват, хотя на реддите говорят что уже используют в продакшене. Список строится круто (Про repeat, кстати, не знал, делал через for), но когда я его трогал мне показалось, что он подлагивал. Из плюшек - стики хидер из коробки. Ну и теперь нам нужна новая архитектура, новые подходы, новый способ взаимодействия с DI фреймворками, нужен ли нам теперь ViewModel в принципе и т.д.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
В первых Beta было ещё не очень, но стал лучше к релизу
@AndroidBroadcast
@AndroidBroadcast 2 года назад
MVVM вполне жизнеспособен
@jojomajo
@jojomajo 2 года назад
круть
@luckystrike91
@luckystrike91 2 года назад
меня очень сильно смущает все эти магические аннотации в котлине... да сам по себе view очень жирный класс, но зато я в любой момент могу открыть исходники и понять , что там и как работает. это касается и короутин. не нравится мне эта тенденция... в любом случае кастомные вью писать надо будет всегда, и насколько легко (и вообще возможно ли??) это сделать на компоуз? очень много вопросов.
@dmitriismirnov6769
@dmitriismirnov6769 2 года назад
в любой момент открыть исходники и изучить 30000 строк вью и наследников с делегатами по цепочке?)) а насчёт кастом вью Кирилл упомянул - все стало только проще
@luckystrike91
@luckystrike91 2 года назад
@@dmitriismirnov6769 да, приходилось не раз ковырять исходники когда кастомные вью писал. конечно прям изучить в любой момент не получится, но в иде найти методы, которые тебе нужны и посмотреть логику достаточно легко. чего не скажешь о компиляторе и куче вспомогательных костылей вокруг него.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Даже сейчас можно посмотреть и увидеть как рисуются компоненты, фактически от нас спрятали механизм обновления UI в зависимости от состояния
@Polite_person_
@Polite_person_ Год назад
С момента выхода видео прошло немало времени, что думаешь о компоуз сейчас? На сколько он стал востребован, на сколько стал стабильнее и много ли проблем еще нужно решить? По моим личным опросам, кто-то пробует переписывать отдельные экраны на него, но никто не стартует с ним с нуля. Создается ощущения что сейчас в 2023 он еще сыроват, а все хотят стабильности, и судя по вакансиям спроса на эту технологию на рынке практически нет, но всем интересно.
@AndroidBroadcast
@AndroidBroadcast Год назад
Все стало лучше, много приложений написали с нуля, а другие перешли. Программисты с кривыми руками всегда жалуются и не хотят ничего не учить
@Polite_person_
@Polite_person_ Год назад
​@@AndroidBroadcast Думаю да, многие не хотят перестраиваться и много староверов с джавой, которых не загонишь на компоуз. И конечно тонны приложений уже готовых нужно поддерживать.
@zaur4094
@zaur4094 Год назад
@@Polite_person_ а зачем переписывать с Java если все работает, DI настроен, чистая архитектура грамотно спроектирована? Все приложение оттестировано вдоль и поперек, таски выполняются.... Никакое руководство не даст времени и старт на переписывание. Я в продуктовой компании, вот какие аргументы для менеджера и тех директора предоставить?)
@Polite_person_
@Polite_person_ Год назад
@@zaur4094 Я имел ввиду, что есть кто до сих пор стартует на Java.
@user-qx1mz8wf2d
@user-qx1mz8wf2d Год назад
Как я понял compose актуален для тех, кто массово разрабатывает прилы на аутсорсе (скорость разработки). А если я работаю над одним проектом, какой в нем смысл?
@AndroidBroadcast
@AndroidBroadcast Год назад
Вам не важна скорость разработки даже для одного проекта? Вопрос в том что за единицу времени вы доставите больше фичей пользователю
@1nCube
@1nCube 2 года назад
А нормальное кастом вью на нем реально сделать или нет?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Да, есть доступ к Canvas и обработки разных событий. Всё компоненты сейчас так сделаны
@user-ji7xx4nk2b
@user-ji7xx4nk2b 2 года назад
Вот будет реализация под ios, тогда и поговорим про кроссплатформенность.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Зачем думать о Compose только как мультиплатформенном решение для iOS и Android? К SwiftUI те же требования?
@paulsoja2732
@paulsoja2732 2 года назад
так что, компоуз функции таки с большой буквы писать?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Да
@sergey30027
@sergey30027 2 года назад
надеюсь виджеты будут добавлять так же как команда флаттера
@AndroidBroadcast
@AndroidBroadcast 2 года назад
В Roadmap поддержка Material You и виджетов один из основных пунктов
@Bleser022
@Bleser022 2 года назад
А чего так редко зум меняется? Сделал бы изменение зума каждую секунду.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Я был молод и неопытен, не судите строго ведь я не профессионал съемки и монтажа
@shibabasensei6219
@shibabasensei6219 2 года назад
мы уже используем
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Кто мы? Что за продукт и приложение?
@user-rx4vz7cb5w
@user-rx4vz7cb5w 2 года назад
С realtime preview все очень плохо?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Что именно вы подразумеваете под этим? Интерактивные режим (можно нажимать на кнопки) или статический предпросмотр Compostable функций?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Я не поучаствовал проблем со статикой в превью, а вот интерактивный режим ещё требует доработки
@johnsnow4108
@johnsnow4108 2 года назад
до начала 2021 года поддерживал минимальное апи 15, но позже понял, что смысла уже особого нету, надеюсь compose решит многие проблемы)
@AndroidBroadcast
@AndroidBroadcast 2 года назад
По статистике GP уже мало смысла имеет поддерживать что-то ниже 6.0
@voicetv9048
@voicetv9048 2 года назад
@@AndroidBroadcast Согласен, не думаю что остались люди использующие андроид
@user-zd2ee2jt3u
@user-zd2ee2jt3u 2 года назад
Кирилл, большое спасибо! К Compose присматривался давно, после просмотра этого видео сразу, вот прямо сейчас, опробую его в пет проекте. Есть, конечно, вопросы/сомнения, как это взлетит на сложных списках со множественными типами айтемов, а также придется еще перенастроить мозги в плане отказа от фрагментов (SingleActivity, Navigation), может ты уже опробовал на практике подобное решение?
@dmitriismirnov6769
@dmitriismirnov6769 2 года назад
Взлетит отлично - код станет проще и понятнее.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Я попробовал его немного, но планирую писать на нём полностью проект и показывать вам результаты
@sergeyo.1512
@sergeyo.1512 2 года назад
Кажется что лучшим решением был бы flutter на kotlin , остальное в топку )
@dmitrymukhin9050
@dmitrymukhin9050 2 года назад
Все еще нужно достаточно много RAM для нормальной работы превью (на моем стареньком маке так и не запустилось)
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Да, жду Mac на ARM и вкачать туда 32 гига оперативывы
@paulsoja2732
@paulsoja2732 2 года назад
как по мне, то еще рано в прод заводить компоуз. Может разве что какие-то отдельные скрины, но полностью пилить апку на компоузе я бы не рисковал прямо сейчас. Периодически мониторю примеры приложений на компоузе и очень всё неаккуратно написано. Нету каких-то красивых подходов. Потому подожду еще наверное годик, пока всё устаканится. А если в нынешнем виде так и останется, то уж лучше компоуз вообще не взлетел.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Какие критерии принятия решения в прод?
@paulsoja2732
@paulsoja2732 2 года назад
@@AndroidBroadcast как минимум сейчас не найдешь специалистов на рынке, которые уже умеют в компоуз. То есть уже надо людям дать время на изучение. Дальше - это всякие тулзы и апдейты. Я уверен, что хоть глобальных изменений в компоузе уже не будет, но всё же куча мелочей еще изменится. Ну и компоух хоть и релизнулся, но тот же констрейнт с ним еще не в релизе. Так что по моим планам - до следующего лета я на компоуз не перейду. PS. Попробовал немного компоуз в пет проекте - много вопросов по читабильности кода. В гитхабе смотришь примеры проектов и вообще не понимаешь что сверстано на экране. Приходится грузить проект и в студии в превью уже смотреть.
@sozdanie-saytov
@sozdanie-saytov 2 года назад
Не доверяю flatter потому что над ним работает Google. А вот там где есть помощь от JetBrains больше шансов на успех.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
В чём именно выражает недоверие к Google?
@badadinfanti4553
@badadinfanti4553 2 года назад
Кирилл, ты же говорил, что больше не планируешь работать на дядю? А в этом видео сказал, что работаешь в Surf 🤨🤔
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Я не планировал возвращаться работать в программирование. В Surf я занимаюсь тех. пиаром и это вынужденный компромисс из-за интересной задачи в компании для меня как специалиста по личному бренду, так и финансова сторона вопроса играет важную роль.
@Chernov1984
@Chernov1984 2 года назад
+
@channelsecondname
@channelsecondname Год назад
Не знаю как будет с гуглом, но с эплом я попал в задницу с их свифтюай. Много багов, которые появлялись когда юзер обновлял айос. С каждым выходом новой версии айос мне приходилось в горячке быстро создавать кучу костылей. После этого вернулся к сторибордам и пока не желею. Сырой еще свифтюай. Теперь боюсь использовать компоуз. Подожду еще годика 3...
@AndroidBroadcast
@AndroidBroadcast Год назад
Плюс Compose - это отдельная библиотека и не привязки к релизу платформы. Исправление багов и улучшений доставляются всем
@channelsecondname
@channelsecondname Год назад
@@AndroidBroadcast Спасибо за информацию
@SivkaDaBurka
@SivkaDaBurka 2 года назад
Почему же compose не нативный? На главной странице написано "Jetpack Compose is Android’s modern toolkit for building native UI."
@SivkaDaBurka
@SivkaDaBurka 2 года назад
Да и вообще что такое нативное? Для меня нативное - это то, что оптимизируется и затачивается под определенную платформу для большего быстродействия и стабильности. Т.е. флаттер не нативный, т.к. он про многоплатформенность и разработчикам приходится искать компромиссы. А вот компоуз вроде пока не лезет в другие платформы, значит затачивается чисто под андроид и является нативным. Или я не прав?
@AndroidBroadcast
@AndroidBroadcast 2 года назад
По мне нативный - это Android View, которые часть системы. Вот Compose повторяет их внешний вид и где-то расходится
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Compose - официально мультиплатформенное решение, поддерживающее Desktop, Android, Web
@voicetv9048
@voicetv9048 Год назад
Обидно конечно,😌 не успеваешь выучить существующие подходы и технологии и БАТС новая технология, новые прицепы, другая архитектура и другие паттерны 😏
@AndroidBroadcast
@AndroidBroadcast Год назад
Программирование всегда было про то что постоянно надо учиться, расширять взгляды и применять новые популярные подходы
@voicetv9048
@voicetv9048 Год назад
@@AndroidBroadcast В этом то и дело что не успеваешь применять одного, появляется другой, получается тратишь время на так называемые deprecated features начать с новыми сложно, так как не хватает материала или они находятся в бета версия
@AndroidBroadcast
@AndroidBroadcast Год назад
Меняется все не так быстро, новые подходы внедряются постепенно, а такие технологии как Compose выходят редко, интегрируются неспешно и живут очень долго
@complexity7032
@complexity7032 Год назад
короче, коин юзаем для мелких проектов, хилт для среднего уровня сложности и даггер для огромных проектиков с сложной логикой и архитектурой
@AndroidBroadcast
@AndroidBroadcast Год назад
Для огромных Dagger - проблема из-за кодогенрации. Там ручной DI
@complexity7032
@complexity7032 Год назад
@@AndroidBroadcast понял, спасибо) кстати, то ли это ютуб баганул, то ли у меня что-то случилось, но коммент должен был быть в видео про DI(почему вы с Koina перешел на другую библиотеку).. странненько) а видос про компоуз в планах на сегодня был ахах. Но еще раз спасибо за ответ :))
@putinstop5940
@putinstop5940 2 года назад
Но как нам теперь верстать сложные экраны? Закругленые вьюшки, зависимости вьюшек друг от друга,...
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Все также есть различные Layout, можно реализовать собственный виджет через Compose, где будет своя отрисовка, обработка событий и прочее. Также можно сделать свой Layout
@putinstop5940
@putinstop5940 2 года назад
@@AndroidBroadcast ого супер, честно сказать я не нашёл расширенных туториалов, везде только и показывают как helloworld вбить, спасибо за ответ
@AndroidBroadcast
@AndroidBroadcast 2 года назад
На сайте Google много документации, примеры в GitHub, видео и Codelab
@putinstop5940
@putinstop5940 2 года назад
@@AndroidBroadcast спасибо, а как на счет паттренов проектирования? mvp mvvm с композом как работает? как вьюшки подписываются на viewModel? Я начал писать HelloWorld на компосе и уже ощутил всю силу и превосходства, но я себя чувствую утенком среди акул
@AndroidBroadcast
@AndroidBroadcast 2 года назад
@@putinstop5940 Надо просто освоиться с новой идеологией вокруг состояния и всё сойдется
@show-xp4ct
@show-xp4ct 2 года назад
Очень плачевно что нет и не будет, скорей всего, поддержки для явы. Можешь сказать, что и "слава богу" =) но есть много людей, которые недолюбливают котлин, в их числе я. Поигрались с другом с компоусом - пока что сыровато, в большие проекты внедрять рановато, читается код, как по мне, непривычно. Время покажет. Огромное спасибо за контент! Много чего нового подчерпываю от тебя
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Это эволюция. Одни технологии уходят, другие приходят им на замену. Вы можете придерживаться старых принципов, но рынок и выгода бизнеса помешают за вас. Вполне возможно, на работе вы пишите на Kotlin, потому что за Android разработку на Java уже не готовы платить, или не меняете работу, просто потому что "хочу быть на Java"
@SanyaNapalm
@SanyaNapalm 2 года назад
Я Fragments только пытаюсь осилить, а они уже устарели )))
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Нет, они точно еще будут в разработке долго, так как они плотно осели в кодовой базе за 10 лет ) Больше чем RxJava даже, так что не переживайте. В новых приложениях подход начнет отмирать, но пока он живее всех живых!
@user-oe6vy3kh2i
@user-oe6vy3kh2i 2 года назад
Очень сомнительная технология этот Compose. За его интеграцию в КММ однозначно лайк. Но есть много непонятного лично для меня. Хоть убей но ничего принципиально нового, кроме как асинхронщины в построении UI и новых не нативных + сырых View элементов я там не вижу. Точно так же как в Compose только без него и без HotReload можно было всегда строить экраны в коде. Разница лишь в кол-ве кода. Compose даёт удобные обёртки для этого. Убийца фрагментов ? Я наверно что-то не понимаю но фрагмент это не только кучка группированных вьюшек но ещё и масса логики в рамках конкретной задачи, которая задаёт алгоритм поведения для их всех. Поведение ведь так же нуждается в декомпозиции, разбиении на микрозадачи. Этот код нужно где-то прописывать. Как в Compose правильно прописать всю UI логику для "фрагмента" ? Я не пробовал Compose ещё но базируясь на первом впечатлении с обзоров - используя Compose мы просто начнём засирать код. Раньше у нас была отдельно вёрстка UI и отдельно UI логика (DataBinding не рассматриваем). А в Compose всё будет слито в один файл. Да, мы можем выносить общую логику в отдельные файлы но это не избавляет от увеличения кол-ва кода в файле Activity/Fragment. Про композитные View так же довольно сомнительно. ничто нам раньше не мешало сделать код аля viewBinding.root.addView( TextView(context).apply{ text = getString(R.id.some_text) //Other attrs... } ) Я в этом деле ещё не разбираюсь. Если написал что-то глупое - прошу меня простить. Просто есть масса вопросов ответы на которые нагуглить мешает моя лень программиста. А тут прям идеальное место, что бы найти их все разом в качестве ответа на мой комментарий.
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Compose не имеет отношение к View и по другому всё отрисовывает. Никто не мешает вам также организовать отдельные Kotlin файлы и там делать только UI. Рекомендую попробовать и тогда поймёте в чём разница, если весь доклад воспринялся скепсисом
@badadinfanti4553
@badadinfanti4553 2 года назад
Для меня кастом вью, о котором говорит Кирилл в этом видео - это что-то свое полностью нарисованное на канвасе. Таких вьюшек я очень много написал, довольно сложных (можно сказать, хобби у меня такое). Но я-то думал, что люди это и имеют в виду, и тоже удивился, что так много народу этим занимается. А когда узнал, что под кастомом больше понимается просто какие-то стандартные вью, сгруппированные под свои какие-то правила - ну это детский сад, а не кастом вью)
@user-zd2ee2jt3u
@user-zd2ee2jt3u 2 года назад
теоретически конечно эти сгруппированные вью тоже являются подвидом кастом вью, и у них есть название - Compound Controls, но если сравнивать по сложности разработки, да, компаунды на уровне детсада ;)
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Мир Custom View огромен )
@user-jf3iu8vi7k
@user-jf3iu8vi7k 2 года назад
Зачем ты ведёшь этот канал когда есть flutter...
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Потому что Flutter мне не нравится и как видишь практически 8000 тыс людей тоже смотрят что я делаю
@user-jf3iu8vi7k
@user-jf3iu8vi7k 2 года назад
@@AndroidBroadcast сделай видео почему не нравится флаттер и почему тебе нравится ждать компиляцию 2мин и не нравится хотрелоад))
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Раньше хватались декларативным UI и hot reload. Первое пропало. Что будете делать когда и второго не станет? Если разработка хватает тем что их приложение можно быстрее пересобрать, то что-то вы не то делаете
@triihart
@triihart Год назад
Compose выглядит уродливо, старый вариант по ощущениям лучше
@quverr
@quverr 2 года назад
Вы как-то не учли большие легаси проэкты где Java это за 60-80% кода и таких проектов очень много. Так что это совсем не "узкая категория"...
@AndroidBroadcast
@AndroidBroadcast 2 года назад
java проекты это вымирающие динозавры, которые застряли в прошлом из-за чего упорства или упрямства не хотят идти вперёд. Проекты на основе AOSP не считаются
@sanek1985t
@sanek1985t 2 года назад
@@AndroidBroadcast а как же телеграм? Отлично работает, руки растут у людей из правильного места
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Это тоже исключение из правил. Самое обидное что разработчики Telegram отказываются пообщаться про свои технологии и рассказать почему так.
@sanek1985t
@sanek1985t 2 года назад
@@AndroidBroadcast попробуй найти Григория клюшникова, он разработчик ВК бывший и телеги. Я с ним общался. Может прольет свет. Но как мне показалось он сам по хардкору - бизнес логика во фрагментах итд. А ответ Я думаю простой - просто так быстрее разработать приложение. Если над ним работает 2-5 человек, то легко будет разобраться что к чему и не нужны все эти дополнительные слои абстракции, обертки, инфекции зависимостей итд - это по сути инфраструктура и она не имеет отношения к фичам. Иногда код в виде простыни реально легче и быстрее понять когда он в одном файле)
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Гришу знаю по чатам. Он ярый писец только на Android SDK и никаких Jetpack. Тоже отказывается давать интервью. Но тут возможно я такой ещё человек что со мной говорить не хотят
@meseendev
@meseendev 2 года назад
Раздражает бешеный фанатизм. Раньше у нас был xml в котором мы декларировали , теперь делаем тоже в compose но чтобы увидеть изменения нужно билдить , просерать время ....
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Даже с XML нужно было делатт, чтобы увидеть виджеты не из Android SDK. Compose - это не альтернатива XML. ,Это совсем другой принцип показа UI, но никто не мешает остаться на XML
@krokenstiv8777
@krokenstiv8777 2 года назад
flutter всех убьет
@user-my7lm4rs1w
@user-my7lm4rs1w Год назад
А мы за Java))
@ivankvych8182
@ivankvych8182 2 года назад
Спасибо за выпуск . Очень жду видео про него
@AndroidBroadcast
@AndroidBroadcast 2 года назад
Обязательно будут, а пока кинул все силы на восстановление моего голоса. Пока не могу записывать ролики вовсе
@PryankoBoy
@PryankoBoy 2 года назад
Спасибо!
@ramilskl
@ramilskl 2 года назад
Спасибо!
Далее
Lava vs Lasers - Which Is More Destructive?
25:38
Просмотров 6 млн
Deep Linking in Jetpack Compose
4:15
Просмотров 4 тыс.
Jetpack Compose. Основы. UI [Ru, Kotlin\Android]
41:00