HoloEverywhere v1.5


    Вчера, немного поматерясь, мной таки был сделан релиз 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


    Репозиторий проекта
    Поделиться публикацией

    Похожие публикации

    Комментарии 17

      0
      Отличная работа. А как установить, есть мануал где-нибудь?
        +2
        github.com/ChristopheVersieux/HoloEverywhere/wiki/Maven

        А если не maven… Долго, нудо, ну и я не хочу разбираться в этом. Но по идее — просто правильно подключить модули.
          +1
          Если не maven, еще проще ;)
          В Eclipse делаем import проекта, а в нашем проекте подключаем через Properties -> Android -> Library
            0
            Было бы ещё очень круто, если бы вы рассказали, как это дело подключить в IDEA 12. Я уж и так, и сяк пробовал…
              +1
              Import from eclipse… :-) А если серьезно, то в IDEA отличная поддержка maven. Но если вдруг ваш проект не maven, то просто включите maven плагин зайдите в Open module settings в вкладку Libraries и нажмите "+", а в выпадющем меню «From Maven», там введите «org.holoeverywhere:library:1.5.0» и нажмите поиск, дождитесь окончания, отметьте по желанию «with sources/javadoc» и нажмите OK. Должно спросить еще пару вопросов, записать в какую-то папку джарники и вуаля джарник с депендесес в проекте. У меня получилось.
                0
                Oh wow, всё так просто. А я-то пытался из исходников собрать и подключить вручную. Спасибо!
                  0
                  Вы не могли бы добавить эту информацию на вики страницу проекта, на страницу Maven?
                0
                Еще можно Disable Maven nature в свойствах проекта и pom удалить, чтобы не мазолил глаза
            0
            Спасибо вам за такой колоссальный труд.
              0
              Огромное спасибо. Очень важное и нужное дело
                0
                Очень здорово! Спасибо!

                Пысы: что означает логотип библиотеки?) или придуман просто в творческом порыве?
                  0
                  Считайте, что UI вне рамках времени...)
                  –3
                  Зашел, чтобы увидеть здесь богиню
                  image
                    0
                    Крутая библиотека, без нее сложно представить как бы я реализовывал Holo тему не на 4.x версиях Android) не закидывайте проект:)

                    почему нельзя вести всю разработку в одной ветке dev, а для релизов другая release, чтобы можно было слить исходники последней стабильной версии? или, как написали выше, надо через maven делать? почему на сайте проекта нет информации о том, какая последняя стабильная версия актуальна на данный момент и какие изменения произошли по сравнению с предыдущей?))
                      0
                      > почему нельзя вести всю разработку в одной ветке dev, а для релизов другая release
                      Раньше так и было: для релизов только мастер, разработка идет в dev.
                      Сейчас разработка идет в master, для версий есть теги holoeverywhere-.x.x.x. Есть тег stable, который ссылается на последнюю стабильную версию.
                      В ридми так и клонируется репа: git clone --branch stable git://github.com/ChristopheVersieux/HoloEverywhere.git HoloEverywhere
                      > или, как написали выше, надо через maven делать?
                      Система сборки и контроля версий — вещи разные.
                      > почему на сайте проекта нет информации о том, какая последняя стабильная версия актуальна на данный момент и какие изменения произошли по сравнению с предыдущей?))
                      Сайт в зачаточном состоянии.
                        0
                        Спасибо за фикс с меню )))
                          0
                          #334? Да всегда пожалуйста.
                          Правда, я в таких случаях всегда показываю, где находится кнопка donate, или хотя-бы star...

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое