Pull to refresh
2
0
Send message

Android 12. Splash Screen API. Делаем анимированный экран загрузки

Reading time7 min
Views26K

Android 12. Splash Screen API. Делаем анимированный экран загрузки (кручение). Боли и подводные камни, с которыми я столкнулся при реализации нового сплеш-скрина для Android 12.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments8

Фантастический Compose и его побочные эффекты

Level of difficultyEasy
Reading time8 min
Views12K

Всем привет! Меня зовут Иван, я - android-разработчик в компании Joy Dev.

Здесь будет знакомство с Compose и его магическими побочными эффектами . Статья рассчитана на новичков и любителей. Первая часть статьи будет посвящена экскурсу в термины и особенности Compose, вторая - расскажет о таком явлении, как побочные эффекты: что это и как работает.

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments5

Как создавать анимации в Jetpack Compose

Reading time25 min
Views23K

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

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments1

OAuth в мобильных приложениях

Reading time18 min
Views31K

Привет! Меня зовут Максим, я занимаюсь мобильной разработкой в KTS.

Ни один сервис не обходится без логина. Часто в мобильных приложениях требуется интегрировать вход через сторонние соцсети — например, зайти через Google или VK. А при обучении мобильной разработке используются открытые API, где для авторизации используется OAuth.

Поэтому разработчикам мобильных приложений приходится работать с OAuth. В сети по этой теме есть разрозненные материалы. 

Этой статьей я попробую закрыть нюансы OAuth в мобильных приложениях: на какие моменты стоит обратить внимание, какие способы реализации выбрать. А также поделюсь опытом настройки OAuth в Android-приложении с использованием библиотеки AppAuth.

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments0

Делаем приватный монитор из старого LCD монитора

Reading time2 min
Views973K


Вы наконец-то можете сделать кое-что со своим старым LCD монитором, который завалялся у Вас в гараже. Превратите его в шпионский монитор! Для всех вокруг он будет выглядеть просто белым экраном, но не для Вас, потому что у Вас будут специальные «волшебные» очки.

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

Читать дальше →
Total votes 1486: ↑1468 and ↓18+1450
Comments327

Kotlin под капотом: inline функции

Level of difficultyMedium
Reading time8 min
Views14K

Многие разработчики не понимают в чем профит от использования inline функций и в каких случаях их нужно использовать. Для чего нужен crossinline и как работает reified. Разбираемся как это работает на уровне байткода, в котором хорошо видно всю суть inline функций kotlin.

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments10

Осознанная оптимизация Compose

Level of difficultyMedium
Reading time29 min
Views41K

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

Наша команда Ozon Seller также столкнулась с этой проблемой. Мы решили собрать воедино все советы и наработки по написанию оптимизированного Compose-кода. Активное применение этих советов при оптимизации существующих экранов и написании новых существенно улучшило наши метрики: длительность лага по отношению к длительности скролла (hitch rate; чем меньше, тем лучше) экранов со списками упала в среднем с 15-19 % до 5-7 % (на 90-м перцентиле). Все эти советы и наработки мы описали в этой статье. Она будет полезна и начинающим, и опытным разработчикам, в ней подробно описаны оптимизации и механизмы Compose, а также рассказано про слабо задокументированных особенности и исправления ошибок, которые есть в других статьях. Давайте же начнём.

Читать далее
Total votes 37: ↑37 and ↓0+37
Comments15

Российская микроэлектроника — два года спустя

Level of difficultyHard
Reading time9 min
Views102K

За эту статью попрошу благодарить патриотично размороженных граждан в целом, и @WebPeople (регистрация 2012, разморожен с первым комментарием 8 июл 2023 в 20:47) в частности. Глобальное потепление, ничего не поделать.

В мае 2022 в комментариях @hippohood отметился не имеющим аналогов текстом:
Примерно опишу мыслительный процесс позитивно (патриотично) настроенных граждан.

Оборудование можно сделать и самим, но пока можно и просто привезти серым импортом. Оборудование выглядит примерно как большой ящик с дырками, включённый в розетку; в одну дырку складываешь кремний, в другую заливаешь фоторезистор. Под третью дырку надо подставить ведро - в него будут ссыпаться чипы. Вёдра мы делать умеем (хотя и импортируем сейчас, но чертежи-то остались), фоторезистор научатся намешивать в Зелинограде; с кремнием разберемся, не всё сразу. Надо ещё заранее заказать в Китае переходник с европейской розетки на нормальную - лучше сразу 3 или 4, они постоянно горят. Вроде все ясно.

Читать далее
Total votes 564: ↑539 and ↓25+599
Comments453

Работа с AIDL в Android

Reading time13 min
Views17K

Совсем недавно у меня появилась необходимость разработать функционал для взаимодействия между двумя приложениями одной компании, и недолго гуглив я открыл для себя мир межпроцессного взаимодействия в андройд - AIDL.

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

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments2

Mockito и как его готовить

Reading time21 min
Views306K

О статье


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


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

Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments11

Модульность и DI в современном Android-приложении. Большой туториал от Яндекса

Reading time21 min
Views32K

Всем привет! Я Денис Загаевский из Android-разработки Яндекс.Карт. Если вы развиваете многомодульное приложение или хотите разбить на части пока ещё одномодульное, этот туториал для вас.


Под катом расскажу, как удобно разбить приложение на модули, зачем это нужно и как потом приготовить в нём DI (dependency injection). Кто-то мог слышать мой доклад на Mobius 2021 Piter или в Школе мобильной разработки, а для всех остальных я написал эту статью.


Смотреть доклады

На Mobius:



В ШРИ:



Местами буду ссылаться на опыт Яндекс.Карт. Кстати, рабочий пример нашего подхода есть на GitHub.


Читать дальше →
Total votes 18: ↑17 and ↓1+19
Comments4

Прокачиваем Android проект с GitHub Actions. Часть 1

Reading time15 min
Views16K

Привет!

Это пост для тех, кто заинтересовался возможностями GitHub Actions, но никогда не имел опыта реальной настройки build-систем. Примеры будут полезны как для прокачки собственного pet-проекта, так и для понимания, как настраивается CI/CD, если по работе нет связанных с этим задач.

Читать далее
Total votes 19: ↑19 and ↓0+19
Comments2

6 способов спрятать данные в Android-приложении

Reading time7 min
Views29K

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


image


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

Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments15

Защита кода приложения Android. Когда хотели как лучше, а вышло не очень

Reading time4 min
Views6.6K

В статье расскажу пару случаев из практики анализа защиты приложений Android. Имена и место событий изменены. Любые совпадения — случайность

Читать далее
Total votes 23: ↑20 and ↓3+22
Comments7

Паттерны ООП в метафорах

Reading time17 min
Views562K
Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
Читать дальше →
Total votes 214: ↑201 and ↓13+188
Comments86

Custom view на Compose

Reading time6 min
Views9.3K

В июле Google выпустил стабильную версию Compose. Это вызвало большой интерес в сообществе. Все вокруг стали поговаривать, что эта технология захватит Android-разработку, и скоро все будут писать на Compose.

Я принялся за изучение, заглянул на developer.android.com и нашел различные туториалы по использованию этой библиотекой, но не увидел примеров, как можно создавать кастомные view. Поэтому решил попробовать сделать это и поделиться с вами результатом.

В этой статье покажу, как можно реализовать рыночный график со скроллом и зумом на Compose.

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments5

Custom View в Android — краткое руководство

Level of difficultyMedium
Reading time13 min
Views28K

Обзор возможностей кастомных View с примерами кода на Kotlin + бонус в виде ссылок на полезные статьи и обучающие видео по данной теме.

1. Введение.
— Когда может понадобиться реализация собственного View?
— Способы создания собственного View.
— Иерархия View в Android.
2. Жизненный цикл View.
3. Конструкторы View.
4. Методы View.
onAttachToWindow()
onMeasure()
onLayout()
onDraw()
onSizeChanged()
onSaveInstanceState() и onRestoreInstanceState()
onTouchEvent()
5. Обновление View.
invalidate()
requestLayout()
6. Атрибуты для Custom View.
7. Дополнительные материалы для изучения.

Читать дальше
Total votes 5: ↑4 and ↓1+5
Comments6

Программисты всё вымирают и вымирают

Level of difficultyEasy
Reading time18 min
Views128K

Да вымереть не могут.

Откуда это всё пошло? Чем так условные «программисты» не угодили? И почему именно программисты?

Читать далее
Total votes 335: ↑323 and ↓12+373
Comments583

Deep Dive Into Deep Link. Часть 1. Введение и исходная задача

Reading time11 min
Views23K

Давно хотели разобраться, как работают Deep Link-и? Мы стартуем новый цикл статей, который посвящен работе Deep Link в Android. В первой части мы зафиксируем основные понятия: ​​Deep Link, Web Link, App Link. Разберем особенности каждого вида Deep Link-ов и разницу между ними.

Читать лонгрид
Total votes 4: ↑4 and ↓0+4
Comments2

Пакуем весь трафик в Ping message, чтобы не платить за интернет | ICMP NAT traversal

Level of difficultyHard
Reading time29 min
Views89K

Бывало ли у вас такое, что вы подключились к общественной сети или мобильному интернету, но он себя странно ведёт. Надпись «Подключено, без доступа к интернету» отсутствует, устройство думает, что всё нормально. Вы открываете браузер и видите «Пройдите проверку личности в сети нашего кафе» или в случае с мобильным интернетом «Пополнить баланс можно тут, тут и тут».

Так вот, переходя ближе к теме. Вы можете воспроизвести подобное поведение очень просто прямо сейчас при помощи вашего мобильного телефона и ноутбука. Я в своём конкретном кейсе буду пользоваться услугами оператора красного цвета, однако проблема актуальна для всех текущих 4 монополистов рынка сотовой связи. Как вам, скорее всего, уже известно, они около года меняют свою политику, внедряя одно интересное нововведение — с вас требуют дополнительной платы за раздачу интернета поверх основного пакета. То есть вы не можете взять и использовать свои 7 гигов на месяц как ресурс для раздачи при помощи точки доступа. Для точки доступа вам предлагают отдельный, зачастую совсем невыгодный тариф. Конечно, можно сменить основной тариф на специальный «тариф для раздачи» и платить втридорога, но, как вы понимаете, сегодня мы в потребителя будем играть совсем недолго. Сейчас по пунктам нужно доказать нечестность подобной политики и с чувством завершённого введения перейдём к непосредственно технотексту.

Подобные условия пользования, само собой, порождают внутреннее недовольство пользователей:

За интернет они платят? — Да.

Раздача как-либо использует ресурсы провайдера сверх нормы? — Нет.
Читать дальше →
Total votes 233: ↑231 and ↓2+294
Comments91
1

Information

Rating
Does not participate
Registered
Activity