HoloEverywhere

в 11:19, , рубрики: holo, holo everywhere, всё равно никто не читает теги, Разработка под android, метки: , ,

Вот признайтесь: читая Android Interface Guidelines, вам не приходила мысль, что это все, конечно, офигенно, но на старые (2.3 <) Андроиды приходиться перелопачивать половину стилей, чтобы смахивало на Holo интерфейс?

Или так: в последнем Андроиде есть ну просто офигенная фича, а вам вот нужно ее использовать?

Самое первое, что приходит на ум: ActionBar и ActionBarSherlock.
ABS — это замечательно, но одним ActionBar не отделаешься. Мы хотим Holo тему, а не только Holo бар, блин.

Эх, такой привлекательный ActionMode на списках чего стоит…

Позвольте представить вам HoloEverywhere — проект, целью которого является портирование Holo стиля, Holo виджетов и других фишек на Android 1.6 и старше.

Screenshot 1Screenshot 2
Screenshot 3Screenshot 4
Screenshot 5Screenshot 6
Screenshot 7Screenshot 8

Все эти скриншоты сделаны на Android 2.1 (минимальная версия Андроида для ABS, но HoloEverywhere работает и на 1.6 с отключением ABS).

Собственно, что уже сделано:

  • Стилизованы многие виджеты, такие как Button, ToggleButton, RadioButton, CheckBox, Spinner, (Multi)AutoCompleteTextView, RatingBar, ProgressBar, SeekBar и другие производные. Так-же есть и портированные: Switch, NumberPicker, CalendarView, DatePicker, TimePicker
  • Портирован AlertDialog, ProgressDialog, стилизован обычный Dialog (к сожалению, внутренности AlertDialog слишком закрыты для простого портирования темы, пришлось тянуть весь его код и создавать несовместимую со стандартным AlertDialog версию)
  • Портирован весь Preference Framework, создан SupportSharedPreferences, который умеет писать различные Set и JSON объекты/массивы (это уже как плюшка :))
  • Небольшой велосипед помощник для переключения тем для Activity
  • Везде используется еще один велосипед свой LayoutInflater, который может инфлейтить ваши вьюхи по короткому имени. Например, раньше вы писали так:
    <com.myapppackage.widgets.MySuperView ... />
    А теперь, если на старте приложения вызвать правильный метод с правильными параметрами, вы можете писать просто MySuperView, и это будет работать везде, где используется HE (в рамках текущего приложения, естественно).
    Из этого так-же следует, что вы можете подменить системные виджеты на свои, абсолютно не меняя разметок, в том числе и системных. Но если виджеты создаются из кода — тут уж ничего не поделаешь.
  • Собственно, ActionMode, про который я упоминал в начале поста. Дополненная реализация ListView, позволяет стартовать ActionMode из ABS

Репозиторий проекта: github.com/ChristopheVersieux/HoloEverywhere
Там-же инструкция по подключению к проекту.

В принципе, пока все, но вы можете помочь проекту — либо самым прямым путем (форкнуть проект, дополнить, отправить pull request), либо открыть feature request с описанием новой фичи, либо отправить письмо мне в личку, в конце-концов :)

Автор: Prototik

Поделиться

* - обязательные к заполнению поля