35:24 Для тех кто смотрит это сейчас: padding в JC и padding в XML, CSS, это разные вещи. JC имеет последовательную верстку, а не блочную. Если добавить padding после свойства background, то этот background будет равен size + padding, а вот если padding добавить до background, то сначала будут сделаны отступы, а после отрисован background. Нужно четко соблюдать порядок установки свойств.
Небольшая подсказка на будущее, что можно в скобках нажимать Ctrl + P, чтоб подсмотреть актуальные параметры, а не идти в гугл и искать, что там и куда подставляется. А так, очень круто и спасибо за видео, ждем продолжения compose :)
compose preview само не обновляется автоматом, то есть если я поменял какую-нибудь мелочь, мне нужно билдить проект заново. а теперь вопрос знатокам - как она может удобнее в разработке, если мне нужно делать кучу лишних движений ?
Добрый день. Подскажите пожалуйста, как масштабировать вьюхи, чтобы на разных размерах экрана они были пропорционально одинаковыми. Т.е. есть идеальный экран по типу medium, а интерфей на больших или меньших экранах будет ресайзится в соответствии с текущим размером.
Чет не очень понятно что делать с Constrain Layout ну и чет кода на такую страницу ну прям дофига.И интересно, есть ли какие-нибудь аналоги для RecyclerVIew или оно будет работать уже с имеющимся компонентом. Просто по дизайну там идет дальше список отзывов, т.е. то, что верстается в этом видео должно быть отдельным ViewHolder'лм
Все, что есть в видео это список. Как правильно выше сказали LazyColumn. Не надо пытаться искать зацепки внутри старого xml. Здесь совершенно иные принципы)
Уже прям вижу боль в следующие 2-3 года, когда на проектах начнет появляться compose в куче с xml. Пока из того, что я увидел, то в xml читабельность кода проще.
Ну давайте подумаем, вы работаете с xml уже сколько лет? Сколько раз вы видели, писали, трогали эти паттерны все? Насколько ваш мозг привык решать задачу абстрактно? И теперь вы видите абсолютно новый подход, да еще и на видео, не попробовав это лично. Думаю что со временем, компоуз для вас будет проще или хотя бы так же привычен)
За 35 лет человечество уходило-уходило от Turbo Vision и на тебе... Зумеры вернулись обратно и радостно стучат совочком по куличику из песочка, в который много лет писали все кошечки двора. Печальное зрелище. Теперь за верстку вместо дешевого верстака надо сажать дорогостоящего разработчика. Это проседание по бюджету для бизнеса плюс выгорание для разраба, ведь не для покраски батонов его красивого мама родила... Прощай разделение труда, прощай конвейр. Это не новый подход, это ужасный шаг на 35 лет назад.
вот спустя год моего коммента я уже поработал на двух проектах с компоузом. Более-менее уже разобрался с ним. И останусь при своем мнении - с компоузом код нечитабельный, логика путается с версткой, компоуз функции внутри других компоуз функций, а те еще внутри других. И при сложных экранах будешь в лабиринтах верстки лазить... Потому пока остаюсь на xml и до последнего буду тянуть с переходом. PS. И это не говоря уже о том, что функциональное программирование теперь смешивается с ООП. Верстку мы теперь в функциональщину, остальные слои в ооп...
мне интересно как сделать полностью приложение на compose, не только верстку. логика понятно - во viewModel, а с апи андройда как/откуда работать (всё ломаю голову как запросить runtime permissions)? или compose это исключительно о верстке?)
Не должны ли теперь приложения строиться таким образом, что в отдельном (мультиплатформенном) модуле хранится условный глобальный стейт со всеми бэкстеками и отдельные стейты для экранов в частности, а на основе них уже рендерится интерфейс (android/ios/desktop/web) приложения?
Такой подход продвигается и для него многое делается, но пока сделать полноценно приложение будет очень проблематично. Хотя попробовать никто не мешает
Aleksey ну ты молодчина, для этого ещё надо иметь железеное терпение , чтоб ввести канал . Можешь пожалуйста отдельно снять MVVM, по подробнее видео как работать, я например новичок не очень вкуриваю как MVVM работает. А так чон рахмат!! Бактылуу бол айланайын!!Ну твоя жена казашка ))) она знает что это значит )))
@@MobileDeveloper ну мы просто, не делим в Казахстане на русскую, казашку или еврейку , все кто родился в Казахстане , просто казахстанцы ! А на нации не делим и этносы не делим ))₽
Кажется нашел, поправьте, пожалуйста, если есть неточности: - это так называемое "Теневое свойство" и используется для того, чтобы не писать дополнительную функцию getName(), а просто иметь возможность обращаться потом к полю через ".name" ? Верно? И фактически мы могли бы аналогично вместо "= _name" в конце 10 строчки, дописать в 11 строчке "get(){ return _name}" - эти два вида записи равноценны?
@@Chekist2008 надеюсь, что меня тоже поправят, но вообще, это связано с тем, что _name у Вас MutableLiveData, потому что во view Model ты имеешь возможность менять эти данные. Поле name это просто liveData, которую ты менять не можешь. Именно поэтому создаётся две переменные, одна _name позволяет изменять данные, но это должно происходить только во viewModel, name это переменная, за которой можно следить и её нужно уже прокидываиь в ui Если я не ошибаюсь, об этом говорят на официальном канале Android, в видео про jetpack compose state Надеюсь смог объяснить На счет доступа через свойство get. Сказать точно могу. Мне кажется, что так не получится. Ведь если в нем, ты будешь передавать просто LiveData, то не сможешь её менять во ViewModel
Это фактически замочек. То есть наружу смотрит не изменяемая проперти, а внутрь изменяемая и получается, что снаружи можно только подписаться, а изнутри изменить
Я немного не понимаю, компоуз будет сложнее на много чем обычная ХМЛ верстка, почему тогда компоуз лучше верстки, только потому что возможностей больше?
Говорят, что компоуз уменьшает намного размер приложения (убираются xml файлы) и кол - во методов тоже уменьшается. Вот статейка более детальная:medium.com/androiddevelopers/jetpack-compose-before-and-after-8b43ba0b7d4f Думаю компоуз особенно чувствуется на больших проектах.
Я бы не сказал, что он намного сложнее. Просто подход новый и придется изучать его с нуля, а это непросто, учитывая, что best-practices еще устоявшихся нет, обучающих материалов гораздо меньше, чем по классическому xml. Но тем не менее если запомнить основные компоненты, изучить Material компоненты, научиться писать composable функции, то в принципе экраны верстаются примерно также как в xml. Добавлю то что у меня на винде почему то preview не хочет быстро работать(обновление превью 5 минут занимает), но это мне не помешало написать приложение с полями ввода, со списком различных, сложных элементов. Ты просто читаешь название функций и примерно представляешь, что куда нужно добавить, наверное начинаешь мыслить в декларативном стиле. Ну и еще заявлена поддержка мультиплатформы. P.S. Видео пока не посмотрел, но вроде вижу, что Алексей тоже не использует превью
Верно, у меня preview тоже не работает, поэтому собираю билд по старинке) У Compose много преимуществ. Легкая связка с данными, возможность дробить все на очень мелкие компоненты, и я думаю, что чем дальше, тем больше мы будем получать оптимизаций компоуза
На самом деле compose очень гибкий и когда нужно написать какой-то кастомный элемент, то это получается сделать проще и быстрее. Надеюсь, что меня поправят профессионалы, так как я не очень много времени работал с xml, но так получилось, что сделал проект на compose. В моем случае использовался джойстик. Раньше, на xml я подключал библиотеку, потому что начинающему разработчику писать свое view с анимацией.. ну, достаточно сложно. Причем в библиотеке код для джойстика был больше 100 строк и чтоб разобраться нужно было очень много времени. А на compose все сильно проще. У тебя есть функция в которой с помощью анимации и расчетов ты перемещаешь центральную окружность. По факту хватает знания простой геометрии и основы compose. И по факту, научившись писать на compose что-то простое, ты легко напишешь все остальное не гугля, потому что ты сможешь сделать это аналогично прошлым решениям или зайд в документацию (в исходный код). Да, я согласен, что возможно, если ты понимаешь как делаются кастомные элементы, то ты легко напишешь джойстик, но все же. Тебе нужно знать кастомные элементы, как делать recycler view, как настраивать параметры и много другое. В compose все проще. Есть одна логика и по ней ты все строишь. Не знаешь как сделать зайди в исходный код и посмотри как это сделано или какие параметры можно передать. Когда я начинал на compose писать я думал "Как это не удобно, ничего не видно из того, что написал и не понятно", но когда написал средний проект, полюбил.. и это теперь большая проблема, потому что не знаю как вернуться на xml. Но слава богу пока студент и могу писать на compose^) P.S. Гибкость это хорошо, но и опасно, потому что часто есть желание нарисовать быстрый костыль, а не разбираться ка это сделать лучше... и боюсь, что это может тать большой проблемой P.S.S. Не судите строго, я в андроиде не так давно и опыта мало, просто решил поделиться мнением о этой классной технологии. Потому что мне она очень понравилась, без нее я бы сильно дольше бы писал бы это приложение. P.S.S.S. Алексей, буду рад, если вы рассмотрите навигацию.. потому что ест варианты с navigation component, есть через state в JetNews, но все это как-то не удобно. Было бы интересно ваше мнение и виденье этой задачи
учить конечно же можно, что поможет писать простенькие приложения, не особо вдаваясь в суть, но в дальнейшем, по продвижению в опыте, потребуются знания хотя бы того же GarbageCollector и устройство памяти в jvmЗнать котлин и не знать джаву, по крайней мере сейчас, это не особо круто, тк часть проектов на будущем рабочем месте будет на джаве, которые придется поддерживать, рефакторить и возможно переписывать с нуля. Синтаксические знания как минимум необходимы. Но если это твой первый язык, то конечно же стоит, начинай, без раздумывания стоит или не стоит, тут однозначно ответ "стоит". А к джаве можно вернуться, а если уже будут знания в котлине, какие-то пробелы джавы можно будет восполнить с поразительной легкостью, чем начинать дрочить джаву как первый язык. Котлин очень современный, облегченный синтаксически язык, тебе понравится.
@@qsenoun Но я сейчас прохожу основы Джавы: Массивы,Циклы,Методы.Дальше стоит вопрос немного пощупать ООП.Но цель моя не Веб а Мобайл.Лучше сразу погружаться в Котлин или что то в Джаве еще подучить? Если да то что подтянуть? Спасибо (Да это мой первый язык)
@@YouMeNow88 если твоя цель мобильная разработка, то знания котлина без джавы, это как чай без заварки, да горячий, да согрелся, но будто чего-то не хватает. И такое ощущение не будет тебя покидать, пока не поймешь джаву на необходимом уровне. Я предлагаю тебе не париться, и стартануть с котлина. Но если же хочется сразу получить огромный объем знаний (если вывезешь), то конечно же джава, после джавы на котлине ты стартанешь куда быстрее. Почитай книжку по java 8 Гербера Шилдта Java 8 Полное руководство, либо же руководство для начинающих. Подается все очень просто, с примерами, и способами применения. Лично для меня, учение по книгам стало основным. Тк курсы часто ужимают инфу ради скорости, какие-то гайды из инета и ролики на ютубе хорошо, но тоже не всеобъемлюще. Но забей на "java за один час" это не то что поможет тебе, поверь.
35:24 Для тех кто смотрит это сейчас: padding в JC и padding в XML, CSS, это разные вещи. JC имеет последовательную верстку, а не блочную. Если добавить padding после свойства background, то этот background будет равен size + padding, а вот если padding добавить до background, то сначала будут сделаны отступы, а после отрисован background. Нужно четко соблюдать порядок установки свойств.
Небольшая подсказка на будущее, что можно в скобках нажимать Ctrl + P, чтоб подсмотреть актуальные параметры, а не идти в гугл и искать, что там и куда подставляется. А так, очень круто и спасибо за видео, ждем продолжения compose :)
Спасибо ))
Очень понятная подача материала, божественно!
Спасибо за видео.Коммент в поддержку!
превью кайф, и сама подача тоже неплохая
не останавливайся
Спасибо! )
Почему нельзя поставить несколько лайков?! Очень интересное видео!! Спасибо!
Спасибо)
Можешь мне поставить ;)))
Спасибо за выпуск. Видимо, настало время взяться за изучение Compose :)
Да, будут еще видео
Спасибо за разбор!
Спасибо 🙂 за выпуск)))
Пожалуйста )
Топ _) Очень познавательно _)
Спасибо )
compose preview само не обновляется автоматом, то есть если я поменял какую-нибудь мелочь, мне нужно билдить проект заново. а теперь вопрос знатокам - как она может удобнее в разработке, если мне нужно делать кучу лишних движений ?
Сразу лайк за компоуз
Спасибо )
А мне верстка экрана сама в xml редакторе нравится, как бы немножко дизайнером себя чувствуешь
В этом видео не работает Preview ещё у компоуза, что является одной из основных киллер фич) с ним вы себя ещё больше дизайнером почувствуете )
Ахахаха , конечно же
Спасибо
Добрый день.
Подскажите пожалуйста, как масштабировать вьюхи, чтобы на разных размерах экрана они были пропорционально одинаковыми.
Т.е. есть идеальный экран по типу medium, а интерфей на больших или меньших экранах будет ресайзится в соответствии с текущим размером.
Чет не очень понятно что делать с Constrain Layout ну и чет кода на такую страницу ну прям дофига.И интересно, есть ли какие-нибудь аналоги для RecyclerVIew или оно будет работать уже с имеющимся компонентом. Просто по дизайну там идет дальше список отзывов, т.е. то, что верстается в этом видео должно быть отдельным ViewHolder'лм
Аналог RecyclerView - LazyColumn
Все, что есть в видео это список. Как правильно выше сказали LazyColumn. Не надо пытаться искать зацепки внутри старого xml. Здесь совершенно иные принципы)
В самом начале видео вы сказали, что будет ссылка на стрим, где обсуждались основные моменты, но ее похоже нет.
А не подскажете тайминг?
@@MobileDeveloper 0:07
А да, точно. Поправлюсь добавлю
@@MobileDeveloper спасибо за труды, всегда очень интересно.
Пожалуйста
Уже прям вижу боль в следующие 2-3 года, когда на проектах начнет появляться compose в куче с xml. Пока из того, что я увидел, то в xml читабельность кода проще.
Ну давайте подумаем, вы работаете с xml уже сколько лет? Сколько раз вы видели, писали, трогали эти паттерны все? Насколько ваш мозг привык решать задачу абстрактно?
И теперь вы видите абсолютно новый подход, да еще и на видео, не попробовав это лично. Думаю что со временем, компоуз для вас будет проще или хотя бы так же привычен)
@@MobileDeveloper согласен, скорее всего так и будет. Вот пытаюсь вникать, большое спасибо за видео.
За 35 лет человечество уходило-уходило от Turbo Vision и на тебе... Зумеры вернулись обратно и радостно стучат совочком по куличику из песочка, в который много лет писали все кошечки двора.
Печальное зрелище. Теперь за верстку вместо дешевого верстака надо сажать дорогостоящего разработчика. Это проседание по бюджету для бизнеса плюс выгорание для разраба, ведь не для покраски батонов его красивого мама родила... Прощай разделение труда, прощай конвейр. Это не новый подход, это ужасный шаг на 35 лет назад.
вот спустя год моего коммента я уже поработал на двух проектах с компоузом. Более-менее уже разобрался с ним. И останусь при своем мнении - с компоузом код нечитабельный, логика путается с версткой, компоуз функции внутри других компоуз функций, а те еще внутри других. И при сложных экранах будешь в лабиринтах верстки лазить... Потому пока остаюсь на xml и до последнего буду тянуть с переходом.
PS. И это не говоря уже о том, что функциональное программирование теперь смешивается с ООП. Верстку мы теперь в функциональщину, остальные слои в ооп...
мне интересно как сделать полностью приложение на compose, не только верстку.
логика понятно - во viewModel, а с апи андройда как/откуда работать (всё ломаю голову как запросить runtime permissions)? или compose это исключительно о верстке?)
Это интересный вопрос) в целом-то вьюмодель есть, можно работать без проблем с теми же репозиториями. Возможно расширю видео на запросы
Не должны ли теперь приложения строиться таким образом, что в отдельном (мультиплатформенном) модуле хранится условный глобальный стейт со всеми бэкстеками и отдельные стейты для экранов в частности, а на основе них уже рендерится интерфейс (android/ios/desktop/web) приложения?
Такой подход продвигается и для него многое делается, но пока сделать полноценно приложение будет очень проблематично. Хотя попробовать никто не мешает
Aleksey ну ты молодчина, для этого ещё надо иметь железеное терпение , чтоб ввести канал . Можешь пожалуйста отдельно снять MVVM, по подробнее видео как работать, я например новичок не очень вкуриваю как MVVM работает. А так чон рахмат!! Бактылуу бол айланайын!!Ну твоя жена казашка ))) она знает что это значит )))
Спасибо ) Насчёт MVVM есть видео на канале. Она у меня русская ) Но перевела, спасибо! ))
@@MobileDeveloper ну мы просто, не делим в Казахстане на русскую, казашку или еврейку , все кто родился в Казахстане , просто казахстанцы ! А на нации не делим и этносы не делим ))₽
В целом это правильно ) но выходит путаница )
А возможно поставить компоуз и использовать без канарейки и алфа градла?
Пока нет )
А что за хитрая конструкция такая используется на 2:18 с полями _name и name?
Кажется нашел, поправьте, пожалуйста, если есть неточности:
- это так называемое "Теневое свойство" и используется для того, чтобы не писать дополнительную функцию getName(), а просто иметь возможность обращаться потом к полю через ".name" ? Верно?
И фактически мы могли бы аналогично вместо "= _name" в конце 10 строчки, дописать в 11 строчке "get(){ return _name}" - эти два вида записи равноценны?
@@Chekist2008 надеюсь, что меня тоже поправят, но вообще, это связано с тем, что _name у Вас MutableLiveData, потому что во view Model ты имеешь возможность менять эти данные. Поле name это просто liveData, которую ты менять не можешь. Именно поэтому создаётся две переменные, одна _name позволяет изменять данные, но это должно происходить только во viewModel, name это переменная, за которой можно следить и её нужно уже прокидываиь в ui
Если я не ошибаюсь, об этом говорят на официальном канале Android, в видео про jetpack compose state
Надеюсь смог объяснить
На счет доступа через свойство get. Сказать точно могу. Мне кажется, что так не получится. Ведь если в нем, ты будешь передавать просто LiveData, то не сможешь её менять во ViewModel
Это фактически замочек. То есть наружу смотрит не изменяемая проперти, а внутрь изменяемая и получается, что снаружи можно только подписаться, а изнутри изменить
@@MobileDeveloper спасибо, понял
Алексей, а что за сайт по которому вы делаете вёрстку?
Ну сам сервис называется zeplin а вот дизайн нашего мобильного приложения Леруа Мерлен )
Я так понял тут суть как и во Flutter?
Нет, вот суть вообще не как во флаттере 😂
Я немного не понимаю, компоуз будет сложнее на много чем обычная ХМЛ верстка, почему тогда компоуз лучше верстки, только потому что возможностей больше?
Говорят, что компоуз уменьшает намного размер приложения (убираются xml файлы) и кол - во методов тоже уменьшается. Вот статейка более детальная:medium.com/androiddevelopers/jetpack-compose-before-and-after-8b43ba0b7d4f
Думаю компоуз особенно чувствуется на больших проектах.
Я бы не сказал, что он намного сложнее. Просто подход новый и придется изучать его с нуля, а это непросто, учитывая, что best-practices еще устоявшихся нет, обучающих материалов гораздо меньше, чем по классическому xml. Но тем не менее если запомнить основные компоненты, изучить Material компоненты, научиться писать composable функции, то в принципе экраны верстаются примерно также как в xml. Добавлю то что у меня на винде почему то preview не хочет быстро работать(обновление превью 5 минут занимает), но это мне не помешало написать приложение с полями ввода, со списком различных, сложных элементов. Ты просто читаешь название функций и примерно представляешь, что куда нужно добавить, наверное начинаешь мыслить в декларативном стиле.
Ну и еще заявлена поддержка мультиплатформы.
P.S. Видео пока не посмотрел, но вроде вижу, что Алексей тоже не использует превью
Верно, у меня preview тоже не работает, поэтому собираю билд по старинке)
У Compose много преимуществ. Легкая связка с данными, возможность дробить все на очень мелкие компоненты, и я думаю, что чем дальше, тем больше мы будем получать оптимизаций компоуза
Тулбар есть в Scaffold и там же есть дровер и Боттом бар
На самом деле compose очень гибкий и когда нужно написать какой-то кастомный элемент, то это получается сделать проще и быстрее.
Надеюсь, что меня поправят профессионалы, так как я не очень много времени работал с xml, но так получилось, что сделал проект на compose.
В моем случае использовался джойстик. Раньше, на xml я подключал библиотеку, потому что начинающему разработчику писать свое view с анимацией.. ну, достаточно сложно. Причем в библиотеке код для джойстика был больше 100 строк и чтоб разобраться нужно было очень много времени. А на compose все сильно проще. У тебя есть функция в которой с помощью анимации и расчетов ты перемещаешь центральную окружность. По факту хватает знания простой геометрии и основы compose.
И по факту, научившись писать на compose что-то простое, ты легко напишешь все остальное не гугля, потому что ты сможешь сделать это аналогично прошлым решениям или зайд в документацию (в исходный код).
Да, я согласен, что возможно, если ты понимаешь как делаются кастомные элементы, то ты легко напишешь джойстик, но все же. Тебе нужно знать кастомные элементы, как делать recycler view, как настраивать параметры и много другое. В compose все проще. Есть одна логика и по ней ты все строишь. Не знаешь как сделать зайди в исходный код и посмотри как это сделано или какие параметры можно передать.
Когда я начинал на compose писать я думал "Как это не удобно, ничего не видно из того, что написал и не понятно", но когда написал средний проект, полюбил.. и это теперь большая проблема, потому что не знаю как вернуться на xml. Но слава богу пока студент и могу писать на compose^)
P.S. Гибкость это хорошо, но и опасно, потому что часто есть желание нарисовать быстрый костыль, а не разбираться ка это сделать лучше... и боюсь, что это может тать большой проблемой
P.S.S. Не судите строго, я в андроиде не так давно и опыта мало, просто решил поделиться мнением о этой классной технологии. Потому что мне она очень понравилась, без нее я бы сильно дольше бы писал бы это приложение.
P.S.S.S. Алексей, буду рад, если вы рассмотрите навигацию.. потому что ест варианты с navigation component, есть через state в JetNews, но все это как-то не удобно. Было бы интересно ваше мнение и виденье этой задачи
Подскажите а можно учить Котлин не зная Джаву??
учить конечно же можно, что поможет писать простенькие приложения, не особо вдаваясь в суть, но в дальнейшем, по продвижению в опыте, потребуются знания хотя бы того же GarbageCollector и устройство памяти в jvmЗнать котлин и не знать джаву, по крайней мере сейчас, это не особо круто, тк часть проектов на будущем рабочем месте будет на джаве, которые придется поддерживать, рефакторить и возможно переписывать с нуля. Синтаксические знания как минимум необходимы. Но если это твой первый язык, то конечно же стоит, начинай, без раздумывания стоит или не стоит, тут однозначно ответ "стоит". А к джаве можно вернуться, а если уже будут знания в котлине, какие-то пробелы джавы можно будет восполнить с поразительной легкостью, чем начинать дрочить джаву как первый язык. Котлин очень современный, облегченный синтаксически язык, тебе понравится.
Добавить нечего. Дмитрий все круто расписал
@@qsenoun Но я сейчас прохожу основы Джавы: Массивы,Циклы,Методы.Дальше стоит вопрос немного пощупать ООП.Но цель моя не Веб а Мобайл.Лучше сразу погружаться в Котлин или что то в Джаве еще подучить? Если да то что подтянуть? Спасибо (Да это мой первый язык)
@@YouMeNow88 если твоя цель мобильная разработка, то знания котлина без джавы, это как чай без заварки, да горячий, да согрелся, но будто чего-то не хватает. И такое ощущение не будет тебя покидать, пока не поймешь джаву на необходимом уровне. Я предлагаю тебе не париться, и стартануть с котлина. Но если же хочется сразу получить огромный объем знаний (если вывезешь), то конечно же джава, после джавы на котлине ты стартанешь куда быстрее. Почитай книжку по java 8 Гербера Шилдта Java 8 Полное руководство, либо же руководство для начинающих. Подается все очень просто, с примерами, и способами применения. Лично для меня, учение по книгам стало основным. Тк курсы часто ужимают инфу ради скорости, какие-то гайды из инета и ролики на ютубе хорошо, но тоже не всеобъемлюще. Но забей на "java за один час" это не то что поможет тебе, поверь.
Flutter на минималках
Декларативная верстка есть не только во Flutter)