Фреймворк тестирования Ultron обзавелся поддержкой Compose Multiplatform. Пока находится в стадии альфа, но уже можно пробовать писать свои тесты на нём.
Автор библиотеки сделал её большой разбор в📺 видео для @android_broadcast
#тестирование #multiplatform #compose
Автор библиотеки сделал её большой разбор в
#тестирование #multiplatform #compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍1
Разбор(EN,6м) того как работает Jetpack Compose Preview в IDE и на устройстве/эмуляторе
#compose #androidstudio
#compose #androidstudio
👌3
Полезная статья (EN,12м) с демонстрацией что умеют TextField в Compose и как это реализовать. Примеры с градиентами, маской ввода номера карты, обработка действий пользователя, использование username и многое другое
#compose
#compose
❤28👍14🔥1
Что лучше брать для представления состояния в Compose: MutableState или MutableStateFlow из корутин? Размышления и сравнение читайте в статье (EN, 8м)
#compose #coroutines
#compose #coroutines
👍6
👍14❤1
❤17👍8
This media is not supported in your browser
VIEW IN TELEGRAM
Valkyrie - плагин для Idea/Android Studio от подписчика канала для конвертации SVG и Android XML Vector Drawable в Compose ImageVector. Поддерживает Compose Multiplatform
Давайте поддержим звездой на GitHub
#compose #idea #androidstudio
Давайте поддержим звездой на GitHub
#compose #idea #androidstudio
👍61🔥5
Forwarded from Kotlin Adept Notes (Alex Panov)
Нашли серьезную уязвимость в Jetpack Navigation Compose, которая позволяет открыть любой экран в приложении, даже если там нет явных диплинков ⚠️
Эксплуатируется она максимально просто, достаточно знать имя пакета и название маршрута в графе навигации:
Как защититься
1. Разумеется лучший вариант не использовать данную навигацию, можете посмотреть мой пост со сравнением библиотек навигации для Compose и выбрать подходящую
2. Если в приложении не используются диплинки, можно частично решить проблему перетерев data в определенном intent:
#Security #Compose
@kotlin_adept
Эксплуатируется она максимально просто, достаточно знать имя пакета и название маршрута в графе навигации:
Intent().apply {
setClassName("your.package", "your.package.MainActivity")
data = Uri.parse("android-app://androidx.navigation/YOUR_DESTINATION")
startActivity(this)
}
Как защититься
1. Разумеется лучший вариант не использовать данную навигацию, можете посмотреть мой пост со сравнением библиотек навигации для Compose и выбрать подходящую
2. Если в приложении не используются диплинки, можно частично решить проблему перетерев data в определенном intent:
val intentData = intent.dataString
if (intentData != null && intentData.startsWith("android-app://androidx.navigation")) {
intent.setData(null)
}
#Security #Compose
@kotlin_adept
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30💯4
Media is too big
VIEW IN TELEGRAM
0:00 Introduction
0:39 Basic layout animations
1:11 How do layout animations work
3:18 Lookahead
4:58 Use cases for Lookahead
5:56 Shared elements
6:39 SharedTransitionLayout
8:08 Modifier.sharedElement
9:02 Custom animation specs
9:40 Modifier.sharedBounds
11:43 ResizeMode
12:52 Overlay
15:37 Modifier.skipToLookaheadSize
16:29 Clipping
18:53 Modifier ordering
19:54 Predictive Back
20:53 Shared elements under the hood
21:09 Composition Phase
22:14 Layout Phase
26:27 Drawing Phase
26:49 Overlay under the hood
28:02 Challenges with overlay
29:42 Summary
#compose #анимация
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍6👏2