ru
Feedback
Разработка ждёт балета

Разработка ждёт балета

Открыть в Telegram
1 619
Подписчики
Нет данных24 часа
-17 дней
Нет данных30 день
Архив постов
Google Photos Library API: * Возможность показывать юзерам фото из их Photos библиотеки. И Smart Filters позволяют фильтровать по: тегам (распознанное в Cloud Vision API), датам и интервалам дат * Возможность загружать фото в Photos юзера * Инфраструктура для шэринга фото - шэринг через ссылку на shared album #talk #google #photos https://youtu.be/KIFfibtzaEo

Внезапно (не то чтобы очень, но всё же) Google убрали раздел Tablet с android-dot-com. Пациент и раньше был скорее мёртв, чем жив, так что я радуюсь. А за новость скажем спасибо @istima. #tablet #chromeos #google https://techcrunch.com/2018/06/01/google-quits-selling-tablets/

Как и обещал, подводим итоги опроса про интересующие вас темы. Спасибо всем, кто уделил минутку! Напомню, что можно было выбирать от 1 до 16 вариантов интересующих тем. Кстати, как меня потом пнул @pro100svitlo, я совсем забыл включить вариант про Б - Безопасность. Итак, получилось вот что: * Всего ответов: 127 * Минимально выбирали тем: 1 * Максимально выбирали тем: 16 (т.е. все) * В среднем выбирали по 6.7 вариантов * По медиане - выбирали 6 Теперь топ-5 тем: * 11% - Архитектура - разные паттерны или примеры проектирования определённых слоёв приложения * 11% - Внутренности View в Android, написание своих View и ViewGroup * 10% - Интересное из области performance в Android * 9% - Material Design с точки зрения разработчика - может какие-то интересные выработанные подходы * 8% - Какие-то непосредственные кишки Android - интересная но не всегда практичная инфа Полная табличка с результатами есть по ссылке. #survey #results #conference https://docs.google.com/spreadsheets/d/1u6v7EY1i9Rgmw8f_WIfAy7F9rPxw8T73wIyMgZfxkFU/edit?usp=sharing

Слушайте, а доклады на какие темы вам бы больше хотелось видеть на конференциях? Даже если вы на них совсем не ходите, какие темы вызывают наибольший интерес? Давайте проведём мини-опрос. Я не нашёл бота, который позволил бы делать множественный выбор и умел бы работать с таким кол-вом вариантов, но давайте хотя бы через Google форму. Там всего один вопрос, займёт меньше минуты :) Через недельку подведём итоги. #survey #conference https://goo.gl/forms/Nfuwk8BNVZUwROV53

@istima прислал ссылку на статью с перечислением Google приложений и сайтов, которые уже адаптировали обновленные Material Design гайдлайны. Посмотрите, если интересно. #google #material #guidelines https://9to5google.com/2018/05/22/full-list-google-apps-material-theme-design-2/

Неплохая статья в блоге Karumi с некоторыми советами/фишками по Kotlin. Многое из того, что там есть, довольно очевидно и баян. Но есть и очень приятные вещи типа .exhaustive для when. Советую посмотреть. #kotlin #tips http://blog.karumi.com/kotlin-android-development-6-months-into-it/

Новость, которая будет интересна всем Google Developer Experts (GDE) и тем, кто планирует получить этот статус. Каждый GDE теперь может получить бесплатную лицензию на все продукты JetBrains. #gde #google #intellij #jetbrains https://www.jetbrains.com/shop/eform/devrecognition

Очень насыщенный доклад про рисование текста. Пока что из всех Google I/O докладов мне встретилось два настолько насыщенных доклада - этот и про Android rendering pipeline, о нём я писал выше. Сразу порекомендую посмотреть это видео всем, кому приходится много использовать Span, особенно внутри RecyclerView. Ну и основные highlights: - Text stack в Android разбит на две части - Java и Native (сразу обратим внимание, что Android контролирует только три верхних уровня - всю Java часть и верхний уровень из Native - Minikin). * Верхний уровень в Java части - это TextView и EditText, затем идут Layout, Paint и Canvas * Native часть куда более насыщенная, пройдёмся сверху вниз: Minikin - библиотека для text measurement, line breaking и hyphenation (перенос слов), ICU - работа с Unicode, HarfBuzz - text shaping, FreeType - генерирует bitmaps для всех gliffs, Skia - основной графический движок системы - Начиная с Android L у нас есть System Wide Word Layout LRU Cache - кэширует до 5000 слов, чтобы переиспользовать результаты обсчётов, когда это же слово снова нужно будет отрисовать - В Android P ускорили использование simple break strategy вместе с normal или full hyphenation frequency - в детали углубляться не буду, подробности можно найти в видео - Если с сервака, например, нам приходит строчка, в которой намешано несколько языков, и мы знаем, где какой язык используется, то для правильного переноса слов/строк текста нужно использовать LocaleSpan - Span делятся на Paragraph spans (применяются на параграф, очевидно) и Character spans (применяются посимвольно, тоже очевидно). В свою очередь Character spans делятся на Appearance affecting (после применения нужно сделать redraw) и Metric affecting (после применения нужно сделать и remeasure, и redraw). Про написание своих Span в докладе тоже есть кусок, поэтому посмотрите, если нужно - У нас есть три класса: SpannedString (нельзя mutable text, нельзя mutable markup), SpannableString (нельзя mutable text, можно mutable markup) и SpannableStringBuilder (можно mutable text, можно mutable markup). В докладе показали сравнение производительности SpannableString и SpannableStringBuilder (они по-разному устроены внутри: один на массиве, второй на деревьях), результаты следующие: до 250 Span они ведут себя одинаково, дальше SpannableStringBuilder выигрывает. Ну, вы поняли, что использовать :) - Ещё я увидел интересную фишку с <annotaion/> тэгом внутри strings.xml. Допустим, у вас есть какая-то строка, переведённая на несколько языков. Вам нужно применить какой-то Span на определённое слово в этой строке. Но в одном языке это слово стоит в одном месте, а в другом языке - в другом. Вот ровно эту проблему решает <annotation/> тэг. Если такая задача перед вами стоит - сходите посмотрите. - Если нужно отрисовать какой-то очень длинный текст, не нужно его целиком запихивать в TextView. Разбейте на параграфы и используйте RecyclerView. - Ну и новая фишка в Android P - Magnifier. Это такая экранная лупа, которая поможет с выделением текста. Для TextView и EditText она будет работать из коробки, но и к своим custom View её можно прикрутить. За сим откланиваюсь. #text #span #textview #talk https://youtu.be/x-FcOX6ErdI

Доклад про новое в Android Support Library. - RecyclerView Selection Library - штука, помогающая реализовать selection над списком. Умеет в selection жесты как в Google Photos, что очень даже неплохо. Хотя, это и не очень-то новость, вроде бы про неё я уже давно что-то слышал - ListAdapter - какая-то странная поделка, упрощающая использование DiffUtil в меняющихся списках, но, судя по коду, который показали, она не то чтобы сильно сокращает код, который придётся написать + ограничивает ваш Adapter на один List, а этого не всегда достаточно - androidx.webkit - позволяет использовать WebView, обновляемый через Play Store, на старых API - CustomTab переезжает в androidx.browser + появляется возможность воткнуться в контекстное меню вашей CustomTab и добавить своё действие - HeifWriter - позволяет эффективно записать YUV byte buffers, Surface и Bitmap в файл, но пока только на API 28+. Обещают добавить backport - Material components: * Обновили TextInputLayout - теперь он с рамкой и вроде бы умеет добавлять кнопку “Очистить” * Button теперь можно по-разному закруглять и добавлять в них иконки * BottomAppBar - по сути тот же AppBar, только снизу #supportlib #view #material #talk https://youtu.be/jdKUm8tGogw

Мы тут недавно вспомнили, что Google обещали выложить исходники Architecture Components, но как-то всё это дело прошло мимо нас и мы их не видели. Так вот, они всё-таки есть, может и вам пригодится. - Lifecycle, LifecycleOwner, LifecycleObserver и прочее разное: https://android.googlesource.com/platform/frameworks/support/+/master/lifecycle/common/src/main/java/android/arch/lifecycle - ViewModel, LiveData и т.п.: https://android.googlesource.com/platform/frameworks/support/+/master/lifecycle/extensions/src/main/java/android/arch/lifecycle - Paging: https://android.googlesource.com/platform/frameworks/support/+/master/paging/common/src/main/java/android/arch/paging - Room: https://android.googlesource.com/platform/frameworks/support/+/master/room/common/src/main/java/android/arch/persistence/room #source #architecture #components

Статья про разницу между разными подходами к IO: blocking, non-blocking, multiplexed и async. #io #multiplexed #async https://www.rubberducking.com/2018/05/the-various-kinds-of-io-blocking-non.html

Так, а если кто-то тут по битовым операциям хочет угореть, то @kenrube прислал ссылку на ещё более обширный сборник. #hack #bit http://graphics.stanford.edu/~seander/bithacks.html

Пачка хаков при работе с числами на уровне битов (сдвиги, включить-выключить битик и всё такое прочее). Статья классная, жалко только, что расписано всё в отрыве от применения. А ведь запекание состояния компонента (какого-нибудь View, например), которому нужна куча bool-флагов, в одно чиселко в определённых случаях может резко упростить и сократить код. #hack #bit http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/

Статья-инструкция к решению задач на dynamic programming и memoization. Интересно, посмотрите. #algorithm #dynamicprogramming #memoization http://blog.refdash.com/dynamic-programming-tutorial-example/

Нашёл шпаргалку (уверен, не я один постоянно это забываю) про `FontMetrics`. И да, как всегда Android Framework во всей красе
Нашёл шпаргалку (уверен, не я один постоянно это забываю) про `FontMetrics`. И да, как всегда Android Framework во всей красе - baseline считай сам :) #cheatsheet #font #text

Доклад, в котором по шагам проходится, как работают штуки типа ProGuard и R8, как к ним пишутся keep-правила и что делать, когда после включения minifyEnabled true всё сломалось. В целом, не советую тратить время, если всё это уже знаешь. #proguard #r8 #minification https://youtu.be/x9T5EYE-QWQ

Что-то из нового Android: - Battery: * App standby buckets: использование аппа определяет, как и когда он запустить свои jobs * Background restrictions: если апп ведёт себя непорядочно, можно ему к чёртовой матери всё запретить - Background input & privacy: * Микрофон в фоне - нельзя * Камера в фоне - нельзя * Разные сенсоры - вроде бы будут возвращать нулевые значения - можно сказать, тоже нельзя - Background text measurement: * Измерять текст дорого, а делать это приходится много. Прозвучала цифра: 80%-90% всего measure-layout-draw цикла приходится на измерение текста. * Поэтому теперь его можно делать в фоне - PrecomputedText.create(…) - Notifications: * inline images & stickers * можно показать картинки участников чата, например * smart reply UI (а-ля чатбот) * no more “app is using battery” notification - Deprecation policy: * Август 2018 - новые аппы только с targetSdk 26 * Ноябрь 2018 - обновления аппов только с targetSdk 26 * Август 2019 - те, кто используют нативные куски, обязаны давать 64-bit ABI (32-bit опционально) Это только то, за что зацепился глаз. В докладе ещё больше, но тратить время не советовал бы :) #androidp #background #notifications https://youtu.be/eMHsnvhcf78

Из этого выступления я выпишу не очень много поинтов, но доклад интересный, сходите посмотрите. А поинты там такие: - Well Aged Advice: * Prioritise efficiency * Avoid WakeLocks * Don’t use undocumented APIs * Store strings and values as resources * Avoid transmitting/storing contacts & location - Android Fundamentals: * Java language syntax -> Kotlin * UI logic for background processing -> ViewModels * Services for background processing -> Work Manager * Monitor system events with Receivers -> Work Manager * Content Providers for database access -> Room Бонус: в Android P не будет вылезать ANR-диалог, апп просто будет падать. #tips #anr https://youtu.be/eHjHlujp3Tg

Доклад про то, что нового в Android development tools. Отмечу следующее: - Android Studio 3.2: * What’s new window * App bundle generation * Dynamic features support * “Sessions” window in profiler * Energy profiler * AndroidX refactoring - перевести всё на новую версию support-библиотек. Ещё появился Jetifier: “converts legacy Maven artefacts to the new AndroidX namespace and caches those for new builds” * Navigation library и UI для неё - позволяет выстроить всю навигацию одним xml, в том числе умеет добавлять анимации переходам, позволяет удобно прописать deeplinks и даже вроде бы позволяет разрулить передачу аргументов в Activity/Fragment * Layout Editor - появляются всякие кнопки и меню для быстрого добавления sample data в design-режиме * Запустили студию на Pixel Chromebook (no ADB yet - “you can upload straight to the Play Store and hope for the best”) * D8 - new default Dexer & R8 - new default optimizer * Бонус: показали фичу, которая в разработке (сказали, выйдет наверное даже не в 3.3) и использует следующую версию ConstraintLayout - работа с transition анимациями прямо из UI. - Emulator: * Save and replay snapshots * Better camera to support AR apps Ну, как-то так. #studio #emulator #adt https://youtu.be/WxAZk7A7OkM

В видео по ссылке рассказывают, что нового в ART в Android P: 1. Оптимизации компилятора для Kotlin (например, inline null-checks для non-null параметров) 2. CompactDex - штука, которая почикает Dex-файлы прямо на девайсе. Умеет: deduplicate and shrink code items, deduplicate multidex data, incorporate profile based Dex layout optimization (сложить методы, которые дёргаются часто или на старте в одно место в памяти) 3. На Nougat появились code profiles - во время выполнения аппа проверяется, какой код и когда выполняется и применяются соответствующие оптимизации. На Android P пошли дальше: появляется cloud profiles - данные о выполнении вашего кода загружаются в облако и оттуда прилетают другим юзерам. То есть если на Nougat чем чаще апп использовался, тем лучше работал, то на Android P ребята из Google хотят добиться оптимальной производительности сразу после установки, как раз благодаря cloud profiles. А теперь гениальная идея из их доклада: берём 1%-2% юзеров из alpha и beta каналов, они используют апп, а потом на всех юзеров уже раскатывается апп, для которого собраны все profiles и апп сразу работает оптимально. Любо! #kotlin #art #performance #optimize https://youtu.be/Yi9-BqUxsno