Pull to refresh
6
0

Разработчик Андроид

Masking Bitmaps на Android

Reading time 12 min
Views 20K


Введение


При разработке под Android довольно часто возникает задача наложить маску на изображение. Чаще всего требуется закруглить углы у фотографий или сделать изображение полностью круглым. Но иногда применяются маски и более сложной формы.

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

Я предполагаю, что читатель имеет опыт в разработке под Android и знаком с классами Canvas, Drawable и Bitmap.

Код, используемый в статье, можно найти на GitHub.
Читать дальше →
Total votes 48: ↑47 and ↓1 +46
Comments 7

Dagger 2. Часть третья. Новые грани возможного

Reading time 19 min
Views 62K

Всем привет! Наконец-то подоспела третья часть цикла статей о Dagger 2!


Перед дальнейшим прочтением настоятельно рекомендую ознакомиться с первой и второй частями.


Большое спасибо за отзывы и комментарии. Я очень рад, что мои статьи действительно помогают разработчикам окунуться в мир Даггера. Именно это и придает силы творить для вас дальше.
В третьей части мы с вами рассмотрим различные интересные и немаловажные фичи библиотеки, которые могут вам очень пригодиться.


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


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


Итак, хватит разглагольствовать, и вперед к новым знаниям!

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

25 Android-библиотек, которыми определенно стоит воспользоваться в начале 2017 года

Reading time 5 min
Views 45K
Вот список 25 Android-библиотек, релиз которых состоялся в январе-феврале 2017 года. Все они достойны внимания, место в списке не определяется значимостью. Приступим!


Читать дальше →
Total votes 41: ↑32 and ↓9 +23
Comments 9

Построение Android приложений шаг за шагом, часть третья

Reading time 13 min
Views 49K


В первой и второй частях статьи мы создали приложение для работы с Github, внедрили Dagger 2 и покрыли код unit тестами. В заключительной части мы напишем интеграционные и функциональные тесты, рассмотрим технику TDD и напишем с ее применением новую функциональность, а также подскажем, что читать дальше.
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Comments 3

Архитектура Android-приложений… Правильный путь?

Reading time 5 min
Views 93K
От переводчика: Некоторые термины, которые использует автор, не имеют общепринятого перевода (ну, или я его не знаю:), поэтому я решил оставить большинство на языке оригинала — они всё равно понятны и для тех, кто пишет под android, но не знает английский.
Куда писать об ошибках и неточностях, вы знаете.


За последние несколько месяцев, а также после дискуссий на Tuenti с коллегами вроде @pedro_g_s и @flipper83 (кстати говоря, 2 крутых Android-разработчика), я решил, что имеет смысл написать заметку о проектировании Android-приложений.

Цель поста — немного рассказать о подходе к проектированию, который я продвигал в последние несколько месяцев, и также поделиться всем тем, что я узнал во время исследования и реализации этого подхода.
Удиви меня
Total votes 31: ↑30 and ↓1 +29
Comments 9

Кюветы Android, Часть 1: SDK

Reading time 12 min
Views 26K
Довольно долгое время я никак не мог понять, в чём же разница между «библиотекой» и «фреймворком». Нет-нет, я умел и читать, и гуглить, но до меня всё никак не доходил смысл этих понятий. Начав же программировать под андроид, я наконец понял, что значат слова «библиотеку использует программист, но программиста использует фреймворк».
В этой серии статьей я хочу рассказать о проблемах, с которыми мне пришлось столнулся при разработке под андроид. Моей целью является не предоставление каких-либо убер-решений приведенных проблем, а лишь информирование о том, с какими проблемами может столкнуться тот, кто посягнет на святой грааль Android SDK. Не думаю, что суровые синьоры откроют для себя Америку, но как говорится: «повторение — мать учения».
image
Читать дальше →
Total votes 27: ↑25 and ↓2 +23
Comments 21

Обзор книг по дизайну

Reading time 8 min
Views 21K
Всем привет! У нас вышли новые книги по дизайну

image
Дизайн. Книга для недизайнеров. 4-е изд.
Автор: Робин Уильямс

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

Мысли о дизайне
Автор(ы): П. Рэнд

Эссе Пола Рэнда по дизайну — старейшее и самое известное в мире. Впервые книга увидела свет еще в 1970-х, а основные идеи, изложенные в ней автором, абсолютно актуальны и сегодня! Поэтому, переизданная снова в 2014 году, она тут же стала мировым бестселлером. Этот классический труд будет интересен и полезен как студентам художественных факультетов, так и профессиональным дизайнерам.
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Comments 0

Расширяемый код Android-приложений с MVP

Reading time 7 min
Views 51K
От переводчика: — я давненько интересуюсь тем, как сделать код Android-приложений чище, и это, наверное, первая статья, после которой у меня не возникло мыслей: "Зачем вот это вот все?" и "Он вообще пробовал когда-то это использовать в жизни?" Поэтому решил перевести, может, еще кому-то будет полезно.

Написать Hello World всегда легко. Код выглядит просто и прямолинейно, и кажется, что SDK очень адаптирована под ваши нужды. Но если у вас есть опыт написания более сложных Android-приложений, вы знаете, что с рабочим кодом все не так. Можно провести часы за попыткой понять, почему ваша корзина покупок не обновляется после изменения ориентации телефона, если недоступен WiFi. Вы предполагаете, что решением проблемы, возможно, будет добавить ещё один if в 457-строчном методе onCreate() вашей активити — где-то между тем кодом, который исправляет падение на самсунгах с Android 4.1 на борту, и тем, который показывает купон на 5$ в день рождения пользователя. Что ж, есть способ получше.

Мы в Remind (прим. пер. — название компании, где работает автор) выкатываем новые функции каждые две недели, и для того чтобы поддерживать эту скорость и высокое качество продукта, нужен способ сохранять код простым, поддерживаемым, разделённым (прим. пер. — "decoupled", в смысле слабой связанности) и тестируемым. Использование архитектурного паттерна MVP позволяет нам делать это и сосредоточиваться на самой значимой части нашего кода — нашей бизнес-логике.
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Comments 9

Отзывчивое Android-приложение или 1001 способ загрузить картинку

Reading time 16 min
Views 55K
О реализации многопоточности при разработки Android-приложений уже написано немало. В этой же статье хочется провести сравнение нескольких распространенных на сегодня способов скачать/прочитать/сохранить/посчитать, при этом не дав пользователю повода для раздражения. Постараться понять, когда то или иное решение будет уместным, а чего лучше не делать вовсе. Попытаемся показать, почему привычных вещей, таких как класс Thread и пакет java.util.concurrent оказывается недостаточно, когда речь заходит об Android-приложении.

Читать дальше →
Total votes 38: ↑36 and ↓2 +34
Comments 17

Все о String.intern()

Reading time 4 min
Views 115K
Думаю, что многие Java-разработчики знают или хотя бы слышали о методе String.intern(). Но далеко не каждый использует его в своих приложениях или представляет в каких случаях он полезен и полезен ли вообще. Так было и со мной до тех пор пока я не столкнулся с этим методом в одном из проектов. В тот момент я захотел узнать смысл и особенности его использования и набрел на одну весьма интересную статью ведущего разработчика Yahoo! по имени Ethan Nicholas, переводом которой теперь хочу поделиться с той частью Хабра-сообщества, которая не безразлична к языку Java.

Тем, кто знает об этом методе лишь понаслышке, добро пожаловать под кат.
Читать дальше →
Total votes 56: ↑49 and ↓7 +42
Comments 33

Построение Android приложений шаг за шагом, часть вторая

Reading time 11 min
Views 56K


В первой части статьи мы разработали приложение для работы с github, состоящее из двух экранов, разделенное по слоям с применением паттерна MVP. Мы использовали RxJava для упрощения взаимодействия с сервером и две модели данных для разных слоев. Во второй части мы внедрим Dagger 2, напишем unit тесты, посмотрим на MockWebServer, JaCoCo и Robolectric.
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 0

Кому жить, а кому умереть: приоритеты процессов в Android

Reading time 7 min
Views 34K
Примечание переводчика: при переводе старался максимально пользоваться терминологией, которую предлагает сам Google в русскоязычной версии документации по Android, таким образом «service» стал «службой», «content provider» стал «поставщиком контента», и так далее. А вот «activity» стать «операцией» так и не смог — не пересилил я себя. Извините.

Давайте признаем: мобильные устройства не обладают бесконечной памятью, бесконечным зарядом батареи, или чем-то ещё бесконечным. Для нас это означает следующее: мы должны рассматривать смерть процесса как натуральную часть жизненного цикла наших приложений. Важно убедиться, что освобождение памяти, связанное с уничтожением процесса, не приводит к негативным для нашего пользователя последствиям. Для выполнения этой задачи большая часть архитектуры процессов в Android была создана таким образом, чтобы обеспечить жёсткую иерархию, в соответствии с которой процессы живут и умирают.
Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Comments 4

Миссия невыполнима: геолокация на Android без сжирания батарейки

Reading time 10 min
Views 78K
Пользователь: это невозможно, GPS съест батарейку
Джуниор: это возможно, используй Geofences
Сеньор: есть варианты и получше

image
На картинке сначала в одну, а потом в другую сторону одновременно с одним человеком «прогулялись» 6 одинаковых телефонов. Но какой разный результат!
Читать дальше →
Total votes 44: ↑41 and ↓3 +38
Comments 12

Intro to RxJava

Reading time 1 min
Views 26K
В рамках образовательных программ в e-Legion мы проводим лекции по Android-разработке в лаборатории ИТИС КФУ. Двумя из них мы решили поделиться с вами. Лекции посвящены набирающему популярность фреймворку RxJava.

Лекция 1


В лекции рассказано про:
  • Общие идеи фреймворка RxJava, зачем это нужно и как с этим работать
  • Способы создания различных Observable и самые основные операции над ними
  • Основных операторов преобразования Observable, а также о методе cache
  • Операции соединения Observable и их последовательного / параллельного выполнения.


Презентация.
Читать дальше →
Total votes 24: ↑20 and ↓4 +16
Comments 3

Внедряем материальный дизайн

Reading time 7 min
Views 52K
Настало время переходить на Lollipop, друзья. Как бы смешно это не звучало.

image

Буквально вчера мы в Surfingbird обновили дизайн приложения и сегодня, по свежим следам, хотелось бы поделиться впечатлениями от перехода на material design.
Читать дальше →
Total votes 31: ↑27 and ↓4 +23
Comments 33

Разработка быстрых мобильных приложений на Android. Часть первая

Reading time 8 min
Views 38K
В Edison мы часто сталкиваемся с оптимизацией мобильных приложений и хотим поделиться материалом, который считаем крайне полезным, если вы решаете одну из двух задач: а) хотите чтобы приложение меньше тормозило; б) хотите сделать красивый, мягкий и гладкий интерфейс для массового пользователя.
Предлагаем вашему вниманию первую часть перевода статьи Udi Cohen, которую мы использовали как пособие для обучения молодых коллег оптимизации под Android.



Несколько недель назад я выступил на Droidcon в Нью-Йорке с докладом об оптимизации производительности Android.

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

Мои основные правила, которым я следую при работе с оптимизацией:
Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Comments 2

Gradle: 5 полезностей для разработчика

Reading time 6 min
Views 43K
Привет, Хабр! Настало время, когда можно сказать, что «new build system» Gradle является стандартом отрасли Android-разработки. Инструмент сделан настолько просто и удобно, что большинство разработчиков не испытает трудностей, даже не зная, как он устроен, и какие дополнительные возможности в нём есть — возникающие проблемы легко решаются с помощью 5 минут на StackOverflow, путем копирования «магического кода» в конфигурационные файлы. Возможно, в том числе из-за этого не все разработчики изучают Gradle детально и не знают о многих его полезных возможностях, которые существенно облегчают жизнь.


Сегодня рассмотрим пять таких полезностей
Total votes 29: ↑29 and ↓0 +29
Comments 17

400 потрясающих бесплатных сервисов

Reading time 16 min
Views 713K

Рад представить дополнение оригинального списка из 300 потрясающих бесплатных сервисов. Автор оригинальной статьи Ali Mese добавил ещё +100 новых сервисов, которые помогут найти все — от источников вдохновения и редакторов фотографий до создания опросов и бесплатных иконок.

И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные веб-сайты

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly: Конструктор веб-сайтов.
  • Layers: Создание сайтов на WordPress (new).
  • Bootstrap Zero: Самая большая коллекция бесплатных шаблонов Bootstrap (new).
  • Landing Harbor:  Продвижение мобильного приложения c помощью бесплатного лендинга (new).
Читать дальше →
Total votes 108: ↑89 and ↓19 +70
Comments 38

Google Cloud Endpoints на Java: Руководство. ч. 2 (Frontend)

Reading time 26 min
Views 8.3K
Часть первая: Google Cloud Endpoints на Java: Руководство. ч. 1
Часть третья: Google Cloud Endpoints на Java: Руководство. ч. 3
Часть четвертая: Работа с базой данных в Google App Engine/Google Cloud Endpoints на Java: фреймворк Objectify
Часть пятая: Google Cloud Storage c Java: изображения и другие файлы в облаках

В первой части мы рассмотрели создание проекта на Google Cloud Endpoints с Java, в этой статье речь пойдет о создании фронтенда к нашему API.

В дополнение к инструментам, использовавшимся в первой части, нам понадобится:

AngularJS, и начальное общее представление о том как он работает, опционально Bootstrap или Foundation.

Простейший веб-сервер на локальной машине для тестирования, и сервер для деплоя приложения.
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Comments 2

Хостинг Кафе

Reading time 5 min
Views 8.3K
Сегодня я хочу представить Хостинг Кафе. Этот домен-бренд объединяет в себе 6 различных сайтов, которые связаны с хостинговой тематикой:

  • VDS.menu — поиск виртуальных серверов
  • SHARED.menu — поиск виртуального хостинга
  • DEDICATED.menu — поиск выделенных серверов (в разработке)
  • HTTPS.menu — поиск SSL сертификатов
  • BACKUP.menu — поиск места для хранения резервных копий
  • LICENSE.menu — поиск лицензий на панели управления (в разработке)



На данный момент работают все проекты, кроме DEDICATED.menu и LICENSE.menu. Информация о VDS.menu и SHARED.menu уже размещалась на Хабре. Став владельцем этих двух сайтов, я решил максимально вдохнуть в них жизнь. В дополнение к этим двум сайтам прилагался домен dedicated.menu. После долгих раздумий, было принято решение объединить эти три домена под единым брендом HOSTING.cafe — кафе, в котором есть различные меню хостинговой тематики. В довесок к уже имеющимся доменам были приобретены HTTPS.menu, BACKUP.menu, LICENSE.menu.

За последнее время была проделана довольно большая работа по улучшению уже существующих сайтов и разработке новых.
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 17

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity