Вышла версия 1.3.2: назревший хотфикс

В Google Play опубликована версия Цитаты Forismatic 1.3.2.

Стыдно признаться, но это всего лишь хотфикс-релиз, которого пришлось ждать с апреля, т.е. ровно полгода.

Че Гевара?
Че Гевара… мда. Роботы тоже умеют шутить на политические темы.

Собственно, список изменений в этом релизе:

Читать далее

Шпаргалка по 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.

Читать далее

4talk: не всем привычная кнопка шаринга

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

Привет, Википедия! Ты, как всегда, в своём репертуаре!
Привет, Википедия! Ты, как всегда, в своём репертуаре!

Причиной закрытия вроде бы называли исчезающе малое количество уникального контента, да и тот — ванильные днявочки школьниц, тонущие в репостах и ссылках на другие блоги. Помню и некую цифру 0.3%: по-моему, число активных блогов, но что бы она ни означала — это в любом случае приговор. Как говорится, помер Максим — да и… речь сейчас не о том. Главное — под здешними постами внезапно образовалась зияющая пустота на месте бывшей кнопки Яндекса.

И вот теперь я нашёл чем же именно её заполнить — новой кнопкой шаринга 4talk!

Читать далее

Версия 1.3: не было бы счастья

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

Но случается и такое, что меняет все планы, заставляя пересмотреть намеченную схему релиза. Как говорится, не было бы счастья, да несчастье помогло.

Вы классик, конечно, Лев Николаевич, но с подобной мудростью так и не релизнешься никогда!
Вы классик, конечно, Лев Николаевич, но с подобной мудростью так и не релизнешься никогда!

Встречайте — Цитаты Forismatic версия 1.3!

Читать далее

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 рублей (прописью: шестьдесят девять) и с радостью погонялся за иностранцем с табуреткой ещё раз. Ну а после зашёл на страницу приложения — поставить пятёрку.

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

Читать далее