Пара полезных Android-библиотек

Привет! Сегодня хочу написать о двух полезных библиотеках под Android.

  • ButterKnife. Очень хороший инструмент, позволяющий не городить кучу кода для биндинга объектов, назначения listener’ов и прочей ежедневно создаваемой нечисти. Хорошо помогает в больших проектах.

http://jakewharton.github.io/butterknife/

  • EventBus. Библиотека которая здорово поможет если не охота пилить кучу одних и тех же листенеров. Работает на Subscrib’ах для event’ов.

http://codingjunkie.net/guava-eventbus/

JavaSE и OS X

Привет!

Хочу немного рассказать про взаимоотношения JavaSE и OS X. Это немного провал.

Сперва дам ссылку на официальный Java Development Guide for Mac. Его стоит сперва читать, если кому-то вдруг вздумается (как мне) писать какое-либо Java-приложение, которое планируется запускать на Mac’ах.

Так что просто перечислю яркие места, где можно зафейлить.

  • Надо использовать Swing, а не AWT, как могло бы показаться. То бишь, конечно, первая мысль “но AWT нативен, и OS X должна сразу годно им отрисовывать!”. Нет. Фейл заключается в том, что там хитро устроены многие вещи, от event’ов с мышью и заканчивая иным минимальным размером окна.
  • Swing прекрасно работает с Aqua. Поэтому если хочется использовать true OS X GUI, то нужно использовать Swing. Посмотрите, даже табы и те выглядят прекрасно 
  • Еще важное замечание. Если вы не упаковываете свою программу в .app контейнер, то в верхней строке на экране, где ещё меню можно заметить, что title у вашей программы будет названием класса, а не тем какой вы например, установите в конструкторе.

В общем, Java под OS X тот еще геморрой, а при разработке лучше всего руководствоваться их официальным гайдом. :)

Немного Java, погоды и xml

Привет!

Давайте я сегодня вам покажу как легко и просто можно достать данные о погоде для своего приложения на Java.

Я остановился на worldweatheronline.com API. Он отдает данные в XML, причем эти данные даже в бесплатной версии довольно подробны.

При регистрации аккаунта разработчика нам предоставляется строка с ключом, который позволяет нас идентифицировать. Дальше всё довольно просто:

Для парсинга будем использовать SAXParser

Для хранения данных сделаем класс, куда собственно парсер будет это закидывать

Собственно, всё! :)

О том, как это дело я попытался немного приспособить под AWT и какие баги фичи доселе для себя неизвестные я при этом открыл – в следующем посте :)