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 ему представляется чёрной дырой.

Читать далее

DrawerLayout: панели справа и слева одновременно

В недавней статье про DrawerLayout была мельком упомянута возможность сделать сразу две выезжающие панели — справа и слева, по образу и подобию клиента Google+ и ряда других приложений.

Правая панель в Google+
Правая панель в Google+

В качестве финальной, третьей части цикла статей (вторая часть была про скрещивание DrawerLayout и ActionBarSherlock) мы попробуем повторить в точности такое же поведение двух разных панелей на экране.

Читать далее

DrawerLayout и ActionBarSherlock: скрестить ужа и ежа

Многие знают, что у проекта ActionBarSherlock некоторое время назад появился официальный конкурент от Google: 18-я версия Android Support Library среди прочих плюшек принесла и долгожданный ActionBar в режиме совместимости.

Похоже, под закат линейки 2.x Корпорация Добра всё-таки признала необходимость хоть какого-то единообразия внешнего вида приложений; раньше официальная позиция фактически сводилась к требованию писать две программы, с action bar-ом и без него. Естественно, Шерлок на фоне такого маразма быстро взлетел в топы используемых библиотек, а его автор, — Jake Wharton, — стал широко известным в узких кругах человеком. Но есть ли смысл отказываться от ActionBarSherlock сейчас?

Нет. Нет смысла.

Читать далее

DrawerLayout: панелька из Гугла

Похоже, Google всё серьёзнее берётся за унификацию внешнего вида и поведения приложений под Android. Нет, серьёзных репрессивных мер пока что не ожидается, но правилами Google Play с недавнего времени жёстко запрещён вносящий путаницу софт (и, хвала богам, AirPush тоже наконец-то!), а раздел Design на Android Developers регулярно пополняется новыми подробными рекомендациями. И не просто теоретическими, а подкреплёнными набором инструментов для разработчиков!

DrawerLayout в действии
DrawerLayout в действии, демо-приложение

Одним из рекомендуемых (и уже знакомых) подходов к построению интерфейса является Navigation Drawer — панелька, выезжающая сбоку по нажатию на action bar или по свайпу с края экрана. Для её реализации готовы все технические средства, и написан официальный мануал разработчика, — но, пожалуй, слишком многословный и при этом не затрагивающий ряда тонкостей. Потому здесь я попробую исправить этот недочёт.

Читать далее

Android: повернуть картинку через XML

Иногда в Android-проекте требуется иметь несколько версий одной и той же картинки, но с поворотом на определённый угол. Скажем, речь может идти об указывающих на что-то стрелках, «хвостиках» контекстных balloon-ов, градиентных границах и тому подобной графике.

Конечно, требования к некоторым картинкам бывают таковы, что дизайнеру приходится вращать их вручную, дорисовывая недостающие детали. Но если кроме угла поворота никаких отличий нет, то плодить много графических ресурсов попросту неразумно: растёт размер .apk, усложняется внесение изменений, да ещё и нарушается принцип «работать должна машина»… в общем, неудивительно что подобные сценарии учтены в Android с самых первых версий, и мы можем со спокойной совестью пользоваться уже готовым инструментом. Например, на скриншоте ниже использовано только одно растровое изображение оранжевой стрелочки — то, что в заголовке. Остальные варианты получены через xml drawables, без единой строчки java-кода!

Поворот одной и той же картинки на разные углы
Поворот одной и той же картинки на разные углы

Читать далее