Correctly handling bundled Android notifications. Bundled notifications on Android are a tricky business.
Individual, fire-and-forget notifications are simple. You create a Notification, send it to NotificationManagerCompat, and the system handles the rest. Bundled notifications allow you to group multiple notifications together and present them as a single summary notification. It turns out that bundled notifications are much harder to implement than individual notifications. I recently refactored Trello's notifications because they never quite did what you expected. (I assume some familiarity with the notification system already; if you're just getting started with notifications, then I suggest reading this first.)
Summary Notification First, it's important to understand that bundled notifications also require a summary notification. This means you need to send NotificationManagerCompat the following Notifications: Package Name vs. Application ID – Styling Android. All Android developers should understand that the Package Name that we choose for our app is very important.
I’m referring to the Package Name of the application itself (which gets declared in the Manifest) rather than the Java package name (although often they will be identical. It was only recently, when I was tackling a somewhat obscure issue as part of my day job, that I realised that there is actually a subtle, but important, difference between the Package Name and the Application ID. FloatingActionMode — панель контекстных действий для Android. Контекстные действия с элементами списка широко используются с Android-приложениях.
Довольно удобно выделить несколько элементов или все элементы списка и применить какое-то действие ко всем выбранным элементам сразу. Удалить, например. Кюветы Android, Часть 1: SDK. Довольно долгое время я никак не мог понять, в чём же разница между «библиотекой» и «фреймворком».
Нет-нет, я умел и читать, и гуглить, но до меня всё никак не доходил смысл этих понятий. Начав же программировать под андроид, я наконец понял, что значат слова «библиотеку использует программист, но программиста использует фреймворк». Android-er: HandlerThread example. Last post show examples of AsyncTask and Thread + Handler, here is another version using HandlerThread.
This video show how it run on Android Emulator running Android N, in Multi-Window. The left windows running example of HandlerThread in this post, the right window running Thread + Handler in last post. MainActivity.java layout/activity_main.xml. Android Developer Tips & Tricks. A technical guide to improving the UI and UX of Android apps. Android Support Library 23.2. Posted by Ian Lake, Developer Advocate.
Сохранение состояния фрагментов (Fragment) / Хабрахабр. Распространенной проблемой является некорректное поведение приложения при повороте девайса.
Дело в том что при повороте Activity-host (Activity которое является родителем для фрагмента) уничтожается. В тот момент когда этот процесс происходит FragmentManager отвечает за уничтожение дочернего фрагмента. FragmentManager запускает методы угасающего жизненного цикла фрагмента: onPause(), onStop() и onDestroy(). В случае если в контроллере нашего дочернего фрагмента, к примеру, есть объект Media-Player, то в методе фрагмента Fragment.onDestroy() экземпляр нашего звонко играющего Media-Player-а прервет воспроизведение медиа данных.
Первое, что приходит в голову, сохранить состояние объекта Media-Player вызвав Fragment.onSaveInstanceState(Bundle), что сохранит данные, а новое Activity загрузит их. Поддержка векторной графики в Android, новая тема DayNight и новые элементы материального дизайна. Когда речь идет о библиотеке поддержки Android, важно понимать, что это не одна библиотека, а целый набор библиотек которые стремятся предоставить обратную совместимость версий Android API, а так же предлагают уникальные возможности, не требуя наличия последней версии платформы андроид.
Версия 23,2 добавляет несколько новых библиотек поддержки, а также новые возможности для многих из существующих библиотек. Поддержка векторной графики и векторной анимации в android Векторная графика позволяет заменить несколько png ресурсов одним векторным изображением, определенный в XML. В то время как ранее поддерживаемая только на Lollipop и выше, векторная графика и векторная анимация теперь доступны через две новых библиотеки поддержки support-vector-drawable and animated-vector-drawable, соответственно.
Расширяемый код Android-приложений с MVP. От переводчика: — я давненько интересуюсь тем, как сделать код Android-приложений чище, и это, наверное, первая статья, после которой у меня не возникло мыслей: "Зачем вот это вот все?
" и "Он вообще пробовал когда-то это использовать в жизни? " Поэтому решил перевести, может, еще кому-то будет полезно. Написать Hello World всегда легко. Код выглядит просто и прямолинейно, и кажется, что SDK очень адаптирована под ваши нужды. Но если у вас есть опыт написания более сложных Android-приложений, вы знаете, что с рабочим кодом все не так. Мы в Remind (прим. пер. — название компании, где работает автор) выкатываем новые функции каждые две недели, и для того чтобы поддерживать эту скорость и высокое качество продукта, нужен способ сохранять код простым, поддерживаемым, разделённым (прим. пер. — "decoupled", в смысле слабой связанности) и тестируемым. Пример кода, который иллюстрирует большинство подходов, описанных далее, вы можете найти здесь: Архитектура Android приложений. Код проекта должен быть разделён на независимые модули, работающие друг с другом как хорошо смазанный механизм — фото Честера Альвареза.
Экосистема средств разработки под Android развивается очень быстро. Каждую неделю кто-то создаёт новые инструменты, обновляет существующие библиотеки, пишет новые статьи, или выступает с докладами. Если вы уедете в отпуск на месяц, то к моменту вашего возвращения уже будет опубликована свежая версия Support Library и/или Google Play Services. Я занимаюсь разработкой Android-приложений в компании ribot в течение последних трёх лет, и всё это время и архитектура наших приложений, и используемые нами технологии, постоянно развивались и улучшались. Эта статья проведёт вас путём, пройденным нами, показав вынесенные нами уроки, совершенные нами ошибки, и рассуждения, которые привели ко всем этим архитектурным изменениям. Сборка гибридного приложения под Android / Хабрахабр.
Многие считают, что гибридные приложения не могут иметь хорошую производительность, особенно в плане построения страницы (то есть имеют низкий FPS). Это ошибочное мнение. Если умело собрать приложение, то можно добиться хороших показателей. В статье рассмотрен пример сборки такого гибридного приложения под Android в Windows 7 (хотя для iOs будет почти тоже самое). Допустим, у нас есть готовое приложение на HTML5, в котором вывод изображения полностью производиться через элемент Canvas (я использовал Phaser framework, 50 движущихся спрайтов). Поиск изменений в двух коллекциях. Сегодня в 00:31 Доброй ночи, сообщество. В текущем проекте, над которым я работаю, возникла необходимость определить изменения в двух коллекциях данных.
Если в двух словах, то с Сервера приходит List заказов и в БД лежит такой же List заказов. Нужно определить сколько заказов было добавлено, обновлено и удалено в новой коллекции. Заинтересовавшихся прошу под кат. Вроде как тривиальная задача скажете Вы и будете правы! Построение Android приложений шаг за шагом, часть третья / Блог компании Rambler&Co. В первой и второй частях статьи мы создали приложение для работы с Github, внедрили Dagger 2 и покрыли код unit тестами. В заключительной части мы напишем интеграционные и функциональные тесты, рассмотрим технику TDD и напишем с ее применением новую функциональность, а также подскажем, что читать дальше. Введение. Сборка гибридного приложения под Android / Хабрахабр. Альтернативы сервису parse.com. Как известно, в следующем январе сервис Parse будет закрыт. Большинство разработчиков ищут альтернативу для этого сервиса. В одном из проектов guthub собралось достаточно много альтернатив, со ссылками и описанием.
Перед вами — перевод этой страницы. Часть 1: универсальные сервисы Провайдеры, предоставляющие информацию в реальном времени, помечены (*). Android Fragment Lifecycle Tutorial with Example. Познаем IntelliJ IDEA / Блог им. Adelaida. Уважаемые, джаварашовцы! В интернете наткнулся на мой взгляд достаточно полезную статью о некотором полезном функционале IntelliJ IDEA (оригинал статьи здесь). От себя выкладываю перевод отдельных описаных автором статьи возможностей системы, которые могут пригодится для обучающихся. Перевод получился вольный, т.к. старался отобразить самое главное и кратко. ***Дополнительная информации Дополнительная информация о символе в месте курсора, например, про источник или тип объекта, отобразится по комбинации Ctrl+Q (Ctrl+J for OS X). Добавляем в Android-приложение систему локального поиска / Хабрахабр. Многие программы нуждаются в функции поиска.
Сегодня мы рассмотрим пример реализации подобного функционала в приложении для ресторана. Наша основная цель – дать пользователю возможность быстро и легко найти в меню из множества блюд то, чего ему хочется. Мы расскажем о том, как добавили функцию локального поиска по содержимому существующего приложения и при этом сохранили единообразие пользовательского интерфейса. Мы рассмотрим здесь изменения, внесённые в пользовательский интерфейс и причины этих изменений, так же поговорим о добавлении в элемент класса Activity объекта GestureOverlayView и о создании собственных жестов. Естественно, особое внимание будет уделено поиску. Android VIPER на реактивной тяге / Хабрахабр. Чем больше строк кода написано, тем реже хочется дублировать код, а чем больше проектов реализовано, тем чаще обходишь старые, хоть и зачастую любимые, грабли, и начинаешь все больше интересоваться архитектурными решениями.
Думаю, достаточно не привычно рядом с Android встретить горячо любимый iOS-разработчиками архитектурный шаблон VIPER, мы тоже первое время пропускали мимо ушей разговоры из соседнего отдела по этому поводу, пока вдруг не обнаружили, что стали невольно использовать такой шаблон в своих Android приложениях. Как такое могло произойти? Да очень просто. Поиски изящных архитектурных решений начались еще за долго до Android приложений, и одним из моих любимых и незаменимых правил всегда было — разделение проекта на три слабосвязанных слоя: Data, Domain, Presentation. Но помимо давно любимых и знакомых приемов в проектировании было место и открытиям. Думаю, вы заметили на схеме Observable, – именно здесь скрывается вся мощь реактивной тяги. Построение Android приложений шаг за шагом, часть вторая / Блог компании Rambler&Co. В первой части статьи мы разработали приложение для работы с github, состоящее из двух экранов, разделенное по слоям с применением паттерна MVP.
Мы использовали RxJava для упрощения взаимодействия с сервером и две модели данных для разных слоев. Во второй части мы внедрим Dagger 2, напишем unit тесты, посмотрим на MockWebServer, JaCoCo и Robolectric. Содержание: Введение. Libtastic. Перехватываем всё с помощью CoordinatorLayout Behavior / Хабрахабр. Предлагаю вашему вниманию перевод статьи Ian Lake Intercepting everything with CoordinatorLayout Behaviors. Вы не продвинетесь далеко в изучении Android Design Support Library, не столкнувшись с CoordinatorLayout. Множество View из Design Library требуют CoordinatorLayout. Но почему? Сам по себе CoordinatorLayout делает не так уж и много, если использовать его с View, входящими в состав Android фреймворка, то он будет работать, как обычный FrameLayout. Gradle: управляя зависимостями / Блог компании REDMADROBOT / Хабрахабр.
Мобильные приложения Stepic.org под iOS и Android / Блог компании Stepic.org. Ура, свершилось! У платформы с открытыми онлайн-курсами Stepic.org появились приложения под iOS и Android. В этом коротком посте мы расскажем о процессе работы над приложениями — выборе платформ, используемых технологиях и API, и даже дадим ссылки на исходный код. Мобильные приложения Stepic.org под iOS и Android / Блог компании Stepic.org.
GPS. Пользователь: это невозможно, GPS съест батарейку Джуниор: это возможно, используй Geofences Сеньор: есть варианты и получше На картинке сначала в одну, а потом в другую сторону одновременно с одним человеком «прогулялись» 6 одинаковых телефонов. Построение Android приложений шаг за шагом, часть первая / Хабрахабр. Кому жить, а кому умереть: приоритеты процессов в Android / Хабрахабр. 7 альтернатив Parse. Android Adapter Good Practices « Piwaï.info. There is a special place for Samsung in Android hell - Anas Ambri's website. Использование android.os.Binder для организации асинхронного взаимодействия в Андроиде.
Тотальная шаблонизация / Блог компании REDMADROBOT. Реализация списка использованных библиотек в Android приложении. Попытка №2. Android IDE Template Format. Итоги 2015 года для Android-разработчиков / Блог компании e-Legion Ltd. Реализация «Onboarding Experience» в вашем приложении. 4. Thread Communication - Efficient Android Threading. Cloud Messaging: Overview Процессы и потоки. Анимируем изменения размеров компонента в Android / Хабрахабр. Identifying App Installations. Методы лечения различных ошибок в Android Studio при разработке проекта / Хабрахабр. Памятка начинающим переводчикам приложений под Android или как начать переводить приложения / Geektimes. Intro to RxJava / Хабрахабр.