Верстка экрана в Jetpack Compose Beta. Часть 1. [Ru, Android] / Мобильный разработчик

Поділитися
Вставка
  • Опубліковано 19 лис 2024

КОМЕНТАРІ • 75

  • @inquisitor4894
    @inquisitor4894 Рік тому +2

    35:24 Для тех кто смотрит это сейчас: padding в JC и padding в XML, CSS, это разные вещи. JC имеет последовательную верстку, а не блочную. Если добавить padding после свойства background, то этот background будет равен size + padding, а вот если padding добавить до background, то сначала будут сделаны отступы, а после отрисован background. Нужно четко соблюдать порядок установки свойств.

  • @valentinvolodarskij
    @valentinvolodarskij 3 роки тому +8

    Небольшая подсказка на будущее, что можно в скобках нажимать Ctrl + P, чтоб подсмотреть актуальные параметры, а не идти в гугл и искать, что там и куда подставляется. А так, очень круто и спасибо за видео, ждем продолжения compose :)

  • @kebrick
    @kebrick 3 роки тому +2

    Очень понятная подача материала, божественно!

  • @sovrinfo
    @sovrinfo 3 роки тому

    Спасибо за видео.Коммент в поддержку!

  • @Никита-ь6з2ш
    @Никита-ь6з2ш 2 роки тому

    превью кайф, и сама подача тоже неплохая
    не останавливайся

  • @АндрейТерегулов
    @АндрейТерегулов 3 роки тому +2

    Почему нельзя поставить несколько лайков?! Очень интересное видео!! Спасибо!

  • @ilyaponomarenko5354
    @ilyaponomarenko5354 3 роки тому

    Спасибо за выпуск. Видимо, настало время взяться за изучение Compose :)

  • @kirill6020
    @kirill6020 2 роки тому

    Спасибо за разбор!

  • @bekzatdosmamatovds2947
    @bekzatdosmamatovds2947 3 роки тому +1

    Спасибо 🙂 за выпуск)))

  • @soul8084
    @soul8084 3 роки тому +1

    Топ _) Очень познавательно _)

  • @KekLolChill
    @KekLolChill 2 роки тому

    compose preview само не обновляется автоматом, то есть если я поменял какую-нибудь мелочь, мне нужно билдить проект заново. а теперь вопрос знатокам - как она может удобнее в разработке, если мне нужно делать кучу лишних движений ?

  • @dmytroberezhnyi717
    @dmytroberezhnyi717 3 роки тому

    Сразу лайк за компоуз

  • @onegin5129
    @onegin5129 3 роки тому +7

    А мне верстка экрана сама в xml редакторе нравится, как бы немножко дизайнером себя чувствуешь

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +3

      В этом видео не работает Preview ещё у компоуза, что является одной из основных киллер фич) с ним вы себя ещё больше дизайнером почувствуете )

    • @cinderellarouge
      @cinderellarouge 3 роки тому

      Ахахаха , конечно же

  • @heroachilles
    @heroachilles 3 роки тому

    Спасибо

  • @Snaximus
    @Snaximus 2 роки тому

    Добрый день.
    Подскажите пожалуйста, как масштабировать вьюхи, чтобы на разных размерах экрана они были пропорционально одинаковыми.
    Т.е. есть идеальный экран по типу medium, а интерфей на больших или меньших экранах будет ресайзится в соответствии с текущим размером.

  • @glutenfreebeer9845
    @glutenfreebeer9845 3 роки тому +1

    Чет не очень понятно что делать с Constrain Layout ну и чет кода на такую страницу ну прям дофига.И интересно, есть ли какие-нибудь аналоги для RecyclerVIew или оно будет работать уже с имеющимся компонентом. Просто по дизайну там идет дальше список отзывов, т.е. то, что верстается в этом видео должно быть отдельным ViewHolder'лм

    • @hotmule
      @hotmule 3 роки тому +1

      Аналог RecyclerView - LazyColumn

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Все, что есть в видео это список. Как правильно выше сказали LazyColumn. Не надо пытаться искать зацепки внутри старого xml. Здесь совершенно иные принципы)

  • @kirillsushilnikov9614
    @kirillsushilnikov9614 3 роки тому +1

    В самом начале видео вы сказали, что будет ссылка на стрим, где обсуждались основные моменты, но ее похоже нет.

  • @pavlosoia
    @pavlosoia 3 роки тому +7

    Уже прям вижу боль в следующие 2-3 года, когда на проектах начнет появляться compose в куче с xml. Пока из того, что я увидел, то в xml читабельность кода проще.

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Ну давайте подумаем, вы работаете с xml уже сколько лет? Сколько раз вы видели, писали, трогали эти паттерны все? Насколько ваш мозг привык решать задачу абстрактно?
      И теперь вы видите абсолютно новый подход, да еще и на видео, не попробовав это лично. Думаю что со временем, компоуз для вас будет проще или хотя бы так же привычен)

    • @pavlosoia
      @pavlosoia 3 роки тому

      @@MobileDeveloper согласен, скорее всего так и будет. Вот пытаюсь вникать, большое спасибо за видео.

    • @teletypewriter
      @teletypewriter 2 роки тому +1

      За 35 лет человечество уходило-уходило от Turbo Vision и на тебе... Зумеры вернулись обратно и радостно стучат совочком по куличику из песочка, в который много лет писали все кошечки двора.
      Печальное зрелище. Теперь за верстку вместо дешевого верстака надо сажать дорогостоящего разработчика. Это проседание по бюджету для бизнеса плюс выгорание для разраба, ведь не для покраски батонов его красивого мама родила... Прощай разделение труда, прощай конвейр. Это не новый подход, это ужасный шаг на 35 лет назад.

    • @pavlosoia
      @pavlosoia 2 роки тому +3

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

  • @riyga25
    @riyga25 3 роки тому +1

    мне интересно как сделать полностью приложение на compose, не только верстку.
    логика понятно - во viewModel, а с апи андройда как/откуда работать (всё ломаю голову как запросить runtime permissions)? или compose это исключительно о верстке?)

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Это интересный вопрос) в целом-то вьюмодель есть, можно работать без проблем с теми же репозиториями. Возможно расширю видео на запросы

  • @hotmule
    @hotmule 3 роки тому

    Не должны ли теперь приложения строиться таким образом, что в отдельном (мультиплатформенном) модуле хранится условный глобальный стейт со всеми бэкстеками и отдельные стейты для экранов в частности, а на основе них уже рендерится интерфейс (android/ios/desktop/web) приложения?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Такой подход продвигается и для него многое делается, но пока сделать полноценно приложение будет очень проблематично. Хотя попробовать никто не мешает

  • @zhanyshmasirov4611
    @zhanyshmasirov4611 3 роки тому

    Aleksey ну ты молодчина, для этого ещё надо иметь железеное терпение , чтоб ввести канал . Можешь пожалуйста отдельно снять MVVM, по подробнее видео как работать, я например новичок не очень вкуриваю как MVVM работает. А так чон рахмат!! Бактылуу бол айланайын!!Ну твоя жена казашка ))) она знает что это значит )))

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Спасибо ) Насчёт MVVM есть видео на канале. Она у меня русская ) Но перевела, спасибо! ))

    • @zhanyshmasirov4611
      @zhanyshmasirov4611 3 роки тому

      @@MobileDeveloper ну мы просто, не делим в Казахстане на русскую, казашку или еврейку , все кто родился в Казахстане , просто казахстанцы ! А на нации не делим и этносы не делим ))₽

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      В целом это правильно ) но выходит путаница )

  • @sergey30027
    @sergey30027 3 роки тому +1

    А возможно поставить компоуз и использовать без канарейки и алфа градла?

  • @Chekist2008
    @Chekist2008 3 роки тому

    А что за хитрая конструкция такая используется на 2:18 с полями _name и name?

    • @Chekist2008
      @Chekist2008 3 роки тому

      Кажется нашел, поправьте, пожалуйста, если есть неточности:
      - это так называемое "Теневое свойство" и используется для того, чтобы не писать дополнительную функцию getName(), а просто иметь возможность обращаться потом к полю через ".name" ? Верно?
      И фактически мы могли бы аналогично вместо "= _name" в конце 10 строчки, дописать в 11 строчке "get(){ return _name}" - эти два вида записи равноценны?

    • @artemgerasimov9551
      @artemgerasimov9551 3 роки тому +2

      @@Chekist2008 надеюсь, что меня тоже поправят, но вообще, это связано с тем, что _name у Вас MutableLiveData, потому что во view Model ты имеешь возможность менять эти данные. Поле name это просто liveData, которую ты менять не можешь. Именно поэтому создаётся две переменные, одна _name позволяет изменять данные, но это должно происходить только во viewModel, name это переменная, за которой можно следить и её нужно уже прокидываиь в ui
      Если я не ошибаюсь, об этом говорят на официальном канале Android, в видео про jetpack compose state
      Надеюсь смог объяснить
      На счет доступа через свойство get. Сказать точно могу. Мне кажется, что так не получится. Ведь если в нем, ты будешь передавать просто LiveData, то не сможешь её менять во ViewModel

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +3

      Это фактически замочек. То есть наружу смотрит не изменяемая проперти, а внутрь изменяемая и получается, что снаружи можно только подписаться, а изнутри изменить

    • @Chekist2008
      @Chekist2008 3 роки тому

      @@MobileDeveloper спасибо, понял

  • @АртурПетров-н3у
    @АртурПетров-н3у 3 роки тому

    Алексей, а что за сайт по которому вы делаете вёрстку?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Ну сам сервис называется zeplin а вот дизайн нашего мобильного приложения Леруа Мерлен )

  • @layoor
    @layoor 3 роки тому

    Я так понял тут суть как и во Flutter?

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Нет, вот суть вообще не как во флаттере 😂

  • @MRAzartx
    @MRAzartx 3 роки тому

    Я немного не понимаю, компоуз будет сложнее на много чем обычная ХМЛ верстка, почему тогда компоуз лучше верстки, только потому что возможностей больше?

    • @Egor_Sigolaev
      @Egor_Sigolaev 3 роки тому

      Говорят, что компоуз уменьшает намного размер приложения (убираются xml файлы) и кол - во методов тоже уменьшается. Вот статейка более детальная:medium.com/androiddevelopers/jetpack-compose-before-and-after-8b43ba0b7d4f
      Думаю компоуз особенно чувствуется на больших проектах.

    • @xlit97
      @xlit97 3 роки тому +1

      Я бы не сказал, что он намного сложнее. Просто подход новый и придется изучать его с нуля, а это непросто, учитывая, что best-practices еще устоявшихся нет, обучающих материалов гораздо меньше, чем по классическому xml. Но тем не менее если запомнить основные компоненты, изучить Material компоненты, научиться писать composable функции, то в принципе экраны верстаются примерно также как в xml. Добавлю то что у меня на винде почему то preview не хочет быстро работать(обновление превью 5 минут занимает), но это мне не помешало написать приложение с полями ввода, со списком различных, сложных элементов. Ты просто читаешь название функций и примерно представляешь, что куда нужно добавить, наверное начинаешь мыслить в декларативном стиле.
      Ну и еще заявлена поддержка мультиплатформы.
      P.S. Видео пока не посмотрел, но вроде вижу, что Алексей тоже не использует превью

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +1

      Верно, у меня preview тоже не работает, поэтому собираю билд по старинке)
      У Compose много преимуществ. Легкая связка с данными, возможность дробить все на очень мелкие компоненты, и я думаю, что чем дальше, тем больше мы будем получать оптимизаций компоуза

    • @dmytroberezhnyi717
      @dmytroberezhnyi717 3 роки тому +1

      Тулбар есть в Scaffold и там же есть дровер и Боттом бар

    • @artemgerasimov9551
      @artemgerasimov9551 3 роки тому +2

      На самом деле 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, но все это как-то не удобно. Было бы интересно ваше мнение и виденье этой задачи

  • @YouMeNow88
    @YouMeNow88 3 роки тому

    Подскажите а можно учить Котлин не зная Джаву??

    • @qsenoun
      @qsenoun 3 роки тому +1

      учить конечно же можно, что поможет писать простенькие приложения, не особо вдаваясь в суть, но в дальнейшем, по продвижению в опыте, потребуются знания хотя бы того же GarbageCollector и устройство памяти в jvmЗнать котлин и не знать джаву, по крайней мере сейчас, это не особо круто, тк часть проектов на будущем рабочем месте будет на джаве, которые придется поддерживать, рефакторить и возможно переписывать с нуля. Синтаксические знания как минимум необходимы. Но если это твой первый язык, то конечно же стоит, начинай, без раздумывания стоит или не стоит, тут однозначно ответ "стоит". А к джаве можно вернуться, а если уже будут знания в котлине, какие-то пробелы джавы можно будет восполнить с поразительной легкостью, чем начинать дрочить джаву как первый язык. Котлин очень современный, облегченный синтаксически язык, тебе понравится.

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому +2

      Добавить нечего. Дмитрий все круто расписал

    • @YouMeNow88
      @YouMeNow88 3 роки тому

      @@qsenoun Но я сейчас прохожу основы Джавы: Массивы,Циклы,Методы.Дальше стоит вопрос немного пощупать ООП.Но цель моя не Веб а Мобайл.Лучше сразу погружаться в Котлин или что то в Джаве еще подучить? Если да то что подтянуть? Спасибо (Да это мой первый язык)

    • @qsenoun
      @qsenoun 3 роки тому

      @@YouMeNow88 если твоя цель мобильная разработка, то знания котлина без джавы, это как чай без заварки, да горячий, да согрелся, но будто чего-то не хватает. И такое ощущение не будет тебя покидать, пока не поймешь джаву на необходимом уровне. Я предлагаю тебе не париться, и стартануть с котлина. Но если же хочется сразу получить огромный объем знаний (если вывезешь), то конечно же джава, после джавы на котлине ты стартанешь куда быстрее. Почитай книжку по java 8 Гербера Шилдта Java 8 Полное руководство, либо же руководство для начинающих. Подается все очень просто, с примерами, и способами применения. Лично для меня, учение по книгам стало основным. Тк курсы часто ужимают инфу ради скорости, какие-то гайды из инета и ролики на ютубе хорошо, но тоже не всеобъемлюще. Но забей на "java за один час" это не то что поможет тебе, поверь.

  • @СтепанКоновалов-д9ч

    Flutter на минималках

    • @MobileDeveloper
      @MobileDeveloper  3 роки тому

      Декларативная верстка есть не только во Flutter)