TGViewer
Channel Public Channel
Mobile Compose

Mobile Compose

@mobile_compose

Твой главный путеводитель в мир Jetpack Compose и Compose Multiplatform.

Android XR: @android_xr
Личный блог: @grigorievdy_blog

Автор: @grigorievdy

Поддержать канал: https://t.me/mobile_compose?boost
Subscribers
2.95K
Photos
160
Videos
3
Links
341

Showing posts older than #66 · Back to latest

Older Posts 20 shown
Post #65 962
#Article #Article

Dealing with flaky tests in Jetpack Compose

Статья рассказывает о том, как работать с так называемыми “Flaky” тестами при покрытии Jetpack Compose кода. В качестве решения проблемы автор предлагает использовать функционал библиотеки Barista. Подробнее в сегодняшней статье.
Medium Dealing with flaky tests in Jetpack Compose Sometimes is difficult to avoid flaky UI tests and Jetpack Compose is no exception. However we can use its tools to deal with them…
Post #64 1.02K
Post #63 964
#Release #Beta #Changelog

Релиз Jetpack Compose 1.0.0-beta02

Некоторые из изменений, пришедших с новым минорным бета обновлением:

▫️Небольшие изменения, связанные с выравниванием контента внутри AppBar и BottomAppBar. (Подробнее)
▫️Оптимизировали логику измерения LazyColumn, что позволило улучшить производительность списка примерно на 35%. (Подробнее)
▫️Добавлено дополнение hilt-navigation-compose с новым API для работы с viewmodel. (Подробнее)
▫️Исправлена проблема, возникавшая при сохранении состояния через rememberSaveable внутри NavHost destination. (Подробнее)

Новое обновление коснулось и дополнения, связанного с навигацией — navigation-compose было обновлено до версии 1.0.0-alpha09, основным изменением которой является то, что LocalViewModelStoreOwner.current теперь возвращает ViewModelStoreOwner? для точного определения, доступен ли ViewModelStoreOwner в текущей композиции.

Важно также помнить, что для перехода на beta02 необходимо поднять версию Kotlin compiler до 1.4.31.
Android Developers Recent Release Notes | Android Developers
Post #62 1.02K
#Article #Medium #Recomposition

How To Understand Composables & Recomposition: A Beginners Guide To Jetpack Compose

Неплохая статья, покрывающая основные фундаментальные концепции и термины, относящиеся к Jetpack Compose. Для лучшего восприятия материала, автор старается использовать как можно меньше незнакомых терминов, а также рассматривать новые концепции в сравнении с уже имеющимися решениями в традиционном UI-фреймворке.
Medium How To Understand Composables & Recomposition: A Beginners Guide To Jetpack Compose The purpose of this article is to explain a few fundamental concepts and terms regrading the Jetpack Compose UI Library on Android. I…
Post #61 1.02K
#Article #Medium

Architecture in Jetpack Compose — MVP, MVVM, & MVI

Интересная статья, разбирающая извечный вопрос “Какую архитектуру использовать для presentation-слоя приложения?” в контексте приложения на Jetpack Compose.

А какой архитектурный подход нравится больше вам?
Medium Architecture in Jetpack Compose — MVP, MVVM, & MVI This articles an experiment at how the architecture patterns we’re all familiar with transfer to compose.
Post #60 1K
#Beta #TheAndroidShow #Video #Youtube

Android Developers: Jetpack Compose screencasts

Помимо проведённого TheAndroidShow, на Youtube канале Android Developers появилось много обучающих видео, посвященных новому фреймворку. Это одинаково хорошо как для только начинающих своё знакомство с JC, так и для тех, кто уже активно использует его в своих проектах. Я решил собрать все туториалы в одном месте:

▫️ Jetpack Compose: Beta overview — общий обзор возможностей Jetpack Compose в разрезе новой беты.

▫️ Jetpack Compose: State — обучающий ролик о работе с одной из главных фич JC - состоянием.

▫️ Jetpack Compose: Accessibility — обучающий ролик о добавлении в ваш проект специальных возможностей, таких как озвучка текста или contentDescription изображений при помощи TalkBack.

▫️ Jetpack Compose: Lists — обучающий ролик о работе со списком данных в вашем приложении.

▫️ Jetpack Compose: Animation — обучающий ролик о работе c различными видами анимаций при помощи нового API.

▫️ Jetpack Compose: Testing — обучающий ролик о правильном написании тестов для проверки корректности работы вашего приложения.

P.S. В след за “легкой эйфорией”, появившейся после презентации беты на шоу, пришла более суровая реальность миграции всех проектов с alpha12, что оказалось немного сложнее, чем переход между двумя альфа-релизами. А если и у вас возникали подобные проблемы — всегда можно задать вопрос в нашем чат-канале.
Post #59 885
#Release #Beta #Changelog

Релиз Jetpack Compose 1.0.0-beta01

Некоторые из изменений, пришедших с обновлением до беты:

▫️Важно!🔥 Modifier.width/height/size были переименованы в Modifier.requiredWidth/requiredHeight/requiredSize, а Modifier.preferredWidth/preferredHeight/preferredSize, наоборот, переименованы в Modifier.width/height/size. При миграции на бету обязательно нужно на это обратить внимание. (Подробнее)
▫️Modifier.zoomable() заменён на Modifier.transformable() с новой функциональностью. (Подробнее)
▫️Теперь поля ввода сами обрабатывают фокус, а значит (в теории) никаких больше костылей с открытием клавиатуры. (Подробнее)
▫️Добавлен новый LocalSoftwareKeyboardController вместо существующего SoftwareKeyboardController. (Подробнее)
▫️Добавлен интерфейс TextFieldColors для представления различных цветов текста внутри полей ввода. (Подробнее)
▫️Для кликабельных элементов (кнопок, или использующих Modifier.clickable()) вместо передачи interactionState = remember { InteractionState() } необходимо теперь использовать interactionSource = remember { MutableInteractionSource() } для обработки различных взаимодействий с компонентов. (Подробнее)
▫️Стандартный метод setContent() из compose:ui окончательно удалён. Вместо него нужно использовать аналогичный, получаемый из зависимости activity-compose. То же самое касается и viewModel() с LocalViewModelStoreOwner — для их использования теперь подключаем lifecycle-viewmodel-compose. (Подробнее)
▫️Если у вас есть векторная анимация, написанная внутри XML, этот ресурс теперь можно импортировать с помощью функции animatedVectorResource(). (Подробнее)
▫️А также большое количество мелких Material API изменений. (Подробнее)

Новое обновление коснулось и дополнений, связанных с навигацией и пагинацией — navigation-compose и paging-compose были обновлены до версии 1.0.0-alpha08, однако существенных изменений в них практически нет.

Важно также помнить, что для перехода на beta01 необходимо поднять версию Kotlin compiler до 1.4.30, а также использовать свежую версию Android Studio Arctic Fox Canary 8 (2020.3.1.8).

P.S. Нас уже больше 500! Спасибо всем, чем больше нас — тем быстрее будет развиваться комьюнити, а вместе с ним и разработка Jetpack Compose.
P.S.S. Также напомню, что у нас еще есть свой чат-канал, в котором вы можете задать интересующий вопрос по JC 🙂.
Android Developers Recent Release Notes | Android Developers
Post #58 709
#Links #Release #Beta

Обзор TheAndroidShow

Как и обещал, “разбор полётов” вчерашней конференции. В целом TheAndroidShow прошло неплохо, хотя именно новых каких-то вещей показано почти не было. Было много рассказов о том, как поменяет жизнь в лучшую сторону использование нового фреймворка, ответы на несколько вопросов из твиттера, а также мелкие подробности по поводу будущего JC.

Основные выводы шоу:

▫️ API теперь стабильное, никаких больше кардинальных изменений от релиза к релизу
▫️ При этом разработчики настаивают на том, что это всё-таки не Stable релиз, поэтому баги никто не отменял (именно над их устранением и будет работать команда до Stable)
▫️ Завезли новые решения для анимаций, которые решили показать прямо на шоу.
▫️ По Stable пока ничего не понятно, но, вроде как без изменений, ориентир на лето 2021.

P.S. Ну а ближайшее время ждите дайджест с изменениям в бете 😉
Post #57 906
#Links #Release

#TheAndroidShow​: Jetpack Compose Livestream

Напоминаю, что сегодня, уже через 2 часа, начнётся TheAndroidShow, на котором нам должны представить бету, а также рассказать о дальнейших планах развития Jetpack Compose.

Ссылка на трансляцию тут
YouTube #TheAndroidShow: Jetpack Compose Livestream Join us on February 24 at 9AM PT for #TheAndroidShow, where we'll give you a behind the scenes look at Jetpack Compose, Android's modern toolkit for building native UI. Tweet us your burning question on Jetpack Compose using #TheAndroidShow. We've assembled…
Post #55 1.15K
#Links #Release

Announcing #TheAndroidShow​: Jetpack Compose!

Как говорится, дождались 🔥!
Спустя почти полгода после перехода Jetpack Compose в статус alpha и выпуска 12 релизов обновлений, Google готов анонсировать beta релиз фреймворка на специально организованном мероприятии TheAndroidShow. Помимо анонса беты, нас ждут новости прямиком от разработчиков JC, ну и конечно же, надеемся на то, что нам назовут более-менее точную дату стабильного релиза.

▫️ Когда? — 24 февраля в 20:00

А для тех, кто по каким-либо причинам не сможет посмотреть шоу, я в любом случае устрою “разбор полётов” после мероприятия, где постараюсь осветить главные моменты🙂.
YouTube Announcing #TheAndroidShow: Jetpack Compose! Join us on February 24 at 9AM PT for #TheAndroidShow, where we'll give you a behind the scenes look at Jetpack Compose, Android's modern toolkit for building native UI. Tweet us your burning question on Jetpack Compose using #TheAndroidShow. We've assembled…
Post #54 1.09K
#Article #Medium

Getting our apps ready for Jetpack Compose

Пока активно развивающийся Jetpack Compose близится к бета релизу, все больше разработчиков начинают задумываться о переводе своих уже существующих проектов на новый фреймворк. О том, как подготовиться к такому переходу “с минимальными потерями” рассказывает Android GDE Joe Birch в своей новой статье.
Medium Getting our apps ready for Jetpack Compose Since the announcement of Jetpack Compose, followed by the developer and alpha releases of the framework, excitement has been building…
Post #53 1.01K
​​Друзья! В последней публикации о новом релизе я решил добавить ссылки на PR в AOSP для каждого описанного изменения. Это может быть полезно тем, кто хочет воочию разобраться с тем, как то или иное изменение было реализовано. Как вам такая идея? Продолжать это в последующих релизах или оставить лишь краткое описание (как было раньше)?
Post #52 900
#Release #Alpha #Changelog

Релиз Jetpack Compose 1.0.0-alpha12

Некоторые из изменений, пришедших с новым обновлением:

▫️AnimatedValue/Float теперь deprecated. Вместо этого теперь стоит использовать Animatable. (Подробнее)
▫️Для LazyColumn/LazyRow добавлены настраиваемые ключи для более эффективной работы с изменяемыми данными списка. (Подробнее)
▫️tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter и pressIndicaitonGestureFilter теперь deprecated. Доступ к жестам можно теперь получить при помощи Modifier.pointerInput и функции detectTapGestures. (Подробнее)
▫️ConstraintLayout вынесли в отдельное API, которое теперь нужно подключать отдельно к проекту. (Подробнее)
▫️Для Tab и BottomNavigationItem добавлен параметр enabled для обработки случая, когда компонент не должен реагировать на нажатия. (Подробнее)
▫️Блок ComponentActivity.setContent перенесен из пакета androidx.compose.ui.platform в androidx.activity.compose. (Подробнее)

Обновление коснулось и дополнений, связанные с навигацией и пагинацией — navigation-compose и paging-compose были обновлены до версии 1.0.0-alpha07.
Помимо этого, было добавлено еще дополнение для работы с ViewModel — lifecycle-viewmodel-compose
Некоторые из изменений, коснувшихся дополнений:

▫️navigation-compose теперь зависит от lifecycle-viewmodel-compose для обеспечения поддержки viewModel() composable-destinations. (Подробнее)
▫️NavHost теперь использует LocalOnBackPressedDispatcherOwner из зависимости Activity-Compose для получения OnBackPressedDispatcher. (Подробнее)

P.S. Также важно, что для перехода на alpha12 необходимо поднять версию Kotlin compiler до 1.4.30, а также подключить зависимость androidx.activity:activity-compose:1.3.0-alpha02.
Android Developers Recent Release Notes | Android Developers
Post #51 812
#Article #Medium

Jetpack Compose Image Content ScaleType Fully Illustrated

При работе с изображением нередко встает вопрос о его размещении внутри какой-либо другой формы. В традиционном Android UI-фреймворке мы имеем параметр android:scaleType, предлагающий различные режимы масштабирования, которые можно применить к изображению в зависимости от размера представления, в которое оно будет помещено. В Jetpack Compose для решения этого вопроса используются сразу два параметра — alignment и contentScale. Подробнее о том, в каких случаях нужно использовать те или иные значения параметров, автор рассказывает в сегодняшней статье.
Medium Jetpack Compose Image Content ScaleType Fully Illustrated Easily determine which image scale type you need
Post #50 950
#Release #Alpha #Changelog

Релиз Jetpack Compose 1.0.0-alpha11

Некоторые из изменений, пришедших с новым большим обновлением:

▫️Переходы (transitions), основанные на transitionDefinition<>, теперь deprecated.
▫️Метод animateAsState() заменён на более конкретные методы animateFloatAsState(), animateDpAsState(), animateOffsetAsState() и т.д.
▫️Методы items(items: List) and itemsIndexed(items: List) для списков теперь являются extension-функциями, поэтому после миграции на alpha11 придётся их импортировать вручную.
▫️В конструктор Image и Icon добавлен обязательный параметр contentDescription.
▫️ScrollableColumn/Row теперь deprecated. Вместо них рекомендуется использовать LazyColumn и LazyRow.
▫️WithConstraints переименован в BoxWithConstraints и перемещён в пакет foundation.layout.
▫️У BasicTextField появился параметр decorationBox, который позволяет добавить различные декорации к текстовому полю (такие как иконка, заголовок, плейсхолдер и т.д.).
▫️Surface теперь может иметь несколько вложенных потомков.

Также обновление коснулось и дополнений, связанные с навигацией и пагинацией — navigation-compose и paging-compose были обновлены до версии 1.0.0-alpha06.
Изменений на этот раз довольно мало, в основном исправление существующих проблем:

▫️По пагинации существенных изменений нет.
▫️Для NavController добавлен extension-метод getBackStackEntry(route: String).

P.S. Также важно, что для перехода на alpha11 необходимо поднять версию Kotlin compiler до 1.4.21-2.
P.S.S. Мы преодолели отметку в 400! Спасибо всем, двигаемся дальше.
Android Developers Recent Release Notes | Android Developers
Post #48 852
#Article #Medium #Navigation

Android Then and Now: Navigation

Новая статья из серии сравнений различных компонентов Android-разработки "Тогда и Сейчас". На этот раз автор разбирает как изменилась навигационная архитектура мобильных приложений, Среди прочего, автор рассматривает и Single-View подход, который активно используется в Jetpack Compose.
Medium Android Then and Now: Navigation Android Development has changed a lot over the years. Let’s look back at how things were, and explore what’s changed! Today: Navigation.
Post #47 891
#Article #Medium

Infinite Lists With Paging 3 in Jetpack Compose

Пагинация является важным элементом мобильного приложения, когда дело касается работы с различными списками данных. Она позоляет создать эффект “бесконечного списка”, благодаря своевременной подгрузке данных с источника. В Jetpack Compose для этих целей даже существует специальное дополнение — paging-compose. О том, как правильно реализовать “бесконечный список” при помощи paging-compose и рассказывает автор в сегодняшней статье.
Medium Infinite Lists With Paging 3 in Jetpack Compose In this article you will learn how to do pagination with Paging 3 library in Jetpack Compose.
Post #46 834
#Article #Medium

How to Handle User Interactions With Component-Based Architecture and Jetpack Compose

Недавно здесь был пост со статьей про компонентную архитектуру, основной идеей которой является выделение самостоятельных переиспользуемых компонентов, называемых UIComponents. Однако такой подход имеет один минус - любой UIComponent в чистом виде является статичным и не способен обрабатывать действия пользователя (например, клик). В качестве решения этой проблемы автор предлагает использовать интерфейс UIDelegate. Подробнее в сегодняшнем материале.
Post #45 816
#Article #Medium #UI

Expandable lists in Jetpack Compose

Интересная статья, в которой автор рассказывает как можно реализовать двухуровневый список, в котором каждый элемент при нажатии раскрывается и отображает собственный вложенный список. Всё это работает через ViewModel и StateFlow, а также украшено интересной анимацией сворачивания/разворачивания карточки.
Medium Expandable lists in Jetpack Compose Expandable views are a common way to hide details of a visualised data structures. Let’s take a look at how the following can be achieved…
Post #44 789
#Release #Alpha #Changelog

Релиз Jetpack Compose 1.0.0-alpha10

Некоторые из изменений, пришедших с новым обновлением:

▫️Добавлен экспериментальный метод stickyHeader для списков LazyColumn и LazyRow
▫️FlowRow и FlowRow теперь deprecated
▫️В конструктор текстовых полей добавлены параметры enabled и readOnly для реализации “неактивного” поля
▫️TestUiDispatcher теперь deprecated, вместо этого использовать Dispatchers.Main
▫️Метод animate() заменён на animateAsState(), который теперь возвращает State<T> вместо T

Также обновление коснулось и дополнений, связанные с навигацией и пагинацией — navigation-compose и paging-compose были обновлены до версии 1.0.0-alpha05, однако существенных изменений в новых версиях библиотек нет.
Android Developers Recent Release Notes | Android Developers
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →