Pull to refresh
0
0
Александр @KriopeG

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

Send message

Android insets: разбираемся со страхами и готовимся к Android Q

Reading time 23 min
Views 48K
Android Q — это десятая версия Android с 29-м уровнем API. Одна из главных идей новой версии это концепция edge-to-edge, когда приложения занимают весь экран, от нижней рамки до верхней. Это значит, что Status Bar и Navigation Bar должны быть прозрачными. Но, если они прозрачны, то системный UI нет — он перекрывает интерактивные компоненты приложения. Эта проблема решается с помощью insets.

Мобильные разработчики избегают insets, они вызывают у них страх. Но в Android Q обойти insets не удастся — придется их изучить и применять. На самом деле, в insets нет ничего сложного: они показывают, какие элементы экрана пересекаются с системным интерфейсом, и подсказывают, как переместить элемент, чтобы он не конфликтовал с системным UI. О том, как работают insets и чем они полезны, расскажет Константин Цховребов.

Total votes 22: ↑21 and ↓1 +20
Comments 10

Поднимаем CI на github для Android за день

Reading time 4 min
Views 11K
Привет!

С появлением Github Actions проявил инициативу и интегрировал простенький (но вполне эффективный) CI/CD в наш небольшой, но уже как 2 года живой проект Flowwow.

Зачем?



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

Как минимизировать факапы на продакшене, расскажу ниже.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 15

Современная Android разработка на Kotlin. Часть 2

Reading time 24 min
Views 66K
Привет, Хабр! Представляю вашему вниманию перевод статьи "Modern Android development with Kotlin (Part 2)" автора Mladen Rakonjac.

Примечание. Данная статья является переводом циклов статей от Mladen Rakonjac, дата статьи: 23.09.2017. GitHub. Начав читать первую часть от SemperPeritus обнаружил, что остальные части почему-то не были переведены. Поэтому и предлагаю вашему вниманию вторую часть. Статья получилась объёмной.

image

«Очень сложно найти один проект, который охватывал бы всё новое в разработке под Android в Android Studio 3.0, поэтому я решил написать его.»
Total votes 21: ↑19 and ↓2 +17
Comments 5

Публикация Android библиотеки в jCenter

Reading time 8 min
Views 19K


В жизни каждого андроид разработчика настаёт момент, когда количество самописных утилит и хелперов, качующих из проекта в проект, переваливает за десяток. В этом случае хорошей практикой будет оформление подобных хелперов в виде самостоятельных «модулей» в терминах Android Studio. Еще лучше, если Вы собираетесь поделиться Вашими наработками с комьюнити, снабдив исходный код подходящей лицензией. Но просто залить исходники на GitHub в этом случае будет недостаточно – хочется, чтобы любой желающий мог подключить библиотеку с помощью однострочной Gradle зависимости, например такой:

dependencies {
   compile 'com.github.romangromov:simpleprefs:0.0.8'
}

О том, как этого добиться и пойдет речь в данной статье.
Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Comments 5

Написание шейдеров в Unity. GrabPass, PerRendererData

Reading time 9 min
Views 28K
Привет! Я хотел бы поделиться опытом написания шейдеров в Unity. Начнем с шейдера искажения пространства (Displacement/Refraction) в 2D, рассмотрим функционал, используемый для его написания (GrabPass, PerRendererData), а также уделим внимание проблемам, которые обязательно возникнут.

Информация пригодится тем, кто имеет общее представление о шейдерах и пробовал их создавать, но мало знаком с возможностями, которые предоставляет Unity, и не знает с какой стороны подступиться. Загляните, возможно, мой опыт поможет вам разобраться.


Читать дальше →
Total votes 53: ↑53 and ↓0 +53
Comments 9

Разбираемся с Clean Code в Android

Reading time 7 min
Views 12K
В качестве вступления хотелось бы вспомнить цитату дядюшки Боба
Вы читаете эту статью по двум причинам. Первая — Вы программист, вторая — Вы хотите быть лучшим программистом.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Comments 3

Coroutines :: опыт практического применения

Reading time 9 min
Views 33K
В этой статье расскажу о том, как работают корутины и как их создать. Рассмотрим применение при последовательном, параллельном выполнении. Поговорим об обработке ошибок, отладке и способах тестирования корутин. В конце я подведу итог и расскажу о впечатлениях, которые остались после применения данного подхода.

Статья подготовлена по материалам моего доклада на MBLT DEV 2018, в конце поста — линк на видеозапись.

Последовательный стиль


Total votes 27: ↑27 and ↓0 +27
Comments 3

7 полезных советов для тех, кто использует Room

Reading time 7 min
Views 10K

7 полезных советов для тех, кто использует Room


Room — это уровень абстракции поверх SQLite, который упрощает организацию хранения данных. Если вы ещё мало знакомы с Room, то посмотрите эту вводную статью:


7 шагов к использованию Room. Пошаговое руководство по миграции приложения на Room

А в этой статье я хотел бы поделиться несколькими советами о том, как максимально эффективно использовать Room.

Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Comments 1

30 Android-библиотек и инструментов, которые не должны пройти мимо вас в 2018 году

Reading time 9 min
Views 37K

30 Android-библиотек и инструментов, которые не должны пройти мимо вас в 2018 году


В течение лета 2018 года было разработано и обновлено множество отличных Android-библиотек и инструментов.


Я составил самый новый неупорядоченный список Android-библиотек, инструментов и проектов, которые могут оказаться интересными или полезными во время вашей повседневной работы. Они также отлично подойдут для вдохновения или экспериментов.


Надеюсь, вам понравится. Давайте начнём!

Читать дальше →
Total votes 20: ↑17 and ↓3 +14
Comments 5

Material Design: Shape – советы по улучшению GUI приложения Android (и не только) с помощью изменения форм элементов

Reading time 9 min
Views 15K


От переводчика


Здравствуйте. Этот перевод я делаю потому как сам недавно начал разбираться с Shape в Android, решил пошарить по material.io, и нашел там этот сборник советов по использованию. Мне он показался интересным, полезным, и познавательным, поэтому я решил поделиться им с российским сегментом разработчиков мобильных приложений.

Мне кажется что эта тема достаточно важная, ведь использование разных форм для элементов интерфейса делает приложение интереснее, и может быть даже серьезнее.

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

Надеюсь что вы сможете извлечь пользу из прочитанного, и возможно улучшить качество своих приложений.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 1

Искусственный интеллект упёрся в барьер понимания

Reading time 5 min
Views 33K
Алгоритмы машинного обучения ещё не понимают реальность так, как это делают люди — иногда с катастрофическими последствиями

Об авторе: Мелани Митчелл — профессор компьютерных наук в Портлендском государственном университете и приглашённый профессор в Институте Санта-Фе. Её книга «Искусственный интеллект: руководство для мыслящих людей» будет опубликована в 2019 году издательством Farrar, Straus, and Giroux


Посетитель выставки Artificial Intelligence Expo в ЮАР, сентябрь 2018 года. Фото: Nic Bothma/EPA, via Shutterstock

Наверное, вы слышали, что мы находимся в разгаре революции ИИ. Нам говорят, что машинный интеллект прогрессирует с поразительной скоростью, опираясь на алгоритмы «глубокого обучения», которые используют огромные объёмы данных для обучения сложных программ, известных как «нейронные сети».

Сегодняшние программы могут распознавать лица и записывать речь. У нас есть программы для обнаружения тонкого финансового мошенничества, для нахождения релевантных веб-страниц в ответ на неоднозначные запросы, для прокладки оптимального маршрута практически в любом месте, эти программы побеждают гроссмейстеров в шахматы и Go и переводят между сотнями языков. Более того, нам обещают уже скоро и повсеместно беспилотные автомобили, автоматическую диагностику рака, роботов по уборке домов и даже автоматические научные открытия.
Читать дальше →
Total votes 37: ↑34 and ↓3 +31
Comments 99

ViewModel и LiveData: паттерны и антипаттерны

Reading time 7 min
Views 44K
Привет, Хабр! Представляю вашему вниманию перевод статьи ViewModels and LiveData: Patterns + AntiPatterns автора Jose Alcérreca.

View и ViewModel


Распределение ответственностей


Типичное взаимодействие объектов приложения, построенное с помощью Архитектурных Компонентов:

image

В идеале ViewModel не должна ничего знать про Android. Это улучшает тестируемость и модульность, снижает кол-во утечек памяти. Основное правило — в Вашей ViewModel не должно быть импортов android.* (за исключением вроде android.arch.*). Это относится и к Presenter.
ViewModel (и Presenter) не должны знать о классах фреймворка Android

Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Comments 5

Unity3D: архитектура игры, ScriptableObjects, синглтоны

Reading time 6 min
Views 27K
Сегодня речь пойдет о том, как хранить, получать и передавать данные внутри игры. О замечательной вещи под названием ScriptableObject, и почему она замечательна. Немного затронем пользу от синглтонов при организации сцен и переходов между ними.

Данная статья описывает частичку долгого и мучительного пути разработки игры, различные примененные в процессе подходы. Скорее всего, здесь будет много полезной информации для новичков и ничего нового для «ветеранов».
Читать дальше →
Total votes 18: ↑16 and ↓2 +14
Comments 15

25 занимательных Android библиотек. Весна 2018

Reading time 5 min
Views 20K
Это список из 25 новейших Android-библиотек, проектов и инструментов, выпущенных за последние 3 месяца. Здесь нет первого и последнего места, это просто список интересных библиотек. Они определённо заслуживают вашего внимания. Наслаждайтесь!


Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Comments 2

Understanding Dependencies

Reading time 12 min
Views 67K

От переводчика


Мы — внедрители. Мы должны внедрять, а не фантазировать!
(Рина Зеленая, к/ф «Девушка без адреса»)

К переводу этой статьи меня побудили две причины: 1) желание лучше разобраться с фреймворком Spring, 2) небольшое количество источников по теме на русском языке.

Краеугольный камень ООП — «внедрение зависимостей». Если описание процесса «внедрения» в целом, удовлетворительно, то объяснение понятия «зависимость» обычно оставляют за скобками. На мой взгляд, это существенное упущение.



Чтобы не фантазировать, а внедрять, нужно сначала разобраться с тем, что мы внедряем. И в этом нам может помочь лаконичная статья Jakob Jenkov «Understanding Dependencies». Она будет полезна не только тем, кто пишет на Java, но и тем, кто пишет на других языках и следит за качеством проектирования приложений.

UPD: Я перевел еще одну статью Jakob Jenkov о зависимостях. Читайте на Хабре перевод статьи Dependency Injection, которая открывает одноименную серию статей и по смыслу продолжает данную статью. В статьях серии рассматриваются такие понятия как Dependency, Dependency Injection (DI), DI-контейнеры.

Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 16

Свежая подборка ресурсов для маркетолога мобильных приложений: книги и блоги

Reading time 6 min
Views 22K


Оставаться хорошим маркетологом без постоянного самообразования немыслимо — банальная истина, о которой, тем не менее, часто забывают. А если вы занимаетесь продвижением мобильных приложений, то задача усложняется: не так легко найти проверенные источники с актуальной информацией, которую можно использовать на практике. Сегодня мы приготовили для вас пятничную подборку из 10 книг последних лет и 10 блогов, которые могут быть полезны маркетологу мобильных приложений.
Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Comments 2

Интеграция Google Pay

Reading time 8 min
Views 26K
Привет, Хабр!

Меня зовут Игорь, я Android-разработчик в команде Trinity Digital. Сегодня я хочу рассказать о классном инструменте — Google Pay API.

изображение с сайта https://developers.google.com/payments/

Итак, если в вашем приложении можно совершать покупки, и при этом вы используете не In-app Billing (за процессинг отвечает не Google Play), то скорее всего среди вариантов оплаты у вас есть и “Оплата картой”. А это значит, что вам каждый раз приходится отправлять пользователя вводить данные карты или на красиво сверстанные экраны с картой, или на веб-сайт вашего провайдера платежных сервисов (далее — payment processor). Уже посчитали сколько действий придется совершить пользователю, чтобы оплатить заветный заказ? Ага, а теперь представьте, что он сможет выполнить то же целевое действие всего в два тапа. Мы тоже представили и подумали, а почему бы не дать пользователям такую возможность? Основные условия успеха — продавец быть зарегистрирован в Google и payment processor должен сотрудничать с Google.
Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Comments 3

Головная боль от RecyclerView.Adapter — выход есть

Reading time 5 min
Views 17K
Привет, Хабр! Сегодня в нашем блоге Макс Туев, архитектор Surf, одной из наших сертифицированных студий. Ребята занимаются заказной разработкой, поэтому сроки важны не меньше, чем качество кода. Подходы и технологии, которые тормозят разработку, здесь не подходят. Хороший пример такого — RecyclerView.Adapter. Под катом Макс расскажет, как сэкономить время и нервы. Слово Максу.


Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Comments 4

Использование SVG в качестве Placeholder’a

Reading time 7 min
Views 38K
image

Генерация SVG из изображений может использоваться для Placeholder’ов.

Я занимаюсь оптимизацией изображений и картинок для их быстрой загрузки. Одна из самых интересных областей исследования это Placeholder’ы: что показывать, когда изображение еще не загружено.

В последние дни я сталкивался с некоторыми методами загрузки, которые используют SVG, и я хотел бы описать их в этом посте.

В этом посте мы рассмотрим следующие темы:

  • Обзор различных типов Placeholder’ов
  • Placeholder на основе SVG (контуры, фигуры и силуэты)
  • Автоматизация процесса.

Читать дальше →
Total votes 117: ↑117 and ↓0 +117
Comments 53

Не используйте лямбды в качестве слушателей в Kotlin

Reading time 10 min
Views 15K
Привет, Хабр! Представляю вашему вниманию перевод статьи Don't use lambdas as listeners in Kotlin автора Alex Gherschon

От переводчика: Kotlin — очень мощный язык, который позволяет писать код лаконичней и быстрей. Но, в последнее время, появилось слишком много статей, которые описывают хорошие стороны языка, приумалчивая о подводных камнях, а они есть, ведь язык привносит новые конструкции, которые являются черным ящиком для новичка. В этой статье, которая является переводом, рассматривается использование лямбд в качестве слушателей в Android. Она поможет не наступить на те же грабли, на которые наступил и автор, ведь, в конечном итоге, специфика платформы никуда не девается при смене языка.
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Comments 4

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity