Вся стилизация должна выносится в стили, а не задаваться в java коде. ViewPageIndicator очень гибко настраивается при помощи стилей. В styles.xml нужно определить свой стиль компонента, унаследованного от Widget.TitlePageIndicator и переопределить те атрибуты, которые необходимо:
В данном примере были изменены цвета текста табов и линии, поддинги. Впринципе, на этом можно остановиться и просто указывать этот стиль для TitlePageIndicator в layout. Но лучше задать этот стиль для всех TitlePageIndicator по всему приложению:
Нашел еще один довольно интересный проект androidannotations. Основной плюс, что используется не рефлексия, а кодогенерация. Но инжектить можно только в Activity, в то время как Aibolit позволяет сделать это в любой объект.
>> чем хуже просто написать в xml файле лайаута «android:onClick=»someMethod""?
Можно, однако android:onClick не будет работать в приложении, прошедшем обфускацию кода. Да и к тому же, Aibolit позволяет повесить лисенера не только на onClick, но и на множество других событий.
>> Человеку, не знакомому с этим фреймворком придется тратить время на понимание сути используемых аннотаций.
Порог вхождения, имхо, минимален.
>> И не становится код более эстетичным с вашими аннотациями
Может быть: )
Провел на Nexus One тот же эксперимент с 35 инъекциями, разница составила порядка 20 мс.
Имхо, зависимость обратная: чем сложнее приложение, тем более оправдано использование такого инструмента, как Aibolit. Чем писать раз за разом
sendButton.setOnClickListener(new OnSendButtonClickListener());
...
private final class OnSendButtonClickListener implements OnClickListener {
@Override
public void onClick(View v) {
// do something usefull
}
}
лучше просто и лаконично объявить обработчик нажатия
Код становится более лаконичным, эстетичным чтоли.
Можно определить свои аннотации, скажем @InjectOnUiThread для метода и реализовать вызов метода в UI треде, что опять же избавит от громоздких вызовов.
«двукратным» — слишком сильно сказано. Во-первых, измерения производились на 35 инъекциях, что довольно много, как правило, необходимо инициализировать намного меньше компонентов, во-вторых, инициализация проводится единожды при вызове Aibolit.doInjections, в-третьих, необходимо считать не «во сколько», а «на сколько» больше (если на запуск вашей активити понадобится 200 мс, то с использованием aibolit — 250 мс, а это уже не «в 2 раза»), в-четвертых, имхо, не стоит экономить на копейках, часто Вы боретесь за миллисекунды ускорения вашего приложения?
adb shell
echo 1 > /sys/kernel/logger/log_main/enable
В данном примере были изменены цвета текста табов и линии, поддинги. Впринципе, на этом можно остановиться и просто указывать этот стиль для TitlePageIndicator в layout. Но лучше задать этот стиль для всех TitlePageIndicator по всему приложению:
Это позволит использовать стиль компонента во всем приложении без лишних телодвижений. Ну и разумеется нужно указать в манифесте тему приложения:
Также можно использовать AlarmManager. Тут пример.
Кстати один из вариантов был
Да
Можно, однако android:onClick не будет работать в приложении, прошедшем обфускацию кода. Да и к тому же, Aibolit позволяет повесить лисенера не только на onClick, но и на множество других событий.
>> Человеку, не знакомому с этим фреймворком придется тратить время на понимание сути используемых аннотаций.
Порог вхождения, имхо, минимален.
>> И не становится код более эстетичным с вашими аннотациями
Может быть: )
Имхо, зависимость обратная: чем сложнее приложение, тем более оправдано использование такого инструмента, как Aibolit. Чем писать раз за разом
лучше просто и лаконично объявить обработчик нажатия
Код становится более лаконичным, эстетичным чтоли.
Можно определить свои аннотации, скажем @InjectOnUiThread для метода и реализовать вызов метода в UI треде, что опять же избавит от громоздких вызовов.