Шпаргалка по material-интерполяторам

В гайдах Material Design по анимациям первым же пунктом прописано требование к «authentic motion», т.е. к живому, не-механистичному движению объектов на экране. В частности просят «natural acceleration and deceleration»; в общем, речь в первую очередь идёт об интерполяторах.

В support-библиотеке уже содержится три самых необходимых класса: FastOutLinearInInterpolator, FastOutSlowInInterpolator и LinearOutSlowInInterpolator. Однако я до сих пор регулярно в них путаюсь, а лаконичные описания из документации…

Uses a lookup table for the Bezier curve from (0,0) to (1,1) with control points: P0 (0, 0) P1 (0.4, 0) P2 (1.0, 1.0) P3 (1.0, 1.0)

…навевают некоторое уныние и стойкое ощущение себя гуманитарием.

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

Читать далее

isUserAGoat(): шутка Google

Среди встроенных в Android SDK инструментов автоматизированного тестирования есть небольшая утилитка monkey. Это своего рода симулятор бешеной обезьяны, которой попал в лапы смартфон с запущенным приложением: утилита генерирует мощный поток случайных тычков, жестов и нажатий кнопок. Если приложение в таком режиме не рухнуло и не зависло, то сей факт уже говорит о некотором качестве.

Боевой Бибизян
Что ломать изволите?

При этом самому тестируемому приложению оставлена возможность определить запуск monkey с целью подтасовать результаты. Шутка: с целью предотвратить излишние последствия при таком тестировании, разумеется. Скажем, файловый менеджер может перед удалением каталога проверить: а человек ли требует выполнить эту операцию? Если до удаления случайно дотыкалась автоматическая обезьяна, то лучше этого всё же не делать. Отвечает за проверку статический метод isUserAMonkey() класса ActivityManager, но документирован он плохо.

Читать далее

To log, or not to log: включаем и отключаем LogCat для debug-версии

Сразу скажу, эта заметка — сборник простых и полезных рецептов, ничего более. Пожалуй, стоит даже отнести её к советам для новичков, потому что бывалые разработчики давно уже сделали для себя нечто подобное. Речь идёт о возможности автоматически отключать лишний вывод в LogCat для release-версии приложения. Или, выражаясь иначе, о возможности добавить больше отладочного вывода в debug-режиме, да ещё и получить поддержку со стороны IDE.

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

Android и его LogCat
Честно утянутая лучшая картинка по запросу LogCat

Решение состоит из двух подзадач: первая — определение наличия отладочного режима в приложении, вторая — написание вспомогательного логгера и добавление его поддержки в IDE.

Читать далее

Material Drawer: новые материалы от Google

«Всё течёт, всё меняется» — говорил когда-то Гераклит Эфесский. И если течь в наших программах вообще-то ничего не должно, то уж меняться им в любом случае приходится постоянно. Правила нашего айтишного зазеркалья никто не отменял: «нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее».

Казалось бы, прошло совсем не так уж много времени с момента написания прошлой заметки про DrawerLayout, но Google уже успел выпустить новые требования к оформлению приложений, известные как Material Design. Дизайнерам и пользователям Материал явно пришёлся по вкусу, а потому придётся ему соответствовать.

SlidingDrawer в Material на примере Gmail
SlidingDrawer в Material на примере Gmail

Собственно, на скриншоте можно увидеть все новые требования к drawer-ам:

  1. Панель должна открываться поверх action bar (а не под ним, как ранее)
  2. Панель должна «подъезжать» под status bar на Lollipop и выше.

Забегая вперёд — то и другое реализуется без особых сложностей, всё уже готово, но… как водится, некоторые хитрости придётся применить. Итак:

Читать далее

Talkback на custom view: заставляем Android читать что угодно

Android Talkback свалился на меня неожиданно. Сказал бы даже — я совершенно внезапно узнал о его существовании.

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

Одно движение — и Talkback включится
Одно движение — и Talkback включится

Откровенно говоря, слово «Talkback» я узнал только из багтрекера, читая задачу «срочно починить!». Потому что если человек может видеть хотя бы в очках, то никогда не включит эту функцию и даже не задумается о ней. Talkback — инструмент Android Accessibility, средство для чтения с экрана, позволяющее тыкать пальцами в самом прямом смысле вслепую. Механический голос вполне нормально зачитывает текст со встроенных в систему контролов (Button, TextView, WebView и т.д.), но вполне естественно, что полностью кастомный View ему представляется чёрной дырой.

Читать далее

Glass is half empty: сырые очки

Очки Google Glass как-то потихоньку исчезают из новостных лент и горячих тем обсуждения.

В общем-то в этом нет ничего удивительного: перед нами предстаёт очень дорогой продукт, который непонятен большинству потенциальной аудитории, равно как не обещает решить какую-либо проблему. За что предполагается отдать 1500$, или же вообще 75-90 килорублей, если брать у наших барыг? Покупатели продукции Google — это же не сектанты Apple в день выхода нового айфона, мало кто из них пойдёт на подобные бессмысленные траты; да и сама Корпорация Добра теперь с упоением играет в повседневные наручные часы, дешёвые смарты и хромбуки, позабыв практически обо всём остальном. Как итог — умное гуглоочко породило мем «okay Glass» и скрылось в тень.

Скрылось, однако не умерло. И я, по случаю недавнего выхода обновления XE21, поставил эксперимент с «боевым» использованием Glass, в режиме «практически не снимая».

Себяшка в салонном зеркале
Себяшка в салонном зеркале

Результаты получились неоднозначные: вроде бы и есть удобные моменты в этом девайсе, а вроде бы и очень-очень сыро. Впрочем, обо всём по порядку.

Читать далее

Следствие сопрут колобки: почему Google Play всё-таки помойка

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

Как, и больше ничего не покажут?!
Как, и больше ничего не будет?!

Обломно это было до невероятности, и я даже долго сомневался в существовании третьей и четвёртой серии. Но как-то раз их всё-таки показали (видимо, по недосмотру), и я до сих пор помню этот момент приобщения к тайному знанию — окончанию истории!

Затем Колобки как-то само собой переименовались в братьев Пилотов, город Энск раскрылся как Бердичев, а по мотивам мультфильма вышел квест-паззл «Братья Пилоты: по следам полосатого слона», который я с великим удовольствием проходил несколько раз (даже диск у меня был вроде как лицензионным, что для тех времён удивительно). И когда этот самый квест обнаружился в Android-приложениях на Google Play, я без раздумий потратил на него 69 рублей (прописью: шестьдесят девять) и с радостью погонялся за иностранцем с табуреткой ещё раз. Ну а после зашёл на страницу приложения — поставить пятёрку.

Далее настроение скатывалось стремительным домкратом: я с ужасом читал оставленные нашими людьми комментарии.

Читать далее

Is the Glass half full?

Несколько дней назад разжился по работе волшебным прибором от Google. Зовут девайсик нехитро — Glass, т.е. Очки, однако местная интеллигенция немедленно перекрестила его в единственном числе — ведь глаз-то задействован только один!

Google Glass, все оглядываются
Google Glass, все оглядываются

Но эти шуточки будут понятны только у нас, а на исторической родине девайса всё больше каламбурят по теме стаканов (которые тоже glasses), однако самой сути назревшего вопроса это не меняет — наполовину ли полон этот стакан? Наполовину ли пуст? И стоит ли вообще натягивать это оч… гусары, молчать!

Читать далее

Пользуйтесь смартфоном как смартфоном

Смартфоны уже настолько давно и настолько прочно вошли в нашу жизнь, и стали до такой степени повседневны, что даже само слово «смартфон» начинает постепенно исчезать. Забавно вспомнить: ведь ещё недавно такое понятие было очень модным, и производители старались нацепить гордую приставку «смарт» на любую звонилку с парочкой дополнительных функций… А сегодня самые современные модели, которые в те времена не приснились бы даже футурологам, всё чаще зовут скромно — просто телефонами. Ну, такой вот он есть — современный телефон.

Современный телефон, без намёков
Современный телефон, без намёков

И тем удивительнее, что множество обладателей подобных аппаратов, даже весьма активных их пользователей, не вполне понимают самую суть этих устройств, всю изначальную идею. Для одних «смартфон» — это когда тыкаешь пальцем не физические, а нарисованные кнопочки. Для других — это телефон, на котором ещё инстаграм и много игр. Для третьих это вообще лишь дорогой элемент статуса, примерно как в анекдоте про дизайнерские галстуки: «За пять тысяч взял?! Ты лох что ли?! У меня точно такой же за пятнадцать!». В общем, с немалым изумлением я выяснил, что не-технарям далеко не всегда доступна простая истина:

Смартфон — это не тачскрин и Angry Birds, смартфон — это «облака» и синхронизация данных!

Потому я и постараюсь в доступной форме эту мысль разжевать.

Читать далее

Пенал и глобус

На днях рылся в старых фотографиях, и где-то в недрах родительских фотоальбомов нашёл фотографию себя-первоклассника. Вот она, собственно:

Серьёзный ребёнок служит фоном серьёзным вещам
Серьёзный ребёнок служит фоном серьёзным вещам

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

Это я в первом классе. Стало быть, на фотографии идёт 1991 год. Место действия — пока ещё номинально СССР, но уже в стадии поздней агонии, фактически не существующий. Детям ещё рассказывали про колхозы и совхозы, но уже вяло, совершенно без огонька; школьная форма ещё была обязательна, однако самые дерзкие на неё подзабивали. Но фотографию, разумеется, делали добротно, чтоб можно было не краснея показать родственникам: при параде, и в торжественных декорациях: с букварём, с глобусом, и (что куда важнее) с пеналом.

Читать далее