Мы, как правило, в восторге от новых версий Android — IceCream Sandwich, Lollipop и так далее, но, вероятно, нам также следует обратить внимание на то, что происходит с библиотекой поддержки. Только что было объявлено об обновлении десятичной точки, и оно содержит некоторые важные изменения.
Библиотека поддержки Android была представлена для переноса новых функций, представленных с помощью Honeycomb, в более ранние версии Android. Сначала это была его единственная функция, и если вы хотели настроить таргетинг только на Honeycomb или позже, вам не нужно было его использовать. По прошествии времени в библиотеку поддержки добавляется все больше и больше кода, который не вошел в полную ОС. Например, если вы хотите использовать ViewPager и аналогичные компоненты пользовательского интерфейса, вам необходимо использовать библиотеку поддержки, поскольку они не являются частью ОС. Как только вы начнете использовать такие компоненты, как ViewPager, вы обнаружите, что класс Support Fragment работает с ним лучше, чем настоящий. На самом деле, Support Fragment часто называют работающим лучше, чем настоящий.
Медленно, но верно вы должны прийти к выводу, что Android настолько сильно зависит от библиотеки поддержки, что ее следует считать стандартным способом работы. Другими словами, все приложения Android, даже если они ориентированы только на новейшую ОС, должны использовать библиотеку поддержки.
Обратной стороной использования библиотеки поддержки является то, что код включен в ваше приложение, что делает ваше приложение больше. В принципе, библиотека поддержки переключается на ОС, если она находит поддержку используемой вами функции, но на практике часто бывает достаточно различий в поведении, чтобы предположить, что передача не особенно чиста. Проще говоря, даже когда функция доступна, Библиотека поддержки, кажется, делает некоторую работу, чтобы сделать ее «лучше».
В случае последней версии библиотеки поддержки 22.1 мы должны прекратить использовать ActionBarActivity, почти повсеместный класс для реализации Activity, и переключиться на класс AppCompatActivity, который поддерживает новые функции Lollipop — палитру материалов, оттенки виджетов и т. Д. .
Это не просто предложение, так как ActionBarActivity устарела.
Самое странное в этом шаге заключается в том, что AppCompatActivity основан на использовании AppCompatDelegate. Это можно использовать для расширения поддержки AppCompat для любого производного класса Activity путем простого создания экземпляра AppCompatDelegate и последующего использования его методов вместо методов Activity. Например, вместо вызова метода setContentView Activity вы должны вызвать AppCompatDelegate.setContentView.
Также существует новый класс AppCompatDialog, который поддерживает новые темы Lollipop и целый набор виджетов с поддержкой оттенков. Если вы используете подход AppCompat, они автоматически заменяются существующими элементами управления, когда макет раздувается. Например, Button автоматически заменяется на AppCompatButton.
Основную идею вы можете увидеть в следующем видео:
Помимо большого изменения AppCompat, есть улучшения в RecyclerView за счет новой структуры данных SortedList с пакетными изменениями. Класс Palette стал быстрее, Renderscript стал более надежным и быстрым, а библиотека Leanback и образцы были обновлены.
Что удивительно, так это то, что способ, которым большинство из нас программируют приложения для Android, только что изменился, и все это из-за библиотеки поддержки, которая значительно выросла за пределы своего первоначального замысла.