Pull to refresh
13
0
Юрий Кучанов @kuchanov

Разработчик под Android

Send message

Игра с «материальными» цветами стала ещё проще

Reading time2 min
Views18K


Не так давно вышла пятая по счёту версия Android, к которой разработчики системы подошли весьма кардинально. Было обновлено и добавлено множество функционала и API. Но для пользователей и разработчиков релиз всё таки наиболее отличился своим редизайном. Дизайнеры из Google быстро покорили сердца пользователей новым Material design.
Подробности
Total votes 27: ↑27 and ↓0+27
Comments9

Как мы увеличили отзывчивость приложения

Reading time3 min
Views20K


Почти любое современное приложение не обходится без загрузки картинок из сети и мы, Surfingbird, не исключение. Однако, нельзя просто загружать картинки последовательно, потому что, если пользователь перемотает пару экранов, ему придётся ждать пока загрузятся предыдущие изображения, которые уже и не нужны.
Поэтому, для увеличения отзывчивости приложения и снижения времени ожидания пользователя, мы применили несколько приёмов, о которых и хотим сейчас рассказать.
Читать дальше →
Total votes 41: ↑37 and ↓4+33
Comments9

Используем стандартные элементы ListFragment по назначению

Reading time3 min
Views18K
В одном из проектов столкнулся с тем, что в приложении нужно было отображать списки результатов для различных запросов (поиск по словам, датам, тегам и т.п.). Так как списки повторялись в разных Activity, самым очевидным решением было использовать фрагменты, а конкретно создать свой класс ListFragment и повторно использовать его в проекте.

image

ListFragment как раз предназначен для отображения различных списков и примечателен тем, что имеет свои поля и методы для работы со списком, а также XML-разметку с минимальным набором представлений. Благодаря всему этому, мы можем даже не создавать свою XML-разметку для фрагмента, используя стандартную.

Прежде, чем начать работать с ListFragment, давайте немного изучим, что же находится внутри?
Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments13

Мобильная игра на Unity. Первый блин…

Reading time4 min
Views59K
image

После завершения создания игры-головоломки на Unity и выпуска ее на Google Play и AppStore, появилось желание поделиться опытом и впечатлениями. И получить конструктивные замечания и предложения, если таковые возникнут

Читать дальше →
Total votes 33: ↑28 and ↓5+23
Comments28

Как мы учили кнопку плавать

Reading time4 min
Views17K
Сразу, наверное, стоит предупредить, что мы сделали плавающую кнопку немножко по-своему и собственно до релиза библиотеки, реализующей материальный дизайн как таковой. Но обо всем по порядку.

В нашей концепции (приложений, сайта surfingbird.ru) активно используется такое понятие как «сёрф». Сервис генерирует для пользователя набор релевантных его интересам статей и переход к следующей, рекомендуемой статье мы называем «сёрфом». После очередного редизайна мы кнопку сёрф потеряли (раньше она была сверху, в акшенбаре, и до неё было не очень удобно тянуться), чем пользователи были очень возмущены. После просмотра ролика с превью материального дизайна мы загорелись идеей реализовать нечто подобное в приложении.

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

image
Читать дальше →
Total votes 21: ↑15 and ↓6+9
Comments14

Улучшаем мобильные сайты с Google Developers по-русски

Reading time2 min
Views23K
Привет, Хабр!

В середине ноября мы рассказывали, что Google станет помечать в результатах поиска страницы, оптимизированные для смартфонов и планшетов. В результатах нашего поиска на русском языке эти пометки можно увидеть, начиная с этой недели.

В сети могут попадаться сайты, которые неудобно, а иногда и просто невозможно просмотреть на мобильном устройстве из-за отсутствия соответствующей оптимизации. Чтобы помочь владельцам сайтов избежать недовольства пользователей при просмотре их ресурсов в Интернете, мы подготовили руководство на русском языке с рекомендациями по созданию веб-сайтов, оптимизированных для мобильных.


О том, как улучшить свой сайт - под катом
Total votes 17: ↑13 and ↓4+9
Comments9

ORM в Android c помощью ORMLite

Reading time7 min
Views72K
На данный момент для платформы Android существует несколько решений, позволяющих реализовать ORM-подход для работы с базой данных, но основных два. Это ORMLite и GreenDAO.

Для новичков стоит сделать отступление и рассказать что такое ORM вообще. ORM — object-ralational mapping. Объектно-реляционное отображение означает, что программисту гораздо удобнее оперировать с объектами, которые он использует в своём приложении, нежели чем с таблицами, в которых хранятся данные в реляционных базах данных. Для связи реляционных СУБД с объектной моделью приложения используются ORM-технологии. Так для решения задач объектно-реляционного отображения в Android используют один из сторонних фреймворков. GreenDAO и ORMLite — являются библиотеками с открытым кодом.
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments19

Android AutoCompleteTextView с подсказками из веб-сервиса

Reading time7 min
Views35K
Для одного из своих Android-приложений Book Tracker я реализовал кастомный AutoCompleteTextView с подсказками для названий книг, которые динамически подгружаются с Google Books по мере ввода названия книги.

Задача перед компонентом стояла следующая:
  • Загрузка данных должна осуществляться в отдельном потоке, чтобы не блокировать UI-поток;
  • Загрузка подсказок должна начинаться только, если пользователь приостанавливает набор (чтобы предотвратить отправку множества запросов к серверу после каждого введенного символа);
  • Подсказки должны загружаться, если пользователь ввел строку некоторой минимальной длины (нет смысла начинать загрузку данных для строки из двух или трех символов);
  • При запросе к серверу в правой части поля должен быть показан анимированный прогресс, чтобы информировать пользователя о загрузке.

Финальный результат:



Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments9

VoiceFabric: технология синтеза речи из облака

Reading time4 min
Views21K


Сегодня поговорим про перспективы и возможности облачного сервиса VoiceFabric для разработчиков и пользователей. Сервис озвучивает любую текстовую информацию синтезированным голосом в режиме реального времени. Под катом мы подробно расскажем о нашем синтезе, сценариях его использования (стандартных и не очень) и как подключить его к своим проектам, а так же о том, чем он уникален.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments20

Интерактивное голосовое редактирование текста с помощью новых речевых технологий от Яндекса

Reading time11 min
Views96K
Сегодня наше приложение Диктовка для интерактивного написания и редактирования текста голосом появилось в AppStore и Google Play. Его главная задача — продемонстрировать часть новых возможностей комплекса речевых технологий Яндекса. Именно о том, чем интересны и уникальны наши технологии распознавания и синтеза речи, я хочу рассказать в этом посте.



Пара слов, чтобы вы понимали, о чём пойдёт речь. Яндекс уже давно предоставляет бесплатное мобильное API, которое можно использовать, например, для распознавания адресов и голосовых запросов к поиску. За этот год мы смогли довести его качество почти до того же уровня, на котором такие запросы и реплики понимают сами люди. И теперь мы делаем следующий шаг — модель для распознавания свободной речи на любую тему.

Кроме этого, наш синтез речи поддерживает эмоции в голосе. И, насколько нам известно, это пока первый коммерчески доступный синтез речи с такой возможностью.

Обо всём этом, а также о некоторых других возможностях SpeechKit: об активации голосом, автоматической расстановке пунктуационных знаков и распознавании смысловых объектов в тексте — читайте ниже.
Читать дальше →
Total votes 116: ↑113 and ↓3+110
Comments104

Документ с информацией о мобильных издателях и возможностях самиздата

Reading time2 min
Views7.7K

О чем публикация


Хочу рассказать об одном документе. Его упоминания уже встречались на Хабре. Сразу даю ссылку — документ.

История создания


В марте 2013 года у меня был прототип одной мобильной игры, которую хотелось показать издателям. Беглый поиск показал, что если какие-то списки издателей найти еще можно, то вот реальных отзывов о сотрудничестве — кот наплакал. Ну, раз никто еще такого не сделал, то почему бы не я? С такими мыслями я начал стучаться всем знакомым разработчикам, кто работал с тем или иным издателем, с просьбой прокомментировать сотрудничество. Многие соглашались только на анонимных условиях (оно и понятно, ведь контракты были еще в самом разгаре). Собрав первые несколько отзывов, было решено открыть документ всем желающим на редактирование и попытаться его популяризировать. Это принесло определенные успехи, сейчас в документе отзывы о сотрудничестве почти с 50 издателями.
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments7

Модификация исходного кода android-приложения с использованием apk-файла

Reading time4 min
Views93K
Так уж получилось, что приложение для чтения комиксов и манги, которое я использую на своем android-смартфоне, после обновления стало показывать рекламу в конце каждой главы комикса. Данное приложение пару лет назад было доступно на Google Play (платная версия которого и была мной куплена), но было удалено в силу «нарушения авторских прав», после чего ушло в подполье и стало распространятся через сайт разработчика. Увы, достойных альтернатив этому приложению на android и iOS я не нашел, но и смотреть рекламу особо не было желания, тем более я уже покупал версию без рекламы. Сам разработчик почему-то не сделал возможности отключить ее, а на просьбы добавить такую возможность не отозвался. Поэтому пришлось искать альтернативные методы ее отключения. Первое, что пришло в голову, это то, что android-приложения пишутся на java, а значит есть вероятность, что автор не обфусцировал свое приложение и его можно попытаться декомпилировать. Немного подумав, я приступил к работе.
Читать дальше →
Total votes 35: ↑23 and ↓12+11
Comments2

Чистый код с Google Guava

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

StringBuilder sb = new StringBuilder();
for (Iterator<String> i = debtors.iterator(); i.hasNext();) {
  if (sb.length() != 0) {
    sb.append(", ");
  }
  sb.append(i.next());
}
out.println("Debtors: " + sb.toString());

Понятно, что этот код мог бы быть более прямолинейным, например, в Java 8 можно написать так:

out.println("Debtors: " + String.join(", ", debtors));

Вот так сразу гораздо понятнее, что происходит. Google Guava – это набор open-source библиотек для Java, помогающий избавиться от подобных часто встречающихся шаблонов кода. Поскольку Guava появилась задолго до Java 8, в Guava тоже есть способ конкатенации строк: Joiner.on(", ").join(debtors).
Рассмотрим часто встречаемые шаблоны кода
Total votes 41: ↑36 and ↓5+31
Comments20

Custom layouts. Part 2. CellLayout

Reading time10 min
Views23K
И снова здравствуйте, коллеги.

И снова я пожаловал к вам с топиком кастомной разметки. На этот раз, я задумал сделать некую “ячейчатую” разметку.
Смысл прост: вся площадь контейнера делится на сетку из квадратных ячеек одинакового размера, и каждый потомок может занять произвольные клетки на этой сетке. Используя подобную разметку можно составлять красивую мозаику из кнопок или картинок, не прибегая к многочисленным вложенным layout’ам. И, поскольку, это специально заточенный для этих целей layout, он будет работать очень шустро.


Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments16

Защита личных фотоснимков на телефонах Android

Reading time3 min
Views51K


Как сделать личные фотографии на своем телефоне недоступными для посторонних? Как настроить телефон таким образом, чтобы при фотографировании конфиденциальные снимки автоматически записывались в криптоконтейнер? И как сохранить за собой возможность быстрого и удобного доступа к ним?
Читать дальше →
Total votes 30: ↑17 and ↓13+4
Comments37

Анимации c помощью Transitions API

Reading time11 min
Views70K
Привет!

На хабре ещё не была освещена тема Transitions API для анимаций, которые появились в Android начиная с 4.4 (KitKat) и продолжили свое развитие в 5.0 (Lollipop). В своей статье я расскажу о том, как упростить работу с анимациями с их использованием и как применять их на любом устройстве с версией Android 4.0 и выше.


Читать дальше →
Total votes 34: ↑31 and ↓3+28
Comments20

Что такое утечки памяти в android, как проверить программу на их отсутствие и как предотвратить их появление

Reading time14 min
Views87K
В этой статье для начинающих android-разработчиков я постараюсь рассказать о том, что такое «утечки памяти» в android, почему о них стоит думать на современных устройствах, выделяющих по 192МБ на приложение, как быстро найти и устранить эти утечки в малознакомом приложении и на что нужно обращать особое внимание при разработке любого приложения.


Конечная цель этой статьи — ответ на простой вопрос:
Куда нажать, чтобы узнать, какую строчку в приложении поправить?

Читать дальше →
Total votes 65: ↑64 and ↓1+63
Comments36

Делаем собственную индикацию о входящем звонке

Reading time4 min
Views46K
После последнего поста о нашем Android-приложении у некоторых читателей статьи возник вопрос, как именно показать собственную информационную плашку во время звонка? Ну что же, сегодня мы ответим на этот вопрос.
Пст, хотите немного java-кода?
Total votes 35: ↑27 and ↓8+19
Comments16

SpeechMarkup API — превращаем речь в данные

Reading time8 min
Views18K

В статье пойдет речь о том, как из любого запроса на естественном языке получить реальные данные, с которыми может работать ваше приложение. А именно, о REST API сервиса SpeechMarkup, который преобразует обычную строчку текста в JSON со всеми найденными смысловыми сущностями с конкретными данными в каждой из них.

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

В статье я расскажу, для чего можно использовать данный API и приведу небольшой пример работающего приложения.

Читать дальше →
Total votes 31: ↑28 and ↓3+25
Comments49

Общение между потоками через ResultReceiver

Reading time4 min
Views19K
Как известно каждому Android-разработчику Android SDK, предоставляет несколько способов заставить опреденный кусок кода выполнятся в параллельном потоке. Многопоточность это хорошо, но кроме ее организации нужно также наладить канал общения между потоками. Например, между UI-потоком и потоком, в котором выполняются фоновые задачи. В данном коротком эссе хочу осветить один из способов, основанный на применении встроенного класса ResultReceiver.
Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments27

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity