Room 🔗 Flow
#разработка #статьи
В своём текущем проекте, я активно использую Room в качестве базы данных. И радует то, как хорошо интегрируется Room с уже существующими решениями.
Например, вы легко можете использовать Room с LiveData, что дает множество преимуществ: меньше кода, отсутствуют утечки памяти, всегда актуальные данные, кооректное поведение при поворотах экрана и прочее. Подробнее о том, как использовать LiveData тут.
Недавно узнал о ещё двух возможностях Room.
Во-первых, начиная с версии 2.1, можно использовать suspend функции в DAO, что гарантирует работу не в UI-потоке, а также отлично пересекается в Coroutines и другими suspend-функциями. Больше информации тут
Во-вторых, это поддержка Flow. По аналогии с LiveData вы получаете только актуальные данные из базы данных, а плюсом к этому все плюшки от Flow. Подробнее про использование тут.
#разработка #статьи
В своём текущем проекте, я активно использую Room в качестве базы данных. И радует то, как хорошо интегрируется Room с уже существующими решениями.
Например, вы легко можете использовать Room с LiveData, что дает множество преимуществ: меньше кода, отсутствуют утечки памяти, всегда актуальные данные, кооректное поведение при поворотах экрана и прочее. Подробнее о том, как использовать LiveData тут.
Недавно узнал о ещё двух возможностях Room.
Во-первых, начиная с версии 2.1, можно использовать suspend функции в DAO, что гарантирует работу не в UI-потоке, а также отлично пересекается в Coroutines и другими suspend-функциями. Больше информации тут
Во-вторых, это поддержка Flow. По аналогии с LiveData вы получаете только актуальные данные из базы данных, а плюсом к этому все плюшки от Flow. Подробнее про использование тут.
Как связать Timber и Crashlytics?
#разработка #статьи #опрос
Одной из самых популярных библиотек для логирования в Android является Timber. Она удобна — позволяет отключить логирование в релизных билдах, легкая и дает большую кастомизацию сообщений.
Ну и каждый разработчик мобильных приложений знаком с Crashlytics. Тут также доступна настройка логирования в дебажных и релизных билдах.
В своих проектах я использую обе библиотекию. А недавно попался отличный вариант того, как связать их и вывести логирование на новый уровень.
Дело в том, что Timber позволяет создать кастомное дерево для обработки ошибок. И всё что вам нужно — это прописать логирование в Crashlytics здесь, в одном месте. Автор статьи предлагает также добавлять сюда и другие способы для логирования. Поэтому, если вам нужно отправлять какие-то данные на сервер в случае ошибок, то вы также можете сделать этот тут.
Кстати, а вы используете ли вы Timber в проектах?
#разработка #статьи #опрос
Одной из самых популярных библиотек для логирования в Android является Timber. Она удобна — позволяет отключить логирование в релизных билдах, легкая и дает большую кастомизацию сообщений.
Ну и каждый разработчик мобильных приложений знаком с Crashlytics. Тут также доступна настройка логирования в дебажных и релизных билдах.
В своих проектах я использую обе библиотекию. А недавно попался отличный вариант того, как связать их и вывести логирование на новый уровень.
Дело в том, что Timber позволяет создать кастомное дерево для обработки ошибок. И всё что вам нужно — это прописать логирование в Crashlytics здесь, в одном месте. Автор статьи предлагает также добавлять сюда и другие способы для логирования. Поэтому, если вам нужно отправлять какие-то данные на сервер в случае ошибок, то вы также можете сделать этот тут.
Кстати, а вы используете ли вы Timber в проектах?
Исследование отечественных команд мобильной разработки, 2020
Егор Толстой проводит ежегодное исследование, связанное с мобильной разработкой. Уделите 5-10 минут на участие в нём, а о результатах вы узнаете позже, здесь на этом канале.
Кстати, Android Live в списке одного из вопросов, буду благодарен, если выберите там и его😉
Егор Толстой проводит ежегодное исследование, связанное с мобильной разработкой. Уделите 5-10 минут на участие в нём, а о результатах вы узнаете позже, здесь на этом канале.
Кстати, Android Live в списке одного из вопросов, буду благодарен, если выберите там и его😉
Google Docs
Исследование российских команд мобильной разработки, 2020
Ежегодный опрос про состояние отечественного рынка мобильной разработки. Оценку даем за прошедший год (2019).
Задать вопросы можно в Telegram: @etolstoy
Отчет за 2019: https://bit.ly/2vokzjj
Отчет за 2018: http://bit.ly/2RTaCEV
Отчет за 2017: http://bit.ly/2Mv669o
Задать вопросы можно в Telegram: @etolstoy
Отчет за 2019: https://bit.ly/2vokzjj
Отчет за 2018: http://bit.ly/2RTaCEV
Отчет за 2017: http://bit.ly/2Mv669o
Material Motion System
#статьи #дизайн
Мало кто знает, что команда Google, занимающаяся разработкой Material-дизайна выкатила новое приложение, которое использует набор паттернов для перехода из одного элемента в другой — Material Motion System. Эта система включает в себя подходы того, как делать анимации между Activity, Fragment, View и переходы между разными состояниями.
Документация для разработчиков доступна на Android и Flutter. Стоит также почитать и о базовых принципах Material-анимаций и как они помогают пользователю взаимодействовать с приложением.
Кроме этого, есть другой пример приложения, автор которого вдохновился Material Motion System, описанным выше. Сам репозиторий с примером тут, а подробная статья с описанием приложения и тех анимаций, которые использовались в нём тут.
Лично мне нравится читать про приложения, в которых используются красивые анимации, ведь это вдохновляет применять их и в своих проектах.
#статьи #дизайн
Мало кто знает, что команда Google, занимающаяся разработкой Material-дизайна выкатила новое приложение, которое использует набор паттернов для перехода из одного элемента в другой — Material Motion System. Эта система включает в себя подходы того, как делать анимации между Activity, Fragment, View и переходы между разными состояниями.
Документация для разработчиков доступна на Android и Flutter. Стоит также почитать и о базовых принципах Material-анимаций и как они помогают пользователю взаимодействовать с приложением.
Кроме этого, есть другой пример приложения, автор которого вдохновился Material Motion System, описанным выше. Сам репозиторий с примером тут, а подробная статья с описанием приложения и тех анимаций, которые использовались в нём тут.
Лично мне нравится читать про приложения, в которых используются красивые анимации, ведь это вдохновляет применять их и в своих проектах.
WindowInsets в Android 11
#разработка #статьи
Работа с клавиатурой на Android всегда было не самым простым делом.
Даже, казалось бы, простое действие с определением присутствия клавиатуры на экране делается через костыли, например через ViewTreeObserver, или через сторонние библиотеки, которые также работают не во всех случаях.
Но, вероятно, нашим страданиям придет конец. В новом Android 11 добавляется метод, который через Insets позволяет обрабатывать и синхронизировать контент экрана с клавиатурой. Судя по примерам анимаций, выглядит это очень круто.
Подробнее об этой фиче можно прочитать в этой статье. Конечно, сейчас эта функциональность на этапе разработки и код может поменяться в будущем. Но даже то, как выглядит API сейчас можно сказать, что свежий Android существенно облегчит нам жизнь в работе с клавиатурой и сделает приложения ещё более плавными.
#разработка #статьи
Работа с клавиатурой на Android всегда было не самым простым делом.
Даже, казалось бы, простое действие с определением присутствия клавиатуры на экране делается через костыли, например через ViewTreeObserver, или через сторонние библиотеки, которые также работают не во всех случаях.
Но, вероятно, нашим страданиям придет конец. В новом Android 11 добавляется метод, который через Insets позволяет обрабатывать и синхронизировать контент экрана с клавиатурой. Судя по примерам анимаций, выглядит это очень круто.
Подробнее об этой фиче можно прочитать в этой статье. Конечно, сейчас эта функциональность на этапе разработки и код может поменяться в будущем. Но даже то, как выглядит API сейчас можно сказать, что свежий Android существенно облегчит нам жизнь в работе с клавиатурой и сделает приложения ещё более плавными.
Gesture Navigation
#разработка #статьи #опрос
В недавнем посте мы рассматривали такую важную вещь как Insets. Эта тема непосредственно связана с Gesture Navigation, которая появилась в Android 10.
Вообще, эта версия Android даёт возможность пользователям использовать вместо стандартной навигации ещё и навигацию жестами: возвращение назад, возвращение на экран Home и вызов голосового помощника.
Для нас, как для разработчиков добавилось несколько новых штук, а именно:
• поддержка edge-to-edge — то есть приложение должно занимать всю доступную площадь экрана. Это значит, что нужно учиться правильно обрабатывать челки и вырезы;
• обработка визуальных пересечений с системным интерфейсом — например, с нижними элементами управления;
• обработка конфликтов при использовании жестов, свайпов и т.д. с системным интерфейсом.
Всё это может выглядеть пугающе, но стоит только начать, и все это перестанет казаться таким ужасным. А в этом вам помогут эти статьи. В этой автор описывает по шагам всё для того, чтобы приспособить своё приложение к 10 версии Android, а если любите читать статьи на русском, то и для вас есть отличный гайд.
А вы уже приспособили своё приложение под Android 10?
#разработка #статьи #опрос
В недавнем посте мы рассматривали такую важную вещь как Insets. Эта тема непосредственно связана с Gesture Navigation, которая появилась в Android 10.
Вообще, эта версия Android даёт возможность пользователям использовать вместо стандартной навигации ещё и навигацию жестами: возвращение назад, возвращение на экран Home и вызов голосового помощника.
Для нас, как для разработчиков добавилось несколько новых штук, а именно:
• поддержка edge-to-edge — то есть приложение должно занимать всю доступную площадь экрана. Это значит, что нужно учиться правильно обрабатывать челки и вырезы;
• обработка визуальных пересечений с системным интерфейсом — например, с нижними элементами управления;
• обработка конфликтов при использовании жестов, свайпов и т.д. с системным интерфейсом.
Всё это может выглядеть пугающе, но стоит только начать, и все это перестанет казаться таким ужасным. А в этом вам помогут эти статьи. В этой автор описывает по шагам всё для того, чтобы приспособить своё приложение к 10 версии Android, а если любите читать статьи на русском, то и для вас есть отличный гайд.
А вы уже приспособили своё приложение под Android 10?
Нужно ли тестовое задание?
#комментарии #мысли #опрос
Задумался о том, действительно ли нужно тестовое задание при найме нового разработчика.
На первый взгляд, очевидно, что это полезная вещь. Например, у кандидата во время его работы был закрытый проект, код которого он не может показать. Или на его текущем проекте был не тот стек, который требуется вам, и нужно посмотреть, насколько хорошо кандидат может изучить документацию. Также можно посмотреть на сильные и слабые стороны разработчика, его умение задавать вопросы. В общем, довольно много преимуществ.
Но все плюсы может перевесить один существенный минус, с которым я часто сталкивался при поиске сильных кандидатов.
Больше всего времени на создание тестовых заданий готовы тратить молодые и свободные специалисты. У senior разработчика чаще бывают вещи, требующие его внимания: своя семья, pet-проекты, кот, собака и т.д. Чаще у него нет времени, например несколько свободных вечеров или выходных, чтобы потратить его на ваше тестовое задание. И он откажется от вашей вакансии несмотря на то, что, теоретически, хотел бы работать у вас.
Особое место занимают компании, которые или очень популярны среди разработчиков (в них многие хотят работать), или которые имеют гораздо лучшие условия, чем конкуренты. В этом случае у вас больше шансов, что сильный кандидат найдёт время на выполнение тестового.
Но задайте себе вопрос: действительно ли ваша компания такая?
Как же без тестового оценить кандидата? Я считаю, что самый лучший вариант — поговорить о его проектах, и о тех технологиях, которые он там применял. И даже если там совершенно другой стек, то для сильного кандидата не проблема изучить документацию и успешно начать применять эти знания на практике.
Также важно держать баланс и «копать» в сторону того, что кандидат знает и умеет, а не в сторону «затопить» разработчика странными вопросами, которые можно нагуглить за пару минут или тех, которые не имеют практической пользы.
А как считаете вы, можно ли обойтись без тестового задания? Пишите своё мнение в комментариях
#комментарии #мысли #опрос
Задумался о том, действительно ли нужно тестовое задание при найме нового разработчика.
На первый взгляд, очевидно, что это полезная вещь. Например, у кандидата во время его работы был закрытый проект, код которого он не может показать. Или на его текущем проекте был не тот стек, который требуется вам, и нужно посмотреть, насколько хорошо кандидат может изучить документацию. Также можно посмотреть на сильные и слабые стороны разработчика, его умение задавать вопросы. В общем, довольно много преимуществ.
Но все плюсы может перевесить один существенный минус, с которым я часто сталкивался при поиске сильных кандидатов.
Больше всего времени на создание тестовых заданий готовы тратить молодые и свободные специалисты. У senior разработчика чаще бывают вещи, требующие его внимания: своя семья, pet-проекты, кот, собака и т.д. Чаще у него нет времени, например несколько свободных вечеров или выходных, чтобы потратить его на ваше тестовое задание. И он откажется от вашей вакансии несмотря на то, что, теоретически, хотел бы работать у вас.
Особое место занимают компании, которые или очень популярны среди разработчиков (в них многие хотят работать), или которые имеют гораздо лучшие условия, чем конкуренты. В этом случае у вас больше шансов, что сильный кандидат найдёт время на выполнение тестового.
Но задайте себе вопрос: действительно ли ваша компания такая?
Как же без тестового оценить кандидата? Я считаю, что самый лучший вариант — поговорить о его проектах, и о тех технологиях, которые он там применял. И даже если там совершенно другой стек, то для сильного кандидата не проблема изучить документацию и успешно начать применять эти знания на практике.
Также важно держать баланс и «копать» в сторону того, что кандидат знает и умеет, а не в сторону «затопить» разработчика странными вопросами, которые можно нагуглить за пару минут или тех, которые не имеют практической пользы.
А как считаете вы, можно ли обойтись без тестового задания? Пишите своё мнение в комментариях
Друзья, а давайте разнообразим контент на канале и проведём небольшой #конкурс, связанный с разработкой?
В этот понедельник, завтра, 30 марта, в 18:00, будет пост с задачей. Её нужно будет решить в течении 48 часов с момента размещения поста. Это будет небольшая задача, в одну функцию.
Своё решение можно отправить на Java или Kotlin. Учитывайте, что языки будут оцениваться вместе.
В этот раз нашим партнёром является издательство «Манн, Иванов и Фербер». У них есть свой канал в Telegram, где они описывают новинки, а также классные книги, в том числе и для разработчиков.
Приз — книга «Визуализируйте работу. Как выявить расхитителей времени и оптимизировать процессы» Доминики Деграндис. Уверен, что она будет полезна любому человеку, связанному с IT.
Поэтому, следите за каналом и не упустите возможность выиграть полезную вещь.
В этот понедельник, завтра, 30 марта, в 18:00, будет пост с задачей. Её нужно будет решить в течении 48 часов с момента размещения поста. Это будет небольшая задача, в одну функцию.
Своё решение можно отправить на Java или Kotlin. Учитывайте, что языки будут оцениваться вместе.
В этот раз нашим партнёром является издательство «Манн, Иванов и Фербер». У них есть свой канал в Telegram, где они описывают новинки, а также классные книги, в том числе и для разработчиков.
Приз — книга «Визуализируйте работу. Как выявить расхитителей времени и оптимизировать процессы» Доминики Деграндис. Уверен, что она будет полезна любому человеку, связанному с IT.
Поэтому, следите за каналом и не упустите возможность выиграть полезную вещь.
Задача «KitKat-подарок на День рождения»
#конкурс
Итак, для участия в конкурсе, необходимо решить следующую задачу:
Аня очень любит KitKat, и у неё недавно появилась фабрика, которая делает KitKat. Также у неё есть друг Лёша, которому она, без сомнения, подарит свой любимый батончик. Но с некоторыми условиями.
Плитка KitKat — это последовательность целых чисел — C длиной N. И Аня решает подарить непрерывную часть этой шоколадки Лёше так, чтобы длина этого сегмента соответствовала месяцу рождения Леши (M), а сумма целых чисел на квадратах была равно его дню рождения (D).
Вам нужно завершить функцию func, которая возвращает число способов, которыми Аня может разделить её плитку KitKat.
Входные данные
N — длина KitKat;
C — последовательность чисел, то есть плитка KitKat;
D — день рождения;
M — месяц рождения.
Выходные данные
Целое число способов, которыми можно разделить плитку шоколада.
Ограничения
1 <= N <=100
1 <= Ci <=5, 0 <= i < N
1 <= D <= 31
1 <= M <= 12
Пример входных данных
5
1 2 1 3 2
3 2
Пример выходных данных
2
Объяснение
Аня хочет подарить Лёше последовательность из 2 частей KitKat, которые в сумме дают 3. Этому удовлетворяют следующие последовательности:
• C0 + C1 = 1+2 = 3
• C1 + C2 = 2+1 = 3
Шаблоны на языке Java и Kotlin
Условия конкурса
1. Решения принимаются в течении 48 часов, то есть до 1 апреля 2020 года, 18:00. Необходимо отправить только тело функции.
2. Отправить можно только одно решение.
3. Можно исправлять отправленное решение неограниченное количество раз. Принятым будет считаться решение, отправленное последним.
4. Победителем будет являться самое короткое тело функции func().
5. В подсчете количества символов учитывается только тело функции. Например, в примере return 0; количество символов равняется 9. Это и определяет длину решения.
6. Переименовывать функцию нельзя, как и изменять входные параметры. В Kotlin убирать return также запрещается.
7. Требований к форматированию нет, важно рабочее решение. Можно убирать пробелы между переменными и писать код в одну строку, если это не нарушит работоспособность решения.
8. В случае одинаковых по длине решений, победитель будет выбран рандомно, а запись с выбором победителя будет опубликована на канале.
Обратите внимание, что решения, которые не удовлетворяют условиям конкурса не будут учитываться при проверке. Очень часто участники забывают о том, что нужно отправить только внутреннюю часть функции (тело функции), а не всю функцию, включая её заголовок, поэтому будьте внимательны при отправке итогового решения.
Также, если кто-то хочет помочь в проверке решений при помощи тестов, то пишите сюда.
Решение нужно отправить в форму. Желаю всем удачи!
#конкурс
Итак, для участия в конкурсе, необходимо решить следующую задачу:
Аня очень любит KitKat, и у неё недавно появилась фабрика, которая делает KitKat. Также у неё есть друг Лёша, которому она, без сомнения, подарит свой любимый батончик. Но с некоторыми условиями.
Плитка KitKat — это последовательность целых чисел — C длиной N. И Аня решает подарить непрерывную часть этой шоколадки Лёше так, чтобы длина этого сегмента соответствовала месяцу рождения Леши (M), а сумма целых чисел на квадратах была равно его дню рождения (D).
Вам нужно завершить функцию func, которая возвращает число способов, которыми Аня может разделить её плитку KitKat.
Входные данные
N — длина KitKat;
C — последовательность чисел, то есть плитка KitKat;
D — день рождения;
M — месяц рождения.
Выходные данные
Целое число способов, которыми можно разделить плитку шоколада.
Ограничения
1 <= N <=100
1 <= Ci <=5, 0 <= i < N
1 <= D <= 31
1 <= M <= 12
Пример входных данных
5
1 2 1 3 2
3 2
Пример выходных данных
2
Объяснение
Аня хочет подарить Лёше последовательность из 2 частей KitKat, которые в сумме дают 3. Этому удовлетворяют следующие последовательности:
• C0 + C1 = 1+2 = 3
• C1 + C2 = 2+1 = 3
Шаблоны на языке Java и Kotlin
Условия конкурса
1. Решения принимаются в течении 48 часов, то есть до 1 апреля 2020 года, 18:00. Необходимо отправить только тело функции.
2. Отправить можно только одно решение.
3. Можно исправлять отправленное решение неограниченное количество раз. Принятым будет считаться решение, отправленное последним.
4. Победителем будет являться самое короткое тело функции func().
5. В подсчете количества символов учитывается только тело функции. Например, в примере return 0; количество символов равняется 9. Это и определяет длину решения.
6. Переименовывать функцию нельзя, как и изменять входные параметры. В Kotlin убирать return также запрещается.
7. Требований к форматированию нет, важно рабочее решение. Можно убирать пробелы между переменными и писать код в одну строку, если это не нарушит работоспособность решения.
8. В случае одинаковых по длине решений, победитель будет выбран рандомно, а запись с выбором победителя будет опубликована на канале.
Обратите внимание, что решения, которые не удовлетворяют условиям конкурса не будут учитываться при проверке. Очень часто участники забывают о том, что нужно отправить только внутреннюю часть функции (тело функции), а не всю функцию, включая её заголовок, поэтому будьте внимательны при отправке итогового решения.
Также, если кто-то хочет помочь в проверке решений при помощи тестов, то пишите сюда.
Решение нужно отправить в форму. Желаю всем удачи!
Build Gradle с Kotlin DSL
#разработка #статьи
До недавнего времени, единственным способом написания build-скриптов был язык Groovy. Писать build.gradle файл на этом языке было не так сложно, но всё равно это был другой язык программирования, да и его читаемость была так себе.
Но сейчас есть альтернатива — это Kotlin DSL. Она даёт такие преимущества как автозаполнение, переход к ресурсам в приложении, проверка ошибок во время компиляции и обеспечивает лучшую читабельность кода. И что немаловажно, теперь приложение можно писать только на одном языке программирования.
Пару статей, которые расскажут о том, как это сделать. Тут можно узнать о том, как действовать в случае возникновения конфликтов при переходе, а эта статья по шагам поможет перейти на Kotlin DSL.
#разработка #статьи
До недавнего времени, единственным способом написания build-скриптов был язык Groovy. Писать build.gradle файл на этом языке было не так сложно, но всё равно это был другой язык программирования, да и его читаемость была так себе.
Но сейчас есть альтернатива — это Kotlin DSL. Она даёт такие преимущества как автозаполнение, переход к ресурсам в приложении, проверка ошибок во время компиляции и обеспечивает лучшую читабельность кода. И что немаловажно, теперь приложение можно писать только на одном языке программирования.
Пару статей, которые расскажут о том, как это сделать. Тут можно узнать о том, как действовать в случае возникновения конфликтов при переходе, а эта статья по шагам поможет перейти на Kotlin DSL.
Результаты конкурса «KitKat-подарок на День рождения»
#конкурс
Итак, самое время подвести итоги нашего последнего конкурса.
В этот раз все 100% решений были сделаны на Kotlin. И коротким оказалось только одно решение, хотя многие другие были близки к нему.
Итак, самое короткое решение на Kotlin состоит из 47 символов:
return c.take(n).windowed(m).count{it.sum()==d}
Соответственно, победитель — @amihusb
Напоминаю, что победитель получает книгу «Визуализируйте работу. Как выявить расхитителей времени и оптимизировать процессы» Доминики Деграндис от издательства МИФ.
Большое спасибо всем участникам конкурса! И поздравляю победителя!
Кстати, хотел бы узнать: какие призы вам были бы наиболее интересны при проведении подобных конкурсов? Напишите, пожалуйста, сюда.
#конкурс
Итак, самое время подвести итоги нашего последнего конкурса.
В этот раз все 100% решений были сделаны на Kotlin. И коротким оказалось только одно решение, хотя многие другие были близки к нему.
Итак, самое короткое решение на Kotlin состоит из 47 символов:
return c.take(n).windowed(m).count{it.sum()==d}
Соответственно, победитель — @amihusb
Напоминаю, что победитель получает книгу «Визуализируйте работу. Как выявить расхитителей времени и оптимизировать процессы» Доминики Деграндис от издательства МИФ.
Большое спасибо всем участникам конкурса! И поздравляю победителя!
Кстати, хотел бы узнать: какие призы вам были бы наиболее интересны при проведении подобных конкурсов? Напишите, пожалуйста, сюда.
Итоги исследования отечественных команд мобильной разработки 2020
Совсем недавно я предлагал вам заполнить краткий опросник, связанный с командами мобильной разработки. И вот, пару дней назад стали известны результаты исследования.
Благодарю всех, кто выбирал мой канал в качестве того, который вы читаете. Это мотивирует писать больше и качественнее!
Результаты опроса можно посмотреть тут.
Совсем недавно я предлагал вам заполнить краткий опросник, связанный с командами мобильной разработки. И вот, пару дней назад стали известны результаты исследования.
Благодарю всех, кто выбирал мой канал в качестве того, который вы читаете. Это мотивирует писать больше и качественнее!
Результаты опроса можно посмотреть тут.
Medium
Известность команд мобильной разработки в 2020
Результаты большого опроса мобильщиков: в каких компаниях хотят работать, как их выбирают, какие ресурсы читают, на какие конференции…
Нужные анимации в Android
#разработка #статьи #комментарии
Сегодня приложения — это не просто набор статических экранов. Ни для кого не секрет, что для того чтобы сделать цепляющее и приятное для использования приложение, нужно добавлять анимации. При этом важно делать эти анимации красивыми и полезными.
Сегодня делюсь с вами отличным видео, которое рассказывает о том, как правильно создавать анимации в приложении. Впервые встречаю рассказ о том, как важно не переусердствовать с анимациями, потому как это сделает приложение сложным для использования.
Также статья с одним из примеров из этого видео. Автор делает сплэш-скрин, используя Sketch + Android Studio, Shapeshifter и AfterEffects + Lottie. Все эти подходы имеют как плюсы, так и минусы, поэтому будет полезно прочитать, когда какой из них лучше использовать.
А еще на тему всего этого у меня назрел вопрос: какие приложения с анимациями вам запомнились больше всего?
Будет здорово, если поделитесь в комментариях
#разработка #статьи #комментарии
Сегодня приложения — это не просто набор статических экранов. Ни для кого не секрет, что для того чтобы сделать цепляющее и приятное для использования приложение, нужно добавлять анимации. При этом важно делать эти анимации красивыми и полезными.
Сегодня делюсь с вами отличным видео, которое рассказывает о том, как правильно создавать анимации в приложении. Впервые встречаю рассказ о том, как важно не переусердствовать с анимациями, потому как это сделает приложение сложным для использования.
Также статья с одним из примеров из этого видео. Автор делает сплэш-скрин, используя Sketch + Android Studio, Shapeshifter и AfterEffects + Lottie. Все эти подходы имеют как плюсы, так и минусы, поэтому будет полезно прочитать, когда какой из них лучше использовать.
А еще на тему всего этого у меня назрел вопрос: какие приложения с анимациями вам запомнились больше всего?
Будет здорово, если поделитесь в комментариях
Layout Inspector
#разработка #статьи
В последней версии Android Studio, которая пока ещё находится в beta, есть отличная фича, называемая Layout Inspector.
С ней, помимо всей красоты что происходит на экране, можно понять, почему некоторые View ведут себя не так, как задумывал разработчик. Кроме этого, Layout Inspector – это хорошая возможность понять, какие из View можно убрать для оптимизации.
Чтобы начать использовать эту фичу, нужно просто выбрать процесс вашего приложения и проанализировать иерархию View.
Для желающих попробовать фичу в бою, есть статья, рассказывающая о деталях. Тут также есть пример приложения, где проблема решается с помощью инспектора: при вёрстке была допущена ошибка, в результате которой не показывалось нижнее меню.
Как по мне, пример слишком простой, и его можно было бы решить и без помощи Layout Inspector, но для демонстрации возможностей — самое то.
Как вам новая фича?
#разработка #статьи
В последней версии Android Studio, которая пока ещё находится в beta, есть отличная фича, называемая Layout Inspector.
С ней, помимо всей красоты что происходит на экране, можно понять, почему некоторые View ведут себя не так, как задумывал разработчик. Кроме этого, Layout Inspector – это хорошая возможность понять, какие из View можно убрать для оптимизации.
Чтобы начать использовать эту фичу, нужно просто выбрать процесс вашего приложения и проанализировать иерархию View.
Для желающих попробовать фичу в бою, есть статья, рассказывающая о деталях. Тут также есть пример приложения, где проблема решается с помощью инспектора: при вёрстке была допущена ошибка, в результате которой не показывалось нижнее меню.
Как по мне, пример слишком простой, и его можно было бы решить и без помощи Layout Inspector, но для демонстрации возможностей — самое то.
Как вам новая фича?
Collections vs Sequences
#разработка #статьи
В Kotlin существует две сущности, которые позволяют выполнять операции на последовательности элементов:
Начнём с того, что они по-разному работают над элементами.
В коллекциях операторы применяются для всей входящей цепочки объектов. То есть во время обработки создаётся новый, промежуточный список объектов, к элементам которого применяется оператор.
В последовательностях вся цепочка операторов применяется для каждого из элементов.
Можно сказать, что последовательности — это бесконечная сущность, а коллекции — конечная.
Когда же применять каждый из них?
1) Большое число операторов в цепочке. Например, мы хотим применить цепочку из операторов
2) То же самое и для операторов
3) Когда же у вас есть оператор toList(), toSet(), то тут побеждают коллекции, так как возвращаемый список будет создан только один раз.
4) При наличии оператора
Также помните, что разница будет заметна только на довольно больших объёмах данных. Если в вашей коллекции 10-20 элементов, то вы не увидите никакой разницы.
Данная шпаргалка будет полезна при очередном собеседовании, так как это довольно частый вопрос.
Ну и тут ещё больше кейсов с иллюстрациями, а тут отличное сравление этих двух классов.
#разработка #статьи
В Kotlin существует две сущности, которые позволяют выполнять операции на последовательности элементов:
Collections
и Sequences
. И они значительно отличаются тем, как выполняют работу под капотом. Начнём с того, что они по-разному работают над элементами.
В коллекциях операторы применяются для всей входящей цепочки объектов. То есть во время обработки создаётся новый, промежуточный список объектов, к элементам которого применяется оператор.
В последовательностях вся цепочка операторов применяется для каждого из элементов.
Можно сказать, что последовательности — это бесконечная сущность, а коллекции — конечная.
Когда же применять каждый из них?
1) Большое число операторов в цепочке. Например, мы хотим применить цепочку из операторов
filter()
, map()
и take()
. Из-за особенности работы коллекций, описанной выше, тут явно побеждают последовательности, так как на каждом из этапов не будет создаваться новый промежуточный список. Особое преимущество будет при наличии оператора take(), так как обработается только 5 элементов из последовательности. 2) То же самое и для операторов
contains()
, indexOf()
, any()
, none()
, find()
. Во всех них нужно найти только первый элемент, и нет смысла работать со всей цепочкой.3) Когда же у вас есть оператор toList(), toSet(), то тут побеждают коллекции, так как возвращаемый список будет создан только один раз.
4) При наличии оператора
sorted()
или distinct()
также стоит использовать коллекции. Последовательность, из-за особенности работы под капотом, создаст промежуточный список.Также помните, что разница будет заметна только на довольно больших объёмах данных. Если в вашей коллекции 10-20 элементов, то вы не увидите никакой разницы.
Данная шпаргалка будет полезна при очередном собеседовании, так как это довольно частый вопрос.
Ну и тут ещё больше кейсов с иллюстрациями, а тут отличное сравление этих двух классов.
Записи докладов AppsConf 2019
#разработка #конференции
Обычно я пишу вам об анонсах конференций и делаю обзор докладов, но на этот раз другая хорошая новость.
Организаторы AppsConf открыли доступ к докладам Saint AppsConf 2019.
Хотя сейчас хватает и бесплатных курсов, но эти доклады хорошая возможность дополнить свои навыки в Android (да и в iOS разработке).
Все доклады доступны тут.
#разработка #конференции
Обычно я пишу вам об анонсах конференций и делаю обзор докладов, но на этот раз другая хорошая новость.
Организаторы AppsConf открыли доступ к докладам Saint AppsConf 2019.
Хотя сейчас хватает и бесплатных курсов, но эти доклады хорошая возможность дополнить свои навыки в Android (да и в iOS разработке).
Все доклады доступны тут.
YouTube
Saint AppsConf 2019 - YouTube
Библиотека Colonist
#разработка #статьи #библиотека
Ребята из Joom выложили в open source библиотеку для поиска классов во время компиляции приложения.
Получилось неплохо. Применение этой библиотеки они описывают на своих кейсах, в этой статье. Например, описание и регистрация большого числа A/B-тестов возможно при помощи нескольких аннотаций.
Ссылка на github тут, а описание кейсов можно взять в этой статье. Давайте поддержим ребят в написании open source проектов!
#разработка #статьи #библиотека
Ребята из Joom выложили в open source библиотеку для поиска классов во время компиляции приложения.
Получилось неплохо. Применение этой библиотеки они описывают на своих кейсах, в этой статье. Например, описание и регистрация большого числа A/B-тестов возможно при помощи нескольких аннотаций.
Ссылка на github тут, а описание кейсов можно взять в этой статье. Давайте поддержим ребят в написании open source проектов!
Успешное прохождение 6 собеседований в компаниях Кремниевой долины
#статьи #комментарии
Для многих разработчиков процесс прохождения собеседований является стрессом, которого они стараются избежать.
Я лично знаком с людьми, которые остаются на текущем месте работы и даже не стараются найти что-то лучшее только из-за того, что боятся самих собеседований и возможных отказов.
Прочитал интересную статью, где автор получил офферы от 6 компаний из Кремниевой долины: по статистике у него было 46 интервью за 73 дня. Это включает в себя и технические собеседования, общения с HRами и с командами. На мой взгляж это впечатляющая статистика.
Автор делится своими советами в этой статье. Вкратце, основные пункты:
• не бросайте начатое — даже если кажется, что у вас ничего не получается в процессе, не сдавайтесь, со временем вы увидите результат;
• тренируйтесь сами и с друзьями — помимо обычных решений алгоритмических задач и навыков, важно потренироваться также и в атмосфере интервью. Попробуйте найти человека, который лучше понимает в теме разработки и который может направить вас в нужном направлении при появлении трудностей;
• рассылайте больше резюме — не стоит бояться рассылать своё резюме компаниям, которые нравятся. Обязательно ищите для себя больше вариантов;
• не отметайте сложных заданий — обязательно прорабатывайте даже те варианты, которые как вам кажется никогда не понадобятся.
Автор также описал материалы, по которым он готовился: книга «Cracking the Coding Interview», затем «Elements of Programming Interviews», решения алгоритмических задач на Leetcode, проработка топа вопросов с интервью на том же Leetcode.
Ссылка на статью тут, а кому легче читать на русском — тут.
Расскажите о своём опыте собеседований: странные вопросы, процесс подготовки или советы. Будет здорово увидеть это в комментариях
#статьи #комментарии
Для многих разработчиков процесс прохождения собеседований является стрессом, которого они стараются избежать.
Я лично знаком с людьми, которые остаются на текущем месте работы и даже не стараются найти что-то лучшее только из-за того, что боятся самих собеседований и возможных отказов.
Прочитал интересную статью, где автор получил офферы от 6 компаний из Кремниевой долины: по статистике у него было 46 интервью за 73 дня. Это включает в себя и технические собеседования, общения с HRами и с командами. На мой взгляж это впечатляющая статистика.
Автор делится своими советами в этой статье. Вкратце, основные пункты:
• не бросайте начатое — даже если кажется, что у вас ничего не получается в процессе, не сдавайтесь, со временем вы увидите результат;
• тренируйтесь сами и с друзьями — помимо обычных решений алгоритмических задач и навыков, важно потренироваться также и в атмосфере интервью. Попробуйте найти человека, который лучше понимает в теме разработки и который может направить вас в нужном направлении при появлении трудностей;
• рассылайте больше резюме — не стоит бояться рассылать своё резюме компаниям, которые нравятся. Обязательно ищите для себя больше вариантов;
• не отметайте сложных заданий — обязательно прорабатывайте даже те варианты, которые как вам кажется никогда не понадобятся.
Автор также описал материалы, по которым он готовился: книга «Cracking the Coding Interview», затем «Elements of Programming Interviews», решения алгоритмических задач на Leetcode, проработка топа вопросов с интервью на том же Leetcode.
Ссылка на статью тут, а кому легче читать на русском — тут.
Расскажите о своём опыте собеседований: странные вопросы, процесс подготовки или советы. Будет здорово увидеть это в комментариях
Отличия дизайна мобильного приложения под iOS и Android
#статьи
Когда-то давно при создании приложений под Android, я сталкивался с запросом от менеджера: «давайте сделаем наше Android приложение как на iOS». Это было в то время, когда не было Material-дизайна и нормальных рекомендаций, как делать удобные приложения под Android.
К счастью, времена меняются и теперь у нас есть философия дизайна на Android и описано взаимодействие между всеми элементами экрана. Но порой дизайнеры все равно стремятся делать приложения, где элементы подобраны не в соответствии с философией системы. Часто это бывает из-за недостатка опыта или привычки.
Если вы замечаете подобные несоответствия у ваших дизайнеров, то рекомендую скинуть им статью от дизайнера Redmadrobot, где он описывает 32 отличия в дизайне Android и iOS. Это будет полезно и нам, разработчикам, чтобы лучше понимать отличия между системами. Ну и конечно, это важно знать, если вы пишете на две платформы сразу, например на Flutter.
#статьи
Когда-то давно при создании приложений под Android, я сталкивался с запросом от менеджера: «давайте сделаем наше Android приложение как на iOS». Это было в то время, когда не было Material-дизайна и нормальных рекомендаций, как делать удобные приложения под Android.
К счастью, времена меняются и теперь у нас есть философия дизайна на Android и описано взаимодействие между всеми элементами экрана. Но порой дизайнеры все равно стремятся делать приложения, где элементы подобраны не в соответствии с философией системы. Часто это бывает из-за недостатка опыта или привычки.
Если вы замечаете подобные несоответствия у ваших дизайнеров, то рекомендую скинуть им статью от дизайнера Redmadrobot, где он описывает 32 отличия в дизайне Android и iOS. Это будет полезно и нам, разработчикам, чтобы лучше понимать отличия между системами. Ну и конечно, это важно знать, если вы пишете на две платформы сразу, например на Flutter.
Jetpack Compose: Twitter UI
#разработка #статьи
Думаю многие слышали про Jetpack Compose — новый способ построения UI на Android, который всё ещё находится в разработке. Но уже есть возможность попробовать его, например написать простенькое приложение и понять, нравится ли вам этот инструмент.
Можно взять идею автора этой статьи: он написал небольшое Twitter-подобное приложение, используя Compose. Но есть некоторые ограничения:
• нет подобия CoordinatorLayout, поэтому не получится быстро сделать анимацию профиля при скролле;
• TextField не имеет placeholder или hint;
• нет стандартного pull to refresh.
Уверен, что всё это появится в скором времени, так как API находится в активной стадии разработки.
А как вам Jetpack Compose?
#разработка #статьи
Думаю многие слышали про Jetpack Compose — новый способ построения UI на Android, который всё ещё находится в разработке. Но уже есть возможность попробовать его, например написать простенькое приложение и понять, нравится ли вам этот инструмент.
Можно взять идею автора этой статьи: он написал небольшое Twitter-подобное приложение, используя Compose. Но есть некоторые ограничения:
• нет подобия CoordinatorLayout, поэтому не получится быстро сделать анимацию профиля при скролле;
• TextField не имеет placeholder или hint;
• нет стандартного pull to refresh.
Уверен, что всё это появится в скором времени, так как API находится в активной стадии разработки.
А как вам Jetpack Compose?