Расскажите про способы добавления и переключения фрагментов. Как работать с бэкстэком?
Для управления фрагментами используются два класса: FragmentManager и FragmentTransaction.
Для получения
Методы класса
add() добавляет фрагмент на активити или другой фрагмент. Принимает аргументами
Другой способ добавить фрагмент - определить в лэйауте с помощью тега
remove() - операция, обратная
replace() удаляет все фрагменты, добавленные методом
Эти операции не выполняются сразу же после вызова методов. Метод commit() завершает транзакцию и выполняет операции транзакции.
Метод addToBackStack() добавляет транзакцию в Back Stack. Это значит, что когда пользователь нажмет Back транзакция откатится.
Метод popBackStack() удаляет транзакцию с верхушки бэкстэка, возвращает
Документация.
#Fragment #android
Для управления фрагментами используются два класса: FragmentManager и FragmentTransaction.
Для получения
FragmentManager используются метод активити getSupportFragmentManager() или метод фрагмента getChildFragmentManager().FragmentManager начинает транзакцию и возвращает объект FragmentTransaction вызовом метода beginTransaction().Методы класса
FragmentTransaction, которые необходимо знать - add(), remove() и replace().add() добавляет фрагмент на активити или другой фрагмент. Принимает аргументами
containerViewId, в который добавляется фрагмент, инстанс фрагмента, тег.Другой способ добавить фрагмент - определить в лэйауте с помощью тега
<fragment>.remove() - операция, обратная
add(). Удаляет фрагмент.replace() удаляет все фрагменты, добавленные методом
add() в заданный контейнер, и добавляет переданный аргументом фрагмент в контейнер. Параметр tag может быть null.Эти операции не выполняются сразу же после вызова методов. Метод commit() завершает транзакцию и выполняет операции транзакции.
Метод addToBackStack() добавляет транзакцию в Back Stack. Это значит, что когда пользователь нажмет Back транзакция откатится.
addToBackStack() применяется ко всем операциям в транзакции. Например следующий код добавляет транзакцию из трех операций в бэкстэк:fragmentTransaction
.add(R.id.fragmentContainer1, fragment1)
.add(R.id.fragmentContainer2, fragment2)
.replace(R.id.fragmentContainer1, fragment3)
.addToBackStack("tag")
.commit()Метод popBackStack() удаляет транзакцию с верхушки бэкстэка, возвращает
true, если бэкстэк хранил хотя бы одну транзакцию.Документация.
#Fragment #android
👍2
Dagger + Anvil: Learning to Love Dependency Injection on Android (Dagger + Anvil: как полюбить внедрение зависимостей на Android)
https://gpeal.medium.com/dagger-anvil-learning-to-love-dependency-injection-on-android-8fad3d5530c9
#android
https://gpeal.medium.com/dagger-anvil-learning-to-love-dependency-injection-on-android-8fad3d5530c9
#android
👍2
Вы мобильный разработчик? Для вас найдутся десятки интересных проектов на GetWork
GetWork — это фриланс-платформа, где собраны задачи разной сложности по разработке мобильных приложений. Поэтому задания подойдут как опытным, так и начинающим мобильным разработчикам.
Средняя оплата за задание: $50. К каждому заданию прилагается концепция приложения и подробное ТЗ. В работе могут использоваться Unity, Kotlin, Flutter, Xamarin, React Native, Cordova и Libgdx.
Если возникнут проблемы, техподдержка платформы поможет их решить.
Подробности: https://bit.ly/3OuS5Im
GetWork — это фриланс-платформа, где собраны задачи разной сложности по разработке мобильных приложений. Поэтому задания подойдут как опытным, так и начинающим мобильным разработчикам.
Средняя оплата за задание: $50. К каждому заданию прилагается концепция приложения и подробное ТЗ. В работе могут использоваться Unity, Kotlin, Flutter, Xamarin, React Native, Cordova и Libgdx.
Если возникнут проблемы, техподдержка платформы поможет их решить.
Подробности: https://bit.ly/3OuS5Im
👍2
От View к Composable: Быстрый переход к Jetpack Compose с точки зрения Android View (со шпаргалкой)
https://medium.com/@alexstyl/views-to-composables-d715b92c6055
#android #compose
https://medium.com/@alexstyl/views-to-composables-d715b92c6055
#android #compose
👍3
Подборка каналов для IT специалистов 🎯
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
CodePen 📌
https://t.me/codepen_1 Сообщество пользователей CodePen
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Вакансии для программистов 📌
https://t.me/progjob
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Арбитраж трафика 📌
https://t.me/partnerochkin CPA и арбитраж трафика
Крипта 📌
https://t.me/bitkoinoff Новости криптовалют
DeepFake 📌
https://t.me/deepfakenow Публикуем deepfake видео
Мир технологий 📌
https://t.me/mir_teh Видео из мира технологий
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
CodePen 📌
https://t.me/codepen_1 Сообщество пользователей CodePen
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Вакансии для программистов 📌
https://t.me/progjob
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Арбитраж трафика 📌
https://t.me/partnerochkin CPA и арбитраж трафика
Крипта 📌
https://t.me/bitkoinoff Новости криптовалют
DeepFake 📌
https://t.me/deepfakenow Публикуем deepfake видео
Мир технологий 📌
https://t.me/mir_teh Видео из мира технологий
👍1👏1
12 лучших инструментов разработки Flutter
https://ricardo-castellanos-herreros.medium.com/top-5-flutter-development-tools-7f593b27cc54
#Flutter
https://ricardo-castellanos-herreros.medium.com/top-5-flutter-development-tools-7f593b27cc54
#Flutter
👋🏻 Друзья, хорошие новости!
Давно хотели обучиться мобильной разработке? Школа мобильной разработки SwiftBook открывает бесплатный доступ к первому занятию по курсу «Профессия iOS-разработчик».
Уже сегодня, 2 мая в 20:00 (мск) у вас есть шанс оценить живой формат занятий и узнать, с чего начинается создание мобильных приложений на языке Swift.
⚡️ Тема первой лекции: Константы и переменные. Базовые типы данных
● Краткая история Swift
● Преимущество языка
● Синтаксис языка и основные концепции
● Знакомство с Playground
● Константы и переменные
● Базовые типы данных
Сегодня SwiftBook — это более 10 000 выпускников, которые уже работают в крупных IT компаниях. Обучение проходит под чутким руководством опытного преподавателя и поддержки дружного сообщества.
Регистрация по ссылке ➤ ЗДЕСЬ
Давно хотели обучиться мобильной разработке? Школа мобильной разработки SwiftBook открывает бесплатный доступ к первому занятию по курсу «Профессия iOS-разработчик».
Уже сегодня, 2 мая в 20:00 (мск) у вас есть шанс оценить живой формат занятий и узнать, с чего начинается создание мобильных приложений на языке Swift.
⚡️ Тема первой лекции: Константы и переменные. Базовые типы данных
● Краткая история Swift
● Преимущество языка
● Синтаксис языка и основные концепции
● Знакомство с Playground
● Константы и переменные
● Базовые типы данных
Сегодня SwiftBook — это более 10 000 выпускников, которые уже работают в крупных IT компаниях. Обучение проходит под чутким руководством опытного преподавателя и поддержки дружного сообщества.
Регистрация по ссылке ➤ ЗДЕСЬ
👍3🔥1
Каждый экран в вашем iOS-приложении должен быть скроллируемым
В этой статье я расскажу вам, почему каждый основной экран в вашем приложении должен быть помещен в скроллируемое представление.
Подождите, что? Не все в моем приложении должно прокручиваться! Раньше я был с вами согласен, но за последние пять лет я понял, что это почти всегда неверное предположение.
#ios
В этой статье я расскажу вам, почему каждый основной экран в вашем приложении должен быть помещен в скроллируемое представление.
Подождите, что? Не все в моем приложении должно прокручиваться! Раньше я был с вами согласен, но за последние пять лет я понял, что это почти всегда неверное предположение.
#ios
👍4
Стелем мягкую соломку на жёсткий Flutter: как подготовиться к первому проекту, чтобы не провалить его
Если вы только думаете начать писать свой первый Flutter-проект, скорее всего, вы даже не догадываетесь обо всех граблях, которые скрыты под листвой показательно низкого порога вхождения в технологию.
Наверняка вопросов больше, чем ответов. Стоит ли задумываться о локализации на старте и какой подход выбрать? А ничего страшного, что я Android совершенно не знаю? Если тестировщик просит несколько конфигураций сборки для него настроить, мне сразу резюме обновлять или не всё так страшно? Ещё и Dart этот… вроде обычный язык, но всё какие-то флешбеки из динамически типизированного прошлого простреливают.
Эта статья будет фонариком в тёмной и неисследованной пещере ужасов под названием «первый проект на Flutter».
#Flutter
Если вы только думаете начать писать свой первый Flutter-проект, скорее всего, вы даже не догадываетесь обо всех граблях, которые скрыты под листвой показательно низкого порога вхождения в технологию.
Наверняка вопросов больше, чем ответов. Стоит ли задумываться о локализации на старте и какой подход выбрать? А ничего страшного, что я Android совершенно не знаю? Если тестировщик просит несколько конфигураций сборки для него настроить, мне сразу резюме обновлять или не всё так страшно? Ещё и Dart этот… вроде обычный язык, но всё какие-то флешбеки из динамически типизированного прошлого простреливают.
Эта статья будет фонариком в тёмной и неисследованной пещере ужасов под названием «первый проект на Flutter».
#Flutter
👍2
Media is too big
VIEW IN TELEGRAM
Стили в Android. Как организовать темы в проекты
Обзор организации стилей в Android: Theme, ThemeOverlay, TextAppearance, View Style.
0:00 Вступление
0:43 Что такое стиль
2:26 Каналы Android Broadcast
3:36 Наследование стилей
4:29 Типы стилей
6:56 Ссылка на атрибут
7:57 Кодинг. Настройка тем в проекте
19:32 Заключение
#Android
Обзор организации стилей в Android: Theme, ThemeOverlay, TextAppearance, View Style.
0:00 Вступление
0:43 Что такое стиль
2:26 Каналы Android Broadcast
3:36 Наследование стилей
4:29 Типы стилей
6:56 Ссылка на атрибут
7:57 Кодинг. Настройка тем в проекте
19:32 Заключение
#Android
👍1
Изящная обработка сбоев Android-приложения
https://proandroiddev.com/gracefully-handling-android-app-crashes-479c275e1545
#Android
https://proandroiddev.com/gracefully-handling-android-app-crashes-479c275e1545
#Android
👍3
Наиболее распространенные уязвимости в мобильных приложениях
Этой статьей я бы хотел открыть серию материалов, посвященных мобильной безопасности. И сегодня поговорить о тех уязвимостях, что мы встречаем чаще всего при автоматическом анализе.
#безопасность #android #ios
Этой статьей я бы хотел открыть серию материалов, посвященных мобильной безопасности. И сегодня поговорить о тех уязвимостях, что мы встречаем чаще всего при автоматическом анализе.
#безопасность #android #ios
👍1
Важен ли порядок, в котором добавляются операции в FragmentTransaction?
Документация описывает два случая, в которых порядок важен:
1. Метод commit() должен вызываться последним.
2. Если несколько фрагментов добавляются в один контейнер, то порядок добавления определяет порядок в котором фрагменты отрисовываются в иерархии
Есть еще третий случай. Если метод addToBackStack(String name) вызывается несколько раз на одной транзакции, то транзакция добавляется в бэкстэк один раз с тегом, который передается в последнем вызове метода.
Пример:
Создается одна транзакция с тегом
Поведение нескольких
#Fragment #android
Документация описывает два случая, в которых порядок важен:
1. Метод commit() должен вызываться последним.
2. Если несколько фрагментов добавляются в один контейнер, то порядок добавления определяет порядок в котором фрагменты отрисовываются в иерархии
view.Есть еще третий случай. Если метод addToBackStack(String name) вызывается несколько раз на одной транзакции, то транзакция добавляется в бэкстэк один раз с тегом, который передается в последнем вызове метода.
Пример:
supportFragmentManager.beginTransaction()
.add(R.id.fragmentContainer, Fragment1())
.addToBackStack("add1")
.add(R.id.fragmentContainer, Fragment2())
.addToBackStack("add2")
.commit()Создается одна транзакция с тегом
add2, которая добавляет сразу два фрагмента. При нажатии кнопки Back оба фрагмента будут удалены.Поведение нескольких
addToBackStack() не задокументировано и может различаться на разных версиях ОС, так что не забудьте на собеседовании сказать, что вы бы так никогда делать не стали.#Fragment #android
👍1
Системный дизайн — проектирование системы мониторинга
https://gongybable.medium.com/system-design-design-a-monitoring-system-f0f0cbafc895
https://gongybable.medium.com/system-design-design-a-monitoring-system-f0f0cbafc895
👍2
Чем отличается tag в методах add() и addToBackStack()?
Тег фрагмента используется в методе findFragmentByTag().
Tag в методе addToBackStack() это на самом деле не
Этот вопрос возник на собеседованиях, потому что когда только появились фрагменты было популярно писать такой код:
Сначала добавляется фрагмент с одинаковым тегом фрагмента и именем транзакции. Потом, используя имя-тег, можно получить инстанс фрагмента по позиции в бэкстэке.
Удобно? Нет! Не надо так делать.
#Fragment
Tag в методе add() присваивается фрагменту. Fragment.getTag() возвращает этот тег.Тег фрагмента используется в методе findFragmentByTag().
Tag в методе addToBackStack() это на самом деле не
tag, а name. Имя транзакции, которое присваивается объекту BackStackEntry и возвращается методом getName().Этот вопрос возник на собеседованиях, потому что когда только появились фрагменты было популярно писать такой код:
val tag = "home_fragment"
supportFragmentManager.beginTransaction()
.add(R.id.fragmentContainer, HomeFragment, tag)
.addToBackStack(tag)
.commit();
…
val lastEntryIndex = supportFragmentManager.backStackEntryCount - 1
val tag = supportFragmentManager.getBackStackEntryAt(lastEntryIndex).name
val topFragment = supportFragmentManager.findFragmentByTag(tag)Сначала добавляется фрагмент с одинаковым тегом фрагмента и именем транзакции. Потом, используя имя-тег, можно получить инстанс фрагмента по позиции в бэкстэке.
Удобно? Нет! Не надо так делать.
#Fragment
Производительность встроенных функций высшего порядка в сравнении с циклом for-in в Swif
Самые популярные функции высшего порядка - это map, filter и reduce. Мы все используем их, так как думаем, что синтаксис намного лучше, и писать их даже быстрее, чем старый способ for-in loop. Но так ли это на самом деле? Задумывались ли вы когда-нибудь о производительности этих встроенных функций? Они встроенные, поэтому, естественно, они должны быть лучше, не правда ли? Давайте погрузимся в эти функции вместе, чтобы выяснить, так ли это на самом деле.
#ios
Самые популярные функции высшего порядка - это map, filter и reduce. Мы все используем их, так как думаем, что синтаксис намного лучше, и писать их даже быстрее, чем старый способ for-in loop. Но так ли это на самом деле? Задумывались ли вы когда-нибудь о производительности этих встроенных функций? Они встроенные, поэтому, естественно, они должны быть лучше, не правда ли? Давайте погрузимся в эти функции вместе, чтобы выяснить, так ли это на самом деле.
#ios
❤2👍1
Лучший способ организовать архитектуру iOS-проекта
https://betterprogramming.pub/how-to-organise-your-project-1e0c98825f77
#ios
https://betterprogramming.pub/how-to-organise-your-project-1e0c98825f77
#ios
🔥2
Подборка каналов для IT специалистов 🎯
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
Excel лайфхак📌
https://t.me/Excel_lifehack
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
CodePen 📌
https://t.me/codepen_1 Сообщество пользователей CodePen
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Вакансии для программистов 📌
https://t.me/progjob
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/java_360 Книги по Java Rus
https://t.me/python_360 Книги по Python Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
https://t.me/arhitekturamira World Architecture
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Арбитраж трафика 📌
https://t.me/partnerochkin CPA и арбитраж трафика
Крипта 📌
https://t.me/bitkoinoff Новости криптовалют
DeepFake 📌
https://t.me/deepfakenow Публикуем deepfake видео
Мир технологий 📌
https://t.me/mir_teh Видео из мира технологий
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
Excel лайфхак📌
https://t.me/Excel_lifehack
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
CodePen 📌
https://t.me/codepen_1 Сообщество пользователей CodePen
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Вакансии для программистов 📌
https://t.me/progjob
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/java_360 Книги по Java Rus
https://t.me/python_360 Книги по Python Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
https://t.me/arhitekturamira World Architecture
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Арбитраж трафика 📌
https://t.me/partnerochkin CPA и арбитраж трафика
Крипта 📌
https://t.me/bitkoinoff Новости криптовалют
DeepFake 📌
https://t.me/deepfakenow Публикуем deepfake видео
Мир технологий 📌
https://t.me/mir_teh Видео из мира технологий
👍1
Выпадающее меню в iOS: новый способ взаимодействия
https://medium.com/@rohit236c/ios-pull-down-menus-the-newer-way-of-interaction-a255ceb3a28e
#ios
https://medium.com/@rohit236c/ios-pull-down-menus-the-newer-way-of-interaction-a255ceb3a28e
#ios