Как стать автором
Обновить
0
0
Александр @d-u-a-l

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

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

Android: выдвигающийся экран снизу

Время на прочтение5 мин
Количество просмотров97K
Данная статья является переводом статьи Emrullah Luleci, а также её продолжения.

Нижний экран (Здесь и далее под «нижним экраном/слоем» будет подразумеваться элемент bottom sheet — прим. пер.) — компонент, выезжающий снизу экрана, который используется для отображения дополнительного контента. Подробнее об этом элементе можно узнать на официальной сайте посвященном материальному дизайну.

image

Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии8

Тестирование Android приложений

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

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



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

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

Android Architecture Components. Часть 4. ViewModel

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

Компонент ViewModel — предназначен для хранения и управления данными, связанными с представлением, а заодно, избавить нас от проблемы, связанной с пересозданием активити во время таких операций, как переворот экрана и т.д. Не стоит его воспринимать, как замену onSaveInstanceState, поскольку, после того как система уничтожит нашу активити, к примеру, когда мы перейдем в другое приложение, ViewModel будет также уничтожен и не сохранит свое состояние. В целом же, компонент ViewModel можно охарактеризовать как синглтон с колекцией экземпляров классов ViewModel, который гарантирует, что не будет уничтожен пока есть активный экземпляр нашей активити и освободит ресурсы после ухода с нее (все немного сложнее, но выглядит как-то так). Стоит также отметить, что мы можем привязать любое количество ViewModel к нашей Activity(Fragment).

Компонент состоит из таких классов: ViewModel, AndroidViewModel, ViewModelProvider, ViewModelProviders, ViewModelStore, ViewModelStores. Разработчик будет работать только с  ViewModel, AndroidViewModel и для получения истанца с ViewModelProviders, но для лучшего понимания компонента, мы поверхностно рассмотрим все классы.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии3

Node.js и переход с PHP на JavaScript

Время на прочтение9 мин
Количество просмотров61K
Больше десяти лет я был PHP-разработчиком, но недавно перешёл на JavaScript, используя его серверные и клиентские возможности. До этого я уже был знаком с JS. Сначала работал с jQuery, потом освоил Angular, и, наконец, начал пользоваться React.

Когда я начинал писать на PHP, я встраивал его в HTML-файлы. Получался не код, а полный бардак. Поэтому, для того, чтобы привести мои разработки в приличный вид, я начал пользоваться фреймворками, в частности, ZF1 и ZF2. Через некоторое время подход, при использовании которого начинают разработку с API, привёл к тому, что у меня оказался сервер, состоящий из сгенерированных REST API и из нескольких сотен строк моего собственного кода.



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

Сегодня я расскажу, в основном, о своём путешествии с серверной стороны PHP на серверную сторону JS в виде Node.js. Здесь я не буду рассказывать о Webpack, React и о других клиентских технологиях JS.
Читать дальше →
Всего голосов 65: ↑52 и ↓13+39
Комментарии115

Чему я научился, конвертируя проект в Kotlin при помощи Android Studio

Время на прочтение9 мин
Количество просмотров12K
К большой моей радости, мне наконец выдалась возможность поработать с популярным языком Kotlin — конвертировать простенькое приложение из Java при помощи инструмента Convert Java File to Kotlin из Android Studio. Я опробовал язык и хотел бы рассказать о своем опыте.

Я быстро убедился, что этот инструмент конвертирует большую часть классов в Java практически безукоризненно. Но кое-где пришлось подчистить за ним код, и в процессе я выучил несколько новых ключевых слов!

Ниже я поделюсь своими наблюдениями. Прежде, чем мы начнем, замечу: если вы в какой-то момент захотите взглянуть, что происходит «под капотом», Android Studio позволяет отслеживать все процессы; просто перейдите в панели по следующему пути: Tools → Kotlin → Show Kotlin Bytecode.

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

«Фабричный метод» в разработке под Android. Лучший способ обработки пушей

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

В этой статье я бы хотел поговорить об одном из классических шаблонов проектирования в Android-разработке: фабричном методе (Fabric method). Изучать его мы будем на примере работы с Firebase Cloud Messaging (далее FCM). Цель — донести до начинающих разработчиков, пока не овладевших в полной мере всеми достоинствами ООП, важность применения приёмов объектно-ориентированного проектирования, как мы это сделали в Live Typing


image

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

Новая архитектура Android-приложений — пробуем на практике

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

Всем привет. На прошедшем Google I/O нам наконец представили официальное видение компании Google на архитектуру Android-приложений, а также библиотеки для его реализации. Не прошло и десяти лет. Конечно мне сразу захотелось попробовать, что же там предлагается.

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

Android AutoCompleteTextView с подсказками из веб-сервиса

Время на прочтение7 мин
Количество просмотров35K
Для одного из своих Android-приложений Book Tracker я реализовал кастомный AutoCompleteTextView с подсказками для названий книг, которые динамически подгружаются с Google Books по мере ввода названия книги.

Задача перед компонентом стояла следующая:
  • Загрузка данных должна осуществляться в отдельном потоке, чтобы не блокировать UI-поток;
  • Загрузка подсказок должна начинаться только, если пользователь приостанавливает набор (чтобы предотвратить отправку множества запросов к серверу после каждого введенного символа);
  • Подсказки должны загружаться, если пользователь ввел строку некоторой минимальной длины (нет смысла начинать загрузку данных для строки из двух или трех символов);
  • При запросе к серверу в правой части поля должен быть показан анимированный прогресс, чтобы информировать пользователя о загрузке.

Финальный результат:



Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии9

Dagger 2. Часть первая. Основы, создание графа зависимостей, Scopes

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

Всем привет! В последнее время появилось много средств, библиотек, которые существенно облегчают написание кода под Android. Только успевай за всем следить и все пробовать. Одним из таких средств является библиотека Dagger 2.


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


Сейчас, оглядываясь назад, я понимаю, что мне тогда очень не хватало схематичного отображения, картинок, явно показывающих "что, откуда и куда". Поэтому в своем цикле статей я постараюсь восполнить данный пробел. Надеюсь, это поможет новичкам и всем заинтересованным лучше понять Dagger 2 и решиться попробовать его у себя в проекте. Могу сразу сказать, это стоит того.


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

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

Укрощаем асинхронные процессы в Android с RxJava. Опыт Яндекса

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

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


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


Рассказывать обо всём я буду на примере приложения Яндекс.Недвижимость и его
главного экрана с картой.


Скриншот

Для начала посмотрим на экран и разберёмся, что на нём происходит и что нам
предстоит реализовать.


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

Руководство по работе с Redux

Время на прочтение80 мин
Количество просмотров284K
Сегодня Redux — это одно из наиболее интересных явлений мира JavaScript. Он выделяется из сотни библиотек и фреймворков тем, что грамотно решает множество разных вопросов путем введения простой и предсказуемой модели состояний, уклоне на функциональное программирование и неизменяемые данные, предоставления компактного API. Что ещё нужно для счастья? Redux — библиотека очень маленькая, и выучить её API не сложно. Но у многих людей происходит своеобразный разрыв шаблона — небольшое количество компонентов и добровольные ограничения чистых функций и неизменяемых данных могут показаться неоправданным принуждением. Каким именно образом работать в таких условиях?

В этом руководстве мы рассмотрим создание с нуля full-stack приложения с использованием Redux и Immutable-js. Применив подход TDD, пройдём все этапы конструирования Node+Redux бэкенда и React+Redux фронтенда приложения. Помимо этого мы будем использовать такие инструменты, как ES6, Babel, Socket.io, Webpack и Mocha. Набор весьма любопытный, и вы мигом его освоите!
Читать дальше →
Всего голосов 65: ↑59 и ↓6+53
Комментарии51

Android Tips and Tricks

Время на прочтение13 мин
Количество просмотров47K
В данном материале можно будет увидеть различные инструменты и подсказки, которые здорово облегчают жизнь Android разработчикам. Большая часть собрана напрямую от знакомых разработчиков и содержит вещи, которые должен знать каждый. Дополнения и расширения приветствуются, и если вы знаете о каком-то крутом механизме, который не был упомянут в статье, не поленитесь перейти в оригинал и открыть pull request.
Читать дальше →
Всего голосов 49: ↑49 и ↓0+49
Комментарии18

Malevich

Время на прочтение3 мин
Количество просмотров16K
Так сложилось, что я люблю маленькие верткие библиотеки, которые с одной стороны — легко расширять, а с другой — удобны в использовании.

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

Так как человек я по натуре ленивый — решил пойти проторенным путем — открыл пример от гугла Loading Large Bitmaps Efficiently и решил вырезав из него все ненужное — получить с одной стороны легко расширяемую, а с другой стороны максимально эффективную библиотеку.

Так как кто как не эти чуваки лучше знают как грузить битмапы?

Так и получился Малевич:

image

Спойлер:

malevich.load(mImageUrl).into(mImageView);

Подробности
Всего голосов 29: ↑27 и ↓2+25
Комментарии27

Информация

В рейтинге
Не участвует
Откуда
Украина
Дата рождения
Зарегистрирован
Активность