Pull to refresh

HoloEverywhere v1.5

Reading time2 min
Views16K

Вчера, немного поматерясь, мной таки был сделан релиз HoloEverywhere 1.5.

Для тех, кто не в курсе: HoloEverywhere — бекпорт Holo темы с Android 4.1 на 2.1 и выше. Да и не только темы.

Нововведенний достаточно много, краткий список под катом.

  1. Изменена лицензия с MIT license на LGPLv3.
    Нет, вы не должны открывать код приложения при использовании HoloEverywhere.
    Вы должны открыть код библиотеки, только если вы изменили ее
  2. Поддержка вложенных фрагментов неограниченного уровня (в том числе и через xml)
  3. Устранена ошибка в поведении Spinner, когда тот при малой высоте экрана мог не давать прокрутить попап список до конца
  4. Исправлено поведение PreferencePanel на больших экранах
  5. Раз уж заговорили про Preferences — они отделены в отдельный модуль, теперь они не в ядре библиотеки
  6. Ага, модули. Полностью переписана система модулей, хотя логика осталась старой
  7. Официальная поддержка RoboGuice (правда, из-за бага в коде RoboGuice с один велосипедом, смотрите вики)
  8. Мне в конец надоело разбиратся с ключами (keys) в preference framework. Поэтому я добавил поддержку id, как в layout:
    Пример
    <SwitchPreference holo:id="@+id/mypreference" holo:text="Text" />

    Хотя, это было еще в 1.4.2, но рассказать для «непосвященных» решил только сейчас.
  9. Теперь ThemeManager может генерировать для вас собственные флаги, не только встроенные в HoloEverywhere. Этот прием используется в Preference addon для резолва темы для вьюх.
  10. Ну и заодно: .Wallpaper темы и соответсвующий флаг в ThemeManager
  11. Существенно улучшен LayoutInflater, теперь можно не регистрировать каждую вьюху по отдельности, а зарегистрировать весь java-package.
  12. Уменьшен размер элементов списка в PopupMenu (был указан аттрибут не того размера)
  13. Кеширование requestWindowFeature до того момента, как будут подключены все модули к Активити. Сделано для обеспечения обратной совместимости кода
  14. После вызова super.onCreate или ручной инициализации активити посредством Activity#forceInit теперь нельзя подключать дополнительные модули.
  15. Поддержка ExpandableListView
  16. ThemeManager сохраняет instanceState между перезапусками активити. Правда, если вы вручную работаете с savedInstanceState в on(Post)Create, то посмотрите начало метода onCreate в DemoActivity. Иначе работать не будет.
  17. Activity#setTheme теперь может принимать бинарный сет от ThemeManager (что-то типа setTheme(ThemeManager.MIXED | ThemeManager.FULLSCREEN)
  18. Удален аццкий велосипед из ProgressBar, который подменял системные Drawable's на наши. DrawableCompat
  19. Немного улучшен RingtonePreference
  20. Теперь инстанс приложения всегда должен наследовать (или указан напрямую) от org.holoeverywhere.app.Application. Я решил, что проще сделать так, чем доказывать каждому второму, почему у него все время креши и разногласие в данных.
  21. Activity#getSupportMenuInflater() при Mixed теме использует Dark тему, выборку которой он перекладывает на плечи ThemeManager
  22. Fragment.instantiate(Context, String) устаревший, используйте Fragment.instantiate(Class<Fragment>)
  23. Исправлено поведение DialogFragment.findInstance при makeIfNeed = true
  24. ButtonBehavior для AlertDialog — позволяет выключить автоскрытие диалога после нажатия на кнопку в button bar
  25. Исправлен двойной вызов DialogFragment#onCreateDialog
  26. Ну и еще по всякой мелочи


По традиции, скриншоты демо приложения (хотя они и малую долю не показывают):
Cкриншоты
12345678910


Репозиторий проекта
Tags:
Hubs:
+37
Comments17

Articles

Change theme settings