Size: a a a

Android Architecture

2020 July 16

СГ

Сергей Греков... in Android Architecture
Artemiy
во-вторых, DSL фреймворки - Anko, MVRX - оба сдохли, так и не взлетев. Потому что под XML испокон веков делалась херова тьма аттрибутов, которые даже не обязательно имеют свои аналоги в коде.

У View нет своей ViewModel - ну да. Или View все-таки имплементит ViewModelStoreOwner? мне кажется, все-таки нет.

Фрагмент нельзя вставлять в xml ... и привязывать к нему данные. Просто ты можешь вставить, просто можешь и данные привязать, а все вместе нет, а надо для компонентной логики.
источник

A

Artemiy in Android Architecture
Некрутов Эдуард
Тогда в ответ зацени либу, которая отлично справляется с поставленной задачей и приносит большую пользу при разработке. И уже тестируется в крупном проекте и взята за основу в новом проекте))
во-первых, я не люблю многомодульную архитектуру, если мы говорим, что модуль - это фича. Я предпочитаю зазграничивать модулями слои. Во-вторых, твой проект либо слишком сложный, либо херово описан. Груда текста ридми и ни одного примера кода. Ты говоришь, что что-то делается, например: "Создал команду на открытие модуля. Скоуп откроется и закроется сам. Фрагмент создастся сам. Зависимости заинжектятся сами.". А как это все в коде выглядит, я сам должен представить? Ну с таким успехом я мог бы всю библиотеку сам написать на основании ридми.

А навигация, я считаю, должна выполнятся с помощью компонентной логики. Есть компонент, Navigator, который собсна создает фрагменты и передает им данные. Этот компонент разновидности renderless, то есть он имеет нулевые размеры, но вставляется в разметку, как обычный компонент. В этот компонент инверсивно привязывается destination - класс с данными, на основании которых компонент будет понимать, какой фрагмент создавать. Инверсивность нужна, чтобы после осуществления навигации затирать destination
источник

A

Artemiy in Android Architecture
ну то же самое. Еще раз, существует херова тьма нативных и кастомных вьюх, которые создавались именно под xml. То есть, они настраиваются XML аттрибутами, которые если и имеют аналоги в коде, то далеко не такие удобные, а то и не имеют вовсе. И если с кнопочкой и тестом все понятно, то в сложной разметке с кучей разных вьюх все становится уже совсем по-другому. Например, ресурсы будешь привязывать как context.resources.getblabla... Во-вторых, xml енамы у тебя лесом идут, будешь шариться в поисках нужных констант. В-третиьх, посмотри апи референс каких-нибудь кастомных вьюх. Там упоминаются только xml аттрибуты. И найти то, как это делается в коде, будет для тебя интересным квестом.
И еще круто, у тебя не будет инверсив биндинга, а это очень нужная вещь.

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

I

Igor in Android Architecture
Artemiy
ну то же самое. Еще раз, существует херова тьма нативных и кастомных вьюх, которые создавались именно под xml. То есть, они настраиваются XML аттрибутами, которые если и имеют аналоги в коде, то далеко не такие удобные, а то и не имеют вовсе. И если с кнопочкой и тестом все понятно, то в сложной разметке с кучей разных вьюх все становится уже совсем по-другому. Например, ресурсы будешь привязывать как context.resources.getblabla... Во-вторых, xml енамы у тебя лесом идут, будешь шариться в поисках нужных констант. В-третиьх, посмотри апи референс каких-нибудь кастомных вьюх. Там упоминаются только xml аттрибуты. И найти то, как это делается в коде, будет для тебя интересным квестом.
И еще круто, у тебя не будет инверсив биндинга, а это очень нужная вещь.

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


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

A

Artemiy in Android Architecture
Igor
> То есть, они настраиваются XML аттрибутами, которые если и имеют аналоги в коде, то далеко не такие удобные, а то и не имеют вовсе.


а можно пару реальных примеров, чего-то что нужно, но невозможно настроить из кода?
ну чем там я в последнее время пользовался, MotionLayout  - у него нельзя программно настроить следующие аттрибуты
источник

A

Artemiy in Android Architecture
для детей AppBarLayout
источник

A

Artemiy in Android Architecture
expanded для самого AppBarLayout
источник

A

Artemiy in Android Architecture
android:buttonGravity, android:gravity, android:maxButtonHeight у Toolbar
источник

AD

Aleksey D. in Android Architecture
а кто-то этим пользуется?
источник

A

Artemiy in Android Architecture
всякие хейтеры DSLек
источник

I

Igor in Android Architecture
Справедливо) единственная радость что композ вместе с mvvm убъет и motionlayout 😌
источник

K

Kirill in Android Architecture
Igor
Справедливо) единственная радость что композ вместе с mvvm убъет и motionlayout 😌
Через 5 лет -_-
источник

СГ

Сергей Греков... in Android Architecture
Artemiy
ну то же самое. Еще раз, существует херова тьма нативных и кастомных вьюх, которые создавались именно под xml. То есть, они настраиваются XML аттрибутами, которые если и имеют аналоги в коде, то далеко не такие удобные, а то и не имеют вовсе. И если с кнопочкой и тестом все понятно, то в сложной разметке с кучей разных вьюх все становится уже совсем по-другому. Например, ресурсы будешь привязывать как context.resources.getblabla... Во-вторых, xml енамы у тебя лесом идут, будешь шариться в поисках нужных констант. В-третиьх, посмотри апи референс каких-нибудь кастомных вьюх. Там упоминаются только xml аттрибуты. И найти то, как это делается в коде, будет для тебя интересным квестом.
И еще круто, у тебя не будет инверсив биндинга, а это очень нужная вещь.

Чтобы написать свой принцип разработки юая, отличный от XML, нужно очень нихерово заморочиться. Потому что за время сущствования Android создались какие-то устоявшиеся принципы разработки, и каким бы дартаньяном ты не был, у тебя не получится их переиначить. Для этого нужны сверх ресурсы, и куча времени. Для примера собсна композ, который пишут лучшие умы вот уже полтора года.
Ты не поверишь, но практически для всех аттрибутов в Андроидовским фреймворке есть аналоги в коде, и подавляющее их число называется так же. Тех которых нет, скорее исключения.
P.S. Про MotionLayout не скажу, не смотрел. Но через xml  в Inkremental тоже можно биндить.
За подробностями приглашаю в https://t.me/inkremental
источник

AA

Axbor Axrorov in Android Architecture
Artemiy
ну то же самое. Еще раз, существует херова тьма нативных и кастомных вьюх, которые создавались именно под xml. То есть, они настраиваются XML аттрибутами, которые если и имеют аналоги в коде, то далеко не такие удобные, а то и не имеют вовсе. И если с кнопочкой и тестом все понятно, то в сложной разметке с кучей разных вьюх все становится уже совсем по-другому. Например, ресурсы будешь привязывать как context.resources.getblabla... Во-вторых, xml енамы у тебя лесом идут, будешь шариться в поисках нужных констант. В-третиьх, посмотри апи референс каких-нибудь кастомных вьюх. Там упоминаются только xml аттрибуты. И найти то, как это делается в коде, будет для тебя интересным квестом.
И еще круто, у тебя не будет инверсив биндинга, а это очень нужная вещь.

Чтобы написать свой принцип разработки юая, отличный от XML, нужно очень нихерово заморочиться. Потому что за время сущствования Android создались какие-то устоявшиеся принципы разработки, и каким бы дартаньяном ты не был, у тебя не получится их переиначить. Для этого нужны сверх ресурсы, и куча времени. Для примера собсна композ, который пишут лучшие умы вот уже полтора года.
один человек написал телеграм без xml )
источник

QH

Quantum Harmonizer in Android Architecture
Artemiy
ну чем там я в последнее время пользовался, MotionLayout  - у него нельзя программно настроить следующие аттрибуты
Это довольно типичная ситуация, когда
а) XML-атрибуты используются только для начальной инициализации, а в процессе работы вьюхи свойства изменяются другим путём,
б) атрибуты и методы тупо называются иначе.
Судя по декомпилированному классу, исходников которого почему-то не видать, applyMotionScene=false приводит к тому, что scene=null, а изменить это можно, вызвав setScene. showPaths и motionDebug выставляют поле debugPath, то же можно сделать методом setDebugMode.
источник

A

Artemiy in Android Architecture
Теперь хотелось бы сказать пару слов для тех, кому показалось беспардонным то, что я продвигаю здесь свой проект. Коллеги, я здесь не объявление вешаю о продаже гаража, которое я мог бы повесить на авито. И не советую поиграть в новое мморпг, что я мог бы посоветовать через ЯДирект. К сожалению, фреймворки раскручивать сложно. Единственный действенный способ - это рассказывать лично людям. В малых масштабах - знакомым, например, или в больших - в чатах, на конфах. Сейчас не получается даже ходить на конфы. И вся надежда на вот такие чатики. Я не преследую какую-то злую цель, не зазываю в лохотрон. Я сделал хорошо оформленный проект, который приносит реальную пользу для разработчиков. И никто даже из здешних ворчунов не сказал, что это не так. Поэтому прошу отнестись с пониманием и лучше всего поставить звезду.
источник

A

Artemiy in Android Architecture
Quantum Harmonizer
Это довольно типичная ситуация, когда
а) XML-атрибуты используются только для начальной инициализации, а в процессе работы вьюхи свойства изменяются другим путём,
б) атрибуты и методы тупо называются иначе.
Судя по декомпилированному классу, исходников которого почему-то не видать, applyMotionScene=false приводит к тому, что scene=null, а изменить это можно, вызвав setScene. showPaths и motionDebug выставляют поле debugPath, то же можно сделать методом setDebugMode.
Ну вот то, что они тупо называются иначе, это тоже часть проблемы. Описаны то в гайдах и референсах только аттрибуты. И лезь капайся, как там их программно настроить
источник

QH

Quantum Harmonizer in Android Architecture
Artemiy
Ну вот то, что они тупо называются иначе, это тоже часть проблемы. Описаны то в гайдах и референсах только аттрибуты. И лезь капайся, как там их программно настроить
Как видишь, я с лёгкостью это сделал, хотя никогда в жизни не использовал ни констреинт, ни моушен.
Это отбирает гораздо меньше времени и нервов, чем работа с XML. Что уж говорить о дата-байндинге в XML, да ещё и с каптом.
источник

A

Artemiy in Android Architecture
Quantum Harmonizer
Как видишь, я с лёгкостью это сделал, хотя никогда в жизни не использовал ни констреинт, ни моушен.
Это отбирает гораздо меньше времени и нервов, чем работа с XML. Что уж говорить о дата-байндинге в XML, да ещё и с каптом.
ну я могу то же про программную работу с вьюхой сказать. Забыл еще упомянуть про LayoutParams, ммм, какая сладость, как их весело настраивать в коде.
источник

QH

Quantum Harmonizer in Android Architecture
Artemiy
ну я могу то же про программную работу с вьюхой сказать. Забыл еще упомянуть про LayoutParams, ммм, какая сладость, как их весело настраивать в коде.
нормально, в Splitties всё для этого есть.
источник