Как стать автором
Обновить
2
0
Павел Малышев @onepavel

Пользователь

Отправить сообщение

Полируем UI в Android: StateListAnimator

Время на прочтение5 мин
Количество просмотров6.5K
Привет, Хабр! В преддверии старта курса «Android Developer. Professional» мы подготовили для вас перевод еще одного интересного материала.




Большую часть времени разработки нашего Android-приложения мы тратим отнюдь не на работу над пользовательским интерфейсом — мы просто накидываем вьюх и начинаем писать код. Я заметил, что большинство из нас не особо заботится о пользовательском интерфейсе. И я считаю, что это в корне неправильно. Разработчики мобильных приложений должны заботиться также и о UI/UX. Я не говорю «будьте экспертом в мобильном UI», но вы должны понимать язык дизайна и его концепции.

Ранее я написал статью о тенях в материальном дизайне и получил много хороших отзывов. Я хочу поблагодарить всех вас. «Освоение теней в Android» рассказывает о высоте (elevation) и тени (shadow) в Android. Там же я показал, как дополнял ими свою UI библиотеку с открытым исходным кодом. (Scaling Layout).

В этой статье я хочу усовершенствовать свою библиотеку с помощью StateListAnimator и шаг за шагом показать вам, как я это буду делать.
Всего голосов 9: ↑9 и ↓0+9
Комментарии1

Создание собственного ключа Android приложения

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.4K

Небольшая предыстория зачем все это может быть нужно. Недавно столкнулся с ситуацией, когда заказчику было необходимо реанимировать заблокированный старый проект, добавить фичи и снова разместить в PlayMarket. Ключ который генерирует Google извлечь нельзя, генерируемые билды отличались подписью и не принимались. В итоге было принято решение зарегистрировать новый проект, но чтобы не зависеть в будущем от такой ситуации сделать собственный ключ.

Итак, пройдемся по всему процессу. Перед добавление версии сборки приложения в самом начале этого процесса консоль предложит выбрать ключ подписи.

Читать далее
Всего голосов 4: ↑3 и ↓1+3
Комментарии0

SwiftUI инпут: проблемы и решения

Уровень сложностиСредний
Время на прочтение28 мин
Количество просмотров928

Представьте, что вам нужно реализовать комплексный компонент инпута на SwiftUI. Что может пойти не так? Какие сложности могут возникнуть? На эти и другие вопросы постараюсь ответить в статье, где реализуем компонент со скрина, а также разберем возможные проблемы.

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии4

Как мы реализовали кнопку со свайпом на Jetpack Compose

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров5.8K

Привет, Хабр! Меня зовут Женя Мельцайкин, я работаю в команде мобильной разработки Контура.

Мы разрабатываем экосистему для бизнеса, которая оптимизирует рутинные задачи: работу с маркировкой, проверку контрагентов, товароучет, документооборот, отчетность. И в одном из продуктов работаем с подписанием электронных документов. Электронная подпись — это юридически значимая операция, поэтому важно не допустить ошибки пользователя.

В статье расскажу, как мы сделали кнопку по проведению жеста свайпом на Jetpack Compose, чтобы избежать случайной подписи документа.

Читать далее
Всего голосов 24: ↑24 и ↓0+29
Комментарии5

Шпаргалка по Smali на русском

Время на прочтение13 мин
Количество просмотров38K

Русская шпаргалка по Smali


Приветствую, любители реверс-инжинирить Android. Перед вами шпаргалка по Smali — аналогу ассемблера для Android-приложений.



Изначальный текст на русском взят отсюда. Там текст появился из машинного перевода официальной документации.


В итоге, оформил сухой текст + поправил небольшие опечатки и корявости перевода. По поводу замечаний и предложений можете писать либо мне в ЛС, либо оформлять PR на Gist.

Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии0

Пишем персистентный слой на Realm

Время на прочтение5 мин
Количество просмотров3.4K

Пишем простой персистеный слой с использованием популярной 3rd party library Realm на iOS.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии9

Умный BottomNavigationView без боли: настройка нижнего меню навигации с динамической конфигурацией в Android-приложении

Время на прочтение9 мин
Количество просмотров5.5K

Привет, Хабр! Меня зовут Сергей Велеско, я Android-разработчик. Сегодня трудно представить сколько-нибудь серьезное мобильное приложение без нижнего меню навигации. В этой статье я поделюсь опытом, как гибко и приятно организовать настройку BottomNavigationView и научить его загружать свою конфигурацию из удаленного источника.

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Маркетинговые исследования и UX-исследования. В чем разница?

Время на прочтение4 мин
Количество просмотров3.4K

Маркетинговые исследование - это процесс изучения потребностей и покупательских предпочтений клиентов. В исследованиях используются опросы и анализ данных, которые позволяют определить рынок для продукта и аудиторию, которая с наибольшей вероятностью купит продукт. Благодаря полученным результатам можно определить, стоит ли запускать продукт или нет.

UX-исследование - это изучение пользователей, предназначенное для информирования и улучшения процесса принятия решений командой разработчиков продукта. Это позволяет командам быть ориентированными на пользователя и действовать с максимальным эффектом.

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

Как маркетинговые, так и UX исследования составляют неотъемлемую часть процесса разработки и проектирования продукта.

Маркетинговые исследования направлены на понимание покупательского поведения и предпочтений аудитории.

UX-исследования направлены на понимание того, как пользователи взаимодействуют с продуктом и как сделать продукт более привлекательным.

Читать далее
Всего голосов 5: ↑2 и ↓3+1
Комментарии6

Про поставки и релизы в мобильной разработке

Время на прочтение11 мин
Количество просмотров5.6K

Благодаря старанию мобильного сообщества сейчас есть много классных источников информации про то, как писать код, или про то, как устроена мобильная ОС.  Намного меньше источников, из которых можно узнать, как выстраивать процессы поставки в командах и как связывать это с процессом разработки. А это тоже по-своему важно. Прозрачность и общее понимание процесса релиза и доставки позитивно влияет на эффективность команды - помогает каждому лучше планировать деятельность.

Читать далее
Всего голосов 3: ↑2 и ↓1+1
Комментарии7

Hilt+Retrofit+Coroutine

Время на прочтение7 мин
Количество просмотров16K

Настало время разобраться с интересной библиотекой Hilt, которая построена на базе Dagger, и которую рекомендует использовать https://developer.android.com при создании различных зависимостей в вашем проекте. Рассмотрим как можно безболезненно внедрить её в ваш проект, работающий на архитектуре MVVM и использующий Retrofit.

Читать далее
Всего голосов 3: ↑2 и ↓1+5
Комментарии5

Улучшаем производительность android-приложения с помощью Baseline profiles

Время на прочтение7 мин
Количество просмотров9.2K


Производительность важна для формирования положительного пользовательского опыта использования приложения, поэтому разработчики стремятся ускорить работу своих программ. Для приложений в области безопасности важно время инициализации: пара секунд может стать роковой для пользователя. Поэтому в «Лаборатории Касперского» мы пристально следим за производительностью наших приложений, анализируем влияние новых доработок на ключевые метрики и регулярно улучшаем их.

В большинстве случаев работа над производительностью сводится к оптимизации исходного кода: сперва находят узкие места при помощи метрик, утилит и инструментов, затем разработчик обращается к коду для поиска и устранения проблем. Иногда Google предоставляет дополнительные возможности для оптимизации. Baseline profile стал одной из таких возможностей и был анонсирован совсем недавно. Безусловно, такие доработки очень приятны для разработчиков и полезны для приложений, поэтому мы с огромным интересом знакомимся с новой возможностью и начинаем применять ее к нашему проекту.

В этой статье я хочу поделиться нашим опытом и результатами. Сперва мы коротко вспомним виды компиляции в Android, поймем принцип, на котором основывается данная оптимизация. Затем ознакомимся с пошаговой инструкцией по интеграции в свой проект и посмотрим на полученные результаты. В конце я расскажу о наших дальнейших шагах и планах.
Читать дальше →
Всего голосов 14: ↑11 и ↓3+15
Комментарии1

Что ты такое, Event Loop? Или как устроен цикл событий в браузере Chrome

Время на прочтение3 мин
Количество просмотров154K
Как думаете, что произойдет, если запустить в консоли браузера этот фрагмент кода?

function foo() {
  setTimeout(foo, 0);
}

foo();

А этот?

function foo() {
  Promise.resolve().then(foo);
}

foo();

Если вы также, как и я, прочитали кучу статей про Event Loop, Main Thread, таски, микротаски и прочее, но затрудняетесь ответить на вопросы выше — эта статья для вас.
Читать дальше →
Всего голосов 50: ↑47 и ↓3+44
Комментарии16

Объектно-ориентированный Gradle. Настраиваем Build types в Android, используя Kotlin DSL

Время на прочтение4 мин
Количество просмотров7.7K

В этой статье мы поговорим о том, как наша команда перешла на Kotlin DSL для описания Gradle файлов, и как в итоге мы получили типы сборок, описанные классами и имеющие общий интерфейс.

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии4

Как на Flutter-проекте реализовать разделение Google-сервисов и Huawei-сервисов

Время на прочтение7 мин
Количество просмотров5.6K

...

Всем привет! Меня зовут Никита Спирьянов, я Head of mobile в Friflex. Мы занимаемся разработкой мобильных приложений и высоконагруженных проектов. 

Новость о том, что Аpp Store и Google Play могут перестать корректно работать для российских пользователей, спровоцировала рост популярности альтернативных способов дистрибуции приложений, один из них – магазин приложений AppGallery от Huawei.

В этой статье я покажу, как можно разделить GMS (Google Mobile Services) и HMS (Huawei Mobile Services) внутри Flutter-приложения.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

Знакомьтесь: библиотека TiRecycler

Время на прочтение9 мин
Количество просмотров7K

Всем привет! Меня зовут Александр Гузенко, и в Тинькофф я занимаюсь всякими техническими вещами вроде CI/CD, gradle и внедрением новых подходов. Хочу рассказать вам про библиотеку, которую мы создали в команде Тинькофф Бизнеса, когда столкнулись с многословными адаптер-делегатами.

Прочитать подробнее
Всего голосов 23: ↑21 и ↓2+19
Комментарии4

Правильно подключаем тяжелые зависимости к Xcode проекту через Swift Package Manager

Время на прочтение7 мин
Количество просмотров7K

В этой статье я расскажу о проблемах с которыми я столкнулся при подключении тяжелых зависимостей к iOS проекту с помощью Swift Package Manager и о способе их решения.

Читать далее
Всего голосов 7: ↑7 и ↓0+7
Комментарии7

Особенности разработки для WatchOS приложений для здоровья

Время на прочтение11 мин
Количество просмотров3.4K

Достаточно плотно разработкой программного обеспечения для часов я занимаюсь с 2017 года. За этот период сменилось 4 версии WatchOS (5, 6, 7, 8). Появилось больше функционала и исправлено множество баг с внедрением каждой новой версии Swift. Complications стали более самостоятельной частью приложения.

За 5 лет работы в сфере разработки приложений для часов мне пришлось столкнуться с множеством различных проблем и задач. Я хотел бы поделиться опытом и получить критические замечания относительно проделанной работы. Заранее сделаю оговорку, что решения, используемые в моей разработке, не претендуют на истинно верные. Не буду спорить, что что-то можно было бы сделать по-другому и лучше.

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии6

Как отследить состояние сетевого соединения в Swift? Привет, нативная реализация, пока, Reachability

Время на прочтение5 мин
Количество просмотров10K

Рассмотрим нативное решение для мониторинга сетевого подключения на iOS с помощью Swift 5 и использования Network Link Conditioner.

Читать далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии3

Настольный клиент для Yandex Speechkit text2speech на коленке

Время на прочтение3 мин
Количество просмотров4K

Вчера понадобилось мне записать голос для голосового (IVR) меню. Решил воспользоваться голосами от яндекс.облака, тем более что они теперь все высококачественные, и от человеческого неотличимы. Но как бы это сделать поудобнее, чтобы не надо было потом редактировать и конвертировать? Казалось бы, можно воспользоваться демкой на странице описания, но во первых там есть ограничение длины текста, во вторых она дает сохранить только запись в формате ogg, и в третьих иногда добавляет в запись рекламу. Оно и понятно в общем то, эта демка предназначена для показа технологии а не для коммерческого использования.

Резюме - надо получать записи как положено, через api, тем более что оно простое и понятное, только небольшая сложность с авторизацией. Но то что оно несложное не значит что им можно легко и просто с нуля воспользоваться, нужен хоть какой то интерфейс.

Беглый гуглёж ничего не принес, только несколько малопонятных проектов на гитхабе.

Уже думал быстренько наваять какой нибудь свой веб-интерфейс но тут вспомнил что есть Postman. Для тех кто не в теме - это замечательная программа для тестирования любых api интерфейсов.

Под катом - как настроить Postman для преобразования текста в речь.

Читать далее
Всего голосов 4: ↑3 и ↓1+3
Комментарии3

Один на всех, или как компания с несколькими десятками проектов сидит на одном Apple Developer-аккаунте

Время на прочтение6 мин
Количество просмотров5.7K

Рассказываем, какие типы сборок и распространения есть в iOS, какие палки в колеса нашего рабочего локомотива вставляет Apple и как разработчиков может выручить утилита с парочкой команд.

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии2
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность