Dj
Эх, щас бы о вкусовщинах спорить
One
Эх, щас бы о вкусовщинах спорить
Только хотел написать
Igor
а что мешает разделить логику для констрента?
Тем что у тебя каждый view завязан прям на другой view или на parent. Те ты в отельном xml будешь ссылаться на id вью, которых там даже нет, В НАДЕЖДЕ что в рутовом xml вас правильно заимпортили
One
Тем что у тебя каждый view завязан прям на другой view или на parent. Те ты в отельном xml будешь ссылаться на id вью, которых там даже нет, В НАДЕЖДЕ что в рутовом xml вас правильно заимпортили
нет друг мой, я не это имел ввиду, а делить на группы то, что можно разделить, в большенстве экранов это не требуется, а в тех что требуется, безусловно, можно и нужно делить на группы, для читабельности и для удобства поддержки
Igor
Эх, щас бы о вкусовщинах спорить
Дело не во вкусах, а в простоте и композируемости CL совершенно не композируется по своей природе (тк нельзя вкладывать, а надо все хранить одной кучей) и он сильно увеличивается сложность верстки (как на ios, где их xml вообще никто не читает из-за ужастной сложности)
Turalllb
Подскажите, вот часто встречается верстка, когда есть coordinatorLayout в нем Toolbar и ViewPager , мы ставим ViewPager app:layout_behavior="@string/appbar_scrolling_view_behavior" и весь контент ViewPager подстраивается к тому опущен toolbar или нет. Элементы которые находятся в ViewPager явно не имеют app:layout_behavior="@string/appbar_scrolling_view_behavior", но тем не менее подстраиваются под toolbar. Но вот если в ViewPager корневой элемент например FrameLayout с ImageView с match_parent (изначально invisible) , то к этому ImageView поведение не применяется. Он не реагирует. Может в таком случае как то из кода связку делать?
Igor
нет друг мой, я не это имел ввиду, а делить на группы то, что можно разделить, в большенстве экранов это не требуется, а в тех что требуется, безусловно, можно и нужно делить на группы, для читабельности и для удобства поддержки
Посмотри на Flutter, где весь UI состоит из вложенных компонентов. Вот там и переиспользуемости 100% и композируемость почти идеальная. PS там даже есть готовый рефакториг, который в 2 клик вынесет кусок в верстки в отдельный компонент (потому что это все просто код на dart).
Dj
Дело не во вкусах, а в простоте и композируемости CL совершенно не композируется по своей природе (тк нельзя вкладывать, а надо все хранить одной кучей) и он сильно увеличивается сложность верстки (как на ios, где их xml вообще никто не читает из-за ужастной сложности)
Но ведь для написания макета на CL не трубуется особых каких то знаний, в этом та и вся соль. Многих вообще не будет парить, что они не будут переиспользовать xml, а создавать каждый раз новый xml макет на каждый чих.
Dj
Не любишь переиспользование, пиши на XML!
padmitriy
переиспользование зло 🍿
Igor
как и на ios, где с опытом переходят от таскания мышкой к набиранию xml вручную
> как и на ios, где с опытом переходят от таскания мышкой к набиранию xml вручную Вот реально не встречал ни одного, скилового ios-ра, который так делал бы. Ты наверное перепутал с "от таскания мышкой к набиранию верстки в коде"
Dyno
Заблокировали AdSense аккаунт. Судя по всему из-за того, что с моего телефона крутилась реклама в приложении. Я не отключал. Я по рекламе не кликал, но она показывалась, пока я пользовался приложением. Судя по всему за это и забанили. Теперь можно подать апеляцию. И что мне им написать теперь? Извините, не знал? ... Эхх...
Dyno
Подскажите плиз кто знает
One
> как и на ios, где с опытом переходят от таскания мышкой к набиранию xml вручную Вот реально не встречал ни одного, скилового ios-ра, который так делал бы. Ты наверное перепутал с "от таскания мышкой к набиранию верстки в коде"
тут, согласен, правда, есть одно "НО" Самое большое кол-во конфликтов при мерджах в сторибордах, и тут хочешь не хочешь ios разрабу либо приходится лезть в них и вручную править либо ресетить и переделывать так что бы не было конфликтов
Dyno
Igor
Не любишь переиспользование, пиши на XML!
Видос (не совсем в тему, НО) объясняющий почему в Java так любят XML
Igor
Будь на android изначально котлин, все могло бы пойти по другому. И никакой Flutter с его компонентами был НЕ нужен.
Igor
Ну да, посмотрим что нам google выдаст послезавтра. Может и правда забьет болт на джаву и сделает свой Virtual-UI Anko DSL.
padmitriy
Видос (не совсем в тему, НО) объясняющий почему в Java так любят XML
видео не объясняет как можно верстать лучше чем с помощью xml
Igor
Потому что это видео про Java) а не android. Подожди 2 дня, возможно google объяснит на https://events.google.com/io/schedule/events/29485644-22a9-4138-a2d8-b2112a515a0d Если нет, то обращайся ко мне 😎
Mike
а как же мерж/инклуд?
Никак, на самом деле.)
Igor
а в чём проблема отдельные компоненты хранить в виде <merge>?
Тем что он поддерживает только статичную (НЕ параметризированну) верстку, а это достаточно бесполезно. В том же гребанном флатере, это просто класс с параметрами контруктора и тп. А react, это вообще просто функция, из параметров в верстку.
Tesla
Ребят, по скидывайте сюда ссылки на ваши приложения на плей маркете. Хочется посмотреть что вы делаете. Если конечно не секрет)
Tesla
Вам будет +1 скачавший )
Dj
а как же мерж/инклуд?
Составит немного труда, вытащить include компонент из готового layout, например того же CL. + Нагромождает пакет res/layout, он и так наверное будет забит всякими activity_*, fragment_*, так ещё эти мелкие файлики с include и merge
Dj
а так у тебя в проекте будут эти же файлы для анко и прочей хуйни
Можно всё в одном файлике написать, часто используемые компоненты
Dj
Alexey
Нужно свернуть элемент RecyclerView, но при этом чтобы позиция скролла сохранилась. Есть у кого-нибудь идеи?
Genie
Ребята, подскажите, пожалуйста, у кого есть опыт создания предустановленных приложений? (имею ввиду приложений, которые уже установлены на девайсе, когда покупаете новое устройство) Можете в личку написать, или здесь: В каком формате устанавливается всё на девайс? Как происходит в последующем обновление таких приложений?
Igor
Можно всё в одном файлике написать, часто используемые компоненты
Да, а еще им можно передавать параметры. Те сделать свою кнопку, передавать ей text/onClickListener и использовать по всему проекту (идельно ложится на дизайн-системы/атомарный-дизайн) А потом обернуть их в др anko-компонент и сделать композитный-виджет, прилагая минимум усилий.
Turalllb
Если в CoordinatorLayout есть ViewPager , то для элементов ViewPager реально применять поведение типа insetEdge или dodgeInsetEdges ? Что-то ни какой реакции не вижу на добавление атрибутов
Konstantin
сука да они в вебе то сверстать нн могут
Igor
Ну вот по этому я и не верю в google, у них всегда получается говно... С другой стороны тот чувак вроде в facebook работал.
Vladislav
Я также хочу)))
Vitaly
Отревьюйте и оцените пожалуйста код, Буду благодарен любому конструктивному комментарию https://gist.github.com/VitalyPeryatin/c7635a00a630311a5f7d813a86ffbaf4
Anonymous
Xamarin кто нибудь пробовал? Как он?
Alexander
Xamarin кто нибудь пробовал? Как он?
Пробовал. Смотря для чего
Anonymous
Пробовал. Смотря для чего
А для чего он лучше всего?
Ferrero
Названия переменных полей не по кодстайлу
Vitaly
> val operation = "connect" А смысл такого свойства? Оно же всегда равно одной константе.
Это моделька для запроса на сервер, он потом в Json трансформирует и там должно быть это свойство) Как лучше тогда сделать?
Vitaly
> ILoginRepository отвратное именование
Чем? Интерфейс для LoginRepository, как лучше тогда?
Mike
Чем? Интерфейс для LoginRepository, как лучше тогда?
сколько у тебя реализаций интерфейса?
Alexander
А для чего он лучше всего?
Xamarin Native можно использовать так же как и java/kotlin. Удобно когда back тоже на c#, многое переносится. Xamarin Forms хорош для прототипирования, но есть на нем и довольно не маленькие проекты (Instamart можешь посмотреть).
Alexander
в целом рассчитано на команду с преимущественно .Net разработчиками, если стоит выбор нативка и замарин- лучше нативку
Vitaly
Alexander
много проблем может возникнуть с подключением библиотек
Кирилл
сколько у тебя реализаций интерфейса?
Иньект наследников через di хорошо в том плане, что можно легко поменять реализацию. Параллельно пишешь новую реализацию, как готова - меняешь в di модуле и готово
Vitaly
> ResourcesClass.setLoginPasswordHash(token) буэ, синглтон какой-то
Согласен, на этот код не могу повлиять
Vitaly
ай, ужос
Почему?
Mike
Почему?
выходит интерфейс не ради переиспользования, а ради интерфейса/тестов
Mike
Нет, не будет. :)
Ну почему же? Просто исчезает indirection. Передаёшь реализацию явно.
Кирилл
Ну почему же? Просто исчезает indirection. Передаёшь реализацию явно.
Ага, только менять приходится не по всему проекту, а один раз в di
Mike
Ага, только менять приходится не по всему проекту, а один раз в di
так может в разных частях проекта нужны разные реализации
Vitaly
весь презентер полон ?. из-за нуллабельной вью — ужасно
А как иначе, она же не должна вечно храниться в презентере, она должна зануляться, когда нет вьюхи
Ferrero
можно делать ?.let {}
Konstantin
дели на модули, интерфейс в одном, реализация в другом, не надо будет стыдливо оправдываться за единственную реализацию😈
Vitaly
можно делать ?.let {}
Где это выходно я так и делаю
Konstantin