Android: отложенное действие

Бывает необходиость выполнить что-то не сразу, а чуть позже в главном(main) потоке для GUI

Этот код поможет(на время разработки)


public class AwesomeActivity extends WorkspaceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
. . .
new Handler() {{
postDelayed(new Runnable() {
@Override
public void run() {
// do something here
hideShutter();
}
}, 1500);
}};
}
}

Read more

Play framework: SELECT .. IN

Наткнулся на очередную невозможность сделать казалось бы простые вещи: выполнить запрос SELECT .. WHERE something In listт.е. выбрать все записи, в которых поле something равно чему то из списка list.

Обойти можно через JPA:


@Entity
@Table(name="ezTroubleCode")
public class TroubleCode extends Model {
@Index(name = "IDXcode")
@Column(nullable=false, length=5)
public String code;

. . .

/**
* Search for codes by codeId
*/
public static List<troublecode> findByCode(List<string> codes) {
Query q = JPA.em().createQuery("SELECT tc FROM TroubleCode tc WHERE code IN (:codes)");
q.setParameter("codes", codes);
return q.getResultList();
}
}
</string></troublecode>

Read more

android: поиск в actionbar

Есть большая проблема: compatibility library не включает ActionBar. К счастью, есть хорошая библиотека, которая реализует экшнбары для младших версиий андроида, а для старших - проксирует вызовы к системным компонентам. Но и тут не всё гладко: сейчас нет полноценной реализации компонента SearchView(UI для строки поиска).

Есть несколько костылей способов как решить эту проблему. На просторах сети я нашёл библиотеку MenuItemSearchAction которая реализует функциональность SearchView для старых андроидов. По сути - эта "библиотека" - всего лищь несколько классов которые оборачивают создают MenuItem и оборачивают EditText, вешая на них обработчики событий. Я несколько переделал этот компонент: теперь он использует встроенный SearchView на современных платформах и создаёт свой, если в системе не нашлось.

Read more

Android: альтернативы java


Java - действительно хороший, простой и стабильный язык. Код, написанный десять лет назад будет не только работать на современных JVM, но должен компилироваться.

Выбор разработчиков андроида в качестве языка программирования java вполне понятен: популярная платформа, managed code, множество готовых библиотек, понятный и простой код.

Read more

Android: background 2.0

Для одного из наших приложений "Говорящие вещи" потребовалось сделать яркий, жизнерадостный, но не отвлекающий фон. Мы перебирали несколько разных вариантов с deviantart (где средний фон - 500кб, OMG), но почему-то смотрелось не очень внушающе(растяжки, отвлекающие цвета).

В интернетах наткнулся на пост товарища @gobozov: Android. Tiled background with diagonal lines, как говорится, inspired by .. :). В котором был пример стильного фона (stripes + полупрозрачный градиент). Выглядит - круто.

В его варианте используется tile background как фон Layout + ImageView с градиентом. Я попытался чуть-чуть упростить и уменьшить количество файлов.

Read more

Android: живые зимние обои 2012

Зима вроде на улице. Как и полагается все - от муниципальных органов до ларьков создают зимнее/новогоднее настроение своими вывесками, акциями, украшениями и рекламой.

Решил поучаствовать  в этом безумии - сделал зимние обои для андроида. Была цель - быстро и просто сделать вброс и посмотреть как на него отреагируют юзеры.

Так и получилось - первый релиз сделал за полтора дня (порядка 8 часов ушло от начала разработки, прямо в маршрутке, до паблишинга в маркете). Потом ещё ушло порядка 8 часов на всякие улучшательства.

Read more

Java: контролл корректировки времени

В середине 2011 года вышел закон, в котором отменяется певод времени на летнее. #СПАСИБОСАМИЗНАЕТЕЗАЭТО.

Вот только кто софту скажет что всё поменялось? В частности в джаве есть косяки Оракл не торопится выпускать апдейт под венду, который исправляет время.
Напомню, что даже если в венде поставленны патчи и оно показывается правильное время, джава будет по-прежнему показывать GMT+3 (вместо GMT+4), т.е. на час раньше.

Read more

Ресурсы в SWING приложении

В swing-приложениях при работе с встроенными ресурсами (такие как изображения) есть разница, откуда эти ресурсы подцепляются в зависимости от условий запуска. Это может быть запуск из IDE а может запуск JAR файла

Read more

brainfuck: java-компилятор

branfuck - это такой простейший язык программирования который реализует некую "полную машину Тьюринга", подробнее в википедии, там же и подробное описание команд. Кому лень - пример, выводящий традиционное Hello world:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.

Для тех, кто видит в первый раз это кажется диким. Ну разе lisp не страшнее?)

Зачем??!

Read more

Android: информация о устройстве

Иногда требуется получить общую информацию о мобильном устройстве программно: Какой производитель? Название устройства? Версия ОС?

Может быть полезно как для статистики использования, так и для, например, формирования уникального идентификатора устройства (очевидно, что не все поля для этого подойдут)

Read more