Архив версий библиотеки поддержки

На этой странице приведена информация о более ранних версиях пакета библиотеки поддержки. Информацию о последних выпусках библиотеки поддержки можно найти в разделе Последние версии библиотеки поддержки.

Ревизия 26.0.0 Beta 2

(июнь 2017 г.)

Обратите внимание, что версия 26.0.0-beta2 является предварительной. Его API может меняться, и он не обязательно включает функции или исправления ошибок из последних стабильных версий библиотеки поддержки.

Важно! Библиотеки поддержки теперь доступны в репозитории Google Maven. Вам не нужно скачивать репозиторий поддержки из SDK Manager. Подробнее о том, как настроить библиотеку поддержки…

Новые API

Различия в API

Исправлены ошибки.

  • При использовании Android O SDK в TextViews не отображается курсив
  • Исключение нулевого указателя при подключении к MediaBrowserServiceCompat
  • TextInputLayout должен задавать подсказки в onProvideAutofillStructure()
  • Переполнение стека при использовании функции autosize в TextView на устройствах с Android O

Revision 26.0.0 Beta 1

(май 2017 г.)

Обратите внимание, что версия 26.0.0-beta1 является предварительной. Его API может меняться, и он не обязательно включает функции или исправления ошибок из последних стабильных версий библиотеки поддержки.

Важно! Библиотеки поддержки теперь доступны в репозитории Google Maven. Вам не нужно скачивать репозиторий поддержки из SDK Manager. Подробнее о том, как настроить библиотеку поддержки…

Важные изменения

  • FragmentActivity.setSupportMediaController() и FragmentActivity.getSupportMediaController(). Используйте новые статические методы MediaControllerCompat.setMediaController() и MediaControllerCompat.getMediaController().
  • Теперь при выборе уже выбранного элемента BottomNavigationView вызывает onNavigationItemReselected(), а не onNavigationItemSelected().
  • Все экземпляры метода findViewById() теперь возвращают <T extends View> T вместо View. Это изменение имеет следующие последствия:
    • В результате существующий код может иметь неоднозначный тип возвращаемого значения, например если есть и someMethod(View), и someMethod(TextView), которые принимают результат вызова findViewById().
    • При использовании языка оригинала Java 8 для этого требуется явное приведение к типу View, если тип возвращаемого значения не ограничен (например, assertNotNull(findViewById(...)).someViewMethod())).
    • Переопределения методов findViewById(), не являющихся окончательными (например, Activity.findViewById()), должны иметь обновленный возвращаемый тип.

Новые API

  • У классов FragmentManager и Fragment есть метод isStateSaved(), который позволяет узнать, будет ли разрешена транзакция без потери состояния. Это особенно полезно при обработке события onClick() перед выполнением транзакции.
  • Движение по траектории поддерживается в AnimatedVectorDrawableCompat. Анимация по траектории позволяет одному аниматору объектов одновременно изменять два свойства на основе одной траектории (траектория задается как android:pathData в XML-файле аниматора).
  • Анимация на основе физики:
    • Новая функция FlingAnimation, которая позволяет анимировать объекты с начальной скоростью и плавно замедлять их.
    • Подклассы DynamicAnimation поддерживают анимацию пользовательского свойства для любого объекта.
    • Теперь поля SpringAnimation и FlingAnimation могут анимировать значение с плавающей запятой без необходимости связывать его с View или Object.

    Подробнее об анимации "Пружина" и анимации "Бросок"…

  • Поддержка шрифтов в XML:
    • ResourcesCompat.getFont позволяет загружать ресурсы шрифтов, в том числе XML-файлы семейств шрифтов, которые можно использовать с TextView.setTypeface().
    • При использовании AppCompat TextView поддерживает указание ресурса шрифта или семейства шрифтов XML с помощью атрибута XML android:fontFamily.
    • Используйте XML-элемент font-family, чтобы создавать семейства шрифтов с разными стилями и толщиной. Если вы используете для этого классы библиотеки поддержки, то также используйте атрибуты app: и android:.
  • Скачиваемые шрифты:
    • Новый элемент FontsContractCompat, позволяющий запрашивать шрифты у поставщика, а не добавлять их в приложение.
    • Шрифты также можно запрашивать в XML и использовать в макетах.
  • Библиотека совместимых эмодзи:
    • EmojiCompat может обработать CharSequence и добавить EmojiSpans.
    • EmojiTextView и другие виджеты для отображения эмодзи.
    • FontRequestEmojiCompatConfig – запрос шрифта эмодзи у поставщика шрифтов.
  • Автоматическое изменение размера TextView:
    • Новые методы в TextViewCompat, а также атрибуты XML для управления автоматическим изменением размера в TextView.
  • Элементы управления воспроизведением Leanback с поддержкой перемотки:
    • Новый PlaybackTransportRowPresenter, который позволяет воспроизводить контент и управлять им с помощью ползунка.
    • Новый тег PlaybackTransportControlGlue, который работает с тегом PlaybackTransportRowPresenter и поддерживает перемотку.
    • Новый базовый класс PlaybackSeekDataProvider для приложения, чтобы предоставлять эскизы для перемотки в PlaybackTransportControlGlue.
  • Preferences Data Store:
    • PreferenceDataStore теперь позволяет реализовать собственное хранилище параметров с помощью новых методов в Preference и PreferenceManager.

Известные проблемы

  • Интеграция скачиваемых шрифтов и совместимости с эмодзи с сервисами Google Play работает только с версией 11 и выше. Сейчас она доступна в бета-программе сервисов Google Play.

Исправлены ошибки.

  • MediaBrowserCompat.search() API не работает (проблема AOSP 262170)
  • ViewCompat.postInvalidateOnAnimation() вызывает исключение (проблема 80146 в AOSP)
  • onActivityCreated() вызван для фрагментов в уничтоженном действии
  • RecyclerView.isComputingLayout() должен возвращать значение true во время предварительной выборки.
  • Если переход Fade прерывается и отменяется, метод View запускает анимацию с начала. (Исправление перенесено из Android Framework.)
  • Transition.Fade игнорирует начальное альфа-значение View (проблема AOSP 221820)

Версия 26.0.0 Alpha 1

(март 2017 г.)

Обратите внимание, что версия 26.0.0-alpha1 является предварительной. Его API может меняться, и он не обязательно включает функции или исправления ошибок из последних стабильных версий библиотеки поддержки.

Важные изменения

Примечание. Минимальная версия SDK теперь 14. В результате многие API, которые существовали только для совместимости с API < 14, были объявлены устаревшими. Клиентам этих API следует перейти на эквивалентные фреймворки, как указано на справочной странице для каждого устаревшего API.

  • Модуль support-percent устарел. Клиентам этого модуля следует перейти на новый виджет ConstraintLayout, который предоставляется в виде отдельного артефакта в SDK Manager.
  • Модуль support-fragment больше не зависит от модуля support-media-compat.

Новые API

Добавлено множество новых классов, методов и констант, чтобы обеспечить обратную совместимость с API платформы, добавленными в версии O Preview.

  • IME_FLAG_NO_PERSONALIZED_LEARNING: IME могут отслеживать флаги "не запоминать" для приложений с частным режимом, например браузеров. Эта функция помогает методам ввода понять, находится ли приложение в режиме инкогнито, чтобы они могли отключить свои функции обучения или адаптации, пока приложение находится в этом режиме.

Полный список изменений в API между версиями 25.2.0 и 26.0.0-alpha1 приведен в отчете о различиях в API библиотеки поддержки.

Исправлены ошибки.

  • В некоторых случаях простую анимацию AutoTransition могут прерывать скачки изображения. (Проблема AOSP 221816)

Версия 25.4.0

(июнь 2017 г.)

Важно! Библиотеки поддержки теперь доступны в репозитории Google Maven. Вам не нужно скачивать репозиторий поддержки из SDK Manager. Подробнее о том, как настроить библиотеку поддержки…

Важные изменения

  • executePendingTransactions(), commitNow(), popBackStackImmediate() и другие подобные вызовы транзакций не допускаются во время изменений состояния FragmentManager. Повторный вход в транзакцию небезопасен, и теперь FragmentManager обеспечивает это при изменении состояния.
  • Одновременно с выпуском этой библиотеки поддержки мы также выпускаем multidex версии 1.0.2. В этой версии реализованы следующие важные изменения:
    • Позволяет использовать multidexing для APK-файла инструментария.
    • Прекращена поддержка MultiDexTestRunner (вместо него следует использовать AndroidJUnitRunner).
    • Улучшена защита от некоторых ошибок при извлечении архивов, которые могут привести к сбоям в работе приложения.
    • Исправлена ошибка, из-за которой могли оставаться временные файлы.
    • Ускоряет установку, если выполняется одновременно с другими процессами.
    • Исправлена ошибка установки на устройствах с API 19 и 20.

Новые и измененные API

В AnimatedVectorDrawableCompat поддерживается морфинг и интерполяция путей. Морфинг пути позволяет фигурам переходить из одного пути (указанного как android:valueFrom) в другой (указанный как android:valueTo), чтобы создавать сложные и привлекательные визуальные эффекты. Интерполяция пути позволяет задавать интерполяторы для AnimatedVectorDrawableCompat в виде путей (указанных как android:pathData в XML-файле интерполятора).

Различия в API

Устраненные проблемы

  • Исключение нулевого указателя при подключении к MediaBrowserServiceCompat
  • API MediaBrowserCompat.search() не работает (проблема AOSP 262170)
  • Обратные вызовы BrowseFragment onItemClicked не работают в версии 25.3.0
  • NullPointerException при прокрутке вверх и вниз в VerticalGridView в версии 25.3.1
  • ClassCastException в SimpleArrayMap.allocArrays()

Версия 25.3.1

(март 2017 г.)

Устраненные проблемы

  • Для SwitchCompat требуется SDK версии 14 или более поздней. (Проблема AOSP 251302)
  • Анимация на основе физики updateListener пропускает первый кадр.
  • Анимация ярлыка "BottomNavigationView" не работает.

Версия 25.3.0

(март 2017 г.)

Важные изменения

Метаданные версии библиотеки поддержки будут автоматически добавлены в файл манифеста AndroidManifest.xml при сборке с помощью Gradle, что упростит отслеживание версий в общедоступных сборках. Пример:

<meta-data android:name="android.support.VERSION" android:value="25.3.0" />

Deprecations

В этом выпуске прекращена поддержка ряда методов и классов. Эти устаревшие API будут удалены в будущей версии, поэтому разработчикам следует отказаться от их использования. Чтобы узнать, как перейти на другой API, ознакомьтесь с документацией по нему.

ExifInterface
Логический метод getLatLong(float[]) больше не поддерживается. Вместо него используйте новый метод getLatLong(), который не принимает аргументов и возвращает double[].
mediacompat
PlaybackStateCompat.Builder.setErrorMessage(CharSequence) больше не поддерживается. Вместо этого используйте новый метод setErrorMessage(int, CharSequence), которому передается код ошибки и необязательное описание.
EXTRA_SUGGESTION_KEYWORDS больше не поддерживается. Вместо этого используйте функцию поиска MediaBrowserCompat.
v7.recyclerview
LinearLayoutManager.getInitialItemPrefetchCount() переименован в LinearLayoutManager.getInitialPrefetchItemCount(). Старое название по-прежнему поддерживается, но будет удалено в будущем выпуске.

Новые и измененные API

appcompat-v7
Новый метод ActionBarDrawerToggle.setDrawerSlideAnimationEnabled(boolean) позволяет легко отключить анимацию значка переключателя панели навигации.
customtabs
Добавлена поддержка каналов сообщений. Подробную информацию вы найдете в справочных материалах по элементам CustomTabsService.requestPostMessageChannel() и CustomTabsService.postMessage().
dynamic-animation
Новая библиотека анимации на основе физики, которая предоставляет набор API для создания анимаций, динамически реагирующих на ввод данных пользователем.
leanback-v17
Добавлена поддержка параллакс-фонов. Подробную информацию вы найдете в справочнике по Parallax.
Добавлено TimePicker виджет для выбора времени в интерфейсе телевизора.
mediacompat
Добавлена функция поиска. Подробную информацию вы найдете в справочных материалах по элементам MediaBrowserCompat.search() и MediaBrowserServiceCompat.onSearch().
Добавлена поддержка режимов случайного воспроизведения и повтора. Подробную информацию вы найдете в справочных материалах по элементам MediaSessionCompat.setRepeatMode() и setShuffleModeEnabled().

Устраненные проблемы

Версия 25.2.0

(февраль 2017 г.)

Важные изменения

Устраненные проблемы

  • В этой версии исправлена серьезная проблема с медиамаршрутизатором, из-за которой при использовании устройства A2DP и API маршрутизации медиаконтента устройство переставало отвечать на запросы и требовало перезагрузки.
  • Курс FragmentManager.FragmentLifecycleCallbacks теперь является статичным.

Устраненные проблемы

  • При показе презентации с помощью функции дублирования экрана устройство отключается от сети Wi-Fi
  • Кнопка мультимедиа неправильно обрабатывала приложения, которые не были зарегистрированы в setMediaButtonReceiver().
  • Ошибка VectorDrawable со строковым ресурсом (проблема AOSP 232407)
  • TextInputLayout перекрывает подсказку и текст, если текст задан в XML (проблема AOSP 230171).
  • Утечка памяти в MediaControllerCompat (проблема AOSP 231441)
  • RecyclerViewLayoutTest.triggerFocusSearchInOnRecycledCallback() сбои;
  • RecyclerView аварийно завершает работу при повторном использовании держателей представлений (проблема AOSP 225762)
  • getAllowGeneratedReplies() неправильно возвращает значение false для действий внутри WearableExtender

Версия 25.1.1

(январь 2017 г.)

Важно! В классе android.support.v7.media.MediaRouter в версиях 25.1.1 и 25.1.0 библиотеки поддержки обнаружена ошибка. Если в вашем приложении используется библиотека поддержки версии 7 MediaRouter, обновите ее до версии 25.2.0, в которой исправлена эта ошибка.

Важные изменения

  • Теперь можно оптимизировать фрагменты транзакций как в рамках одной транзакции, так и между разными транзакциями. Оптимизация операций с фрагментами транзакций позволяет устранить операции, которые отменяются. Предположим, что две транзакции выполняются вместе: одна добавляет фрагмент А, а вторая заменяет фрагмент А фрагментом Б. В этом случае первая операция может быть отменена, и будет добавлен только фрагмент Б. Это означает, что фрагмент А может не пройти жизненный цикл создания и уничтожения.

    Побочный эффект этой оптимизации заключается в том, что фрагменты могут менять состояние не в том порядке, в котором ожидается. Например, предположим, что одна транзакция добавляет фрагмент А, вторая – фрагмент Б, а третья удаляет фрагмент А. Без оптимизации фрагмент Б может ожидать, что во время его создания фрагмент А также будет существовать, поскольку фрагмент А будет удален после добавления фрагмента Б. При оптимизации фрагмент Б не может быть уверен, что фрагмент А будет существовать во время создания фрагмента Б, поскольку создание и удаление фрагмента А могут быть удалены в результате оптимизации.

    По умолчанию эта оптимизация отключена. Чтобы включить оптимизацию, вызовите функцию FragmentTransaction.setAllowOptimization(true).

  • Теперь фрагменты могут откладывать переходы и анимацию до тех пор, пока не будут готовы, используя Fragment.postponeEnterTransition() и Fragment.startPostponedEnterTransition(). Этот API похож на Activity.postponeEnterTransition() и Activity.startPostponedEnterTransition(), которые используются с переходами между действиями.

Устраненные проблемы

  • MediaSessionCompatTest: ошибка IllegalArgumentException
  • В версии 25.1.0 не вызывается функция DetailsFragment.installTitleView()
  • При выходе из транзакции фрагмента остается фантомное представление (проблема AOSP 230679)
  • BottomNavigationView требует пробела между значком и текстом (проблема AOSP 230653)
  • Некоторые слушатели не учитываются в новых отчетах PlaybackFragment и PlaybackSupportFragment
  • TextInputLayout Фокус не меняется должным образом в эмуляторе из библиотеки поддержки версии 25.1.0 (проблема AOSP 230461).
  • Невозможно заменить меню BottomNavigationView (проблема 230343 в AOSP)
  • RecyclerView с StaggeredGridLayoutManager сбои при работе с элементами, занимающими всю ширину экрана (проблема AOSP 230295)
  • Сбой в MediaSessionCompat при использовании setCallback(null)
  • PlaybackGlueHostOld и PlaybackSupportGlueHostOld не уведомляют обратные вызовы при изменении строки воспроизведения.
  • PlaybackOverlayFragment example /test can not start playing
  • RecyclerViewFocusRecoveryTest не работает на API 15
  • Строка "Скриншоты" в верхней части экрана
  • RecyclerViewLayoutTest.triggerFocusSearchInOnRecycledCallback() сбои на API 15
  • setActions() в onSubactionClicked() не работает
  • RecyclerView аварийно завершает работу при повторном использовании некоторых держателей представлений

Версия 25.1.0

(декабрь 2016 г.)

Важно! В классе android.support.v7.media.MediaRouter в версиях 25.1.1 и 25.1.0 библиотеки поддержки обнаружена ошибка. Если в вашем приложении используется библиотека поддержки версии 7 MediaRouter, обновите ее до версии 25.2.0, в которой исправлена эта ошибка.

Важные изменения

  • Клиенты вложенных виджетов RecyclerView (например, вертикального списка горизонтальных списков) могут значительно повысить производительность, указав менеджеру макета внутреннего виджета RecyclerView, сколько элементов нужно подготовить до того, как они будут прокручены на экране. Call LinearLayoutManager.setInitialPrefetchItemCount(N), где N – количество видимых просмотров для каждого внутреннего объекта. Например, если в ваших внутренних горизонтальных списках одновременно показывается минимум три с половиной объекта, вы можете повысить эффективность, вызвав функцию LinearLayoutManager.setInitialPrefetchItemCount(4). Это позволяет RecyclerView создавать все необходимые представления на ранних этапах, пока внешний элемент RecyclerView прокручивается, что значительно уменьшает количество заиканий при прокрутке.
  • Поддержка FragmentActivity.setSupportMediaController() и FragmentActivity.getSupportMediaController() прекращена. Используйте новые статические методы MediaControllerCompat.setMediaController() и MediaControllerCompat.getMediaController().
  • Если клиент задает оттенок виджета с помощью функции appcompat tinting (например, appcompat:buttonTint), он должен предоставить все необходимые состояния (например, "отключено", "нажато" и т. д.). Это соответствует тому, как задаются оттенки виджетов при использовании оттенков фреймворка.

Новые и измененные API

  • Добавлена библиотека поддержки ExifInterface. Эта библиотека позволяет читать информацию EXIF из файлов в формате JPEG и RAW, а также задавать информацию EXIF для файлов изображений JPEG.
  • Snackbar был переработан, чтобы позволить приложениям показывать собственный контент. BaseTransientBottomBar – новый базовый класс, который определяет общее поведение при прокрутке и анимации.
  • Добавлен новый пакет leanback.media, который содержит вспомогательные классы для интеграции медиаплееров в приложения Android TV.
  • В библиотеку поддержки предпочтений версии 7 добавлен элемент SeekBarPreference с настраиваемым макетом и атрибутами.
  • В библиотеку поддержки версии 4 добавлен класс ArraySet. Этот класс соответствует классу ArraySet, который был добавлен в платформу на уровне API 23.
  • RecyclerView Улучшения предварительной выборки элементов RecyclerView:

Устраненные проблемы

  • Переключатель видимости пароля не соответствует требованиям доступности.
  • На устройствах с версией ОС ниже L библиотека Appcompat не учитывает атрибут state_enabled.
  • В RecyclerView добавлен механизм восстановления фокуса. Также исправлена ошибка, из-за которой при использовании навигации с помощью D-pad, например на устройствах Android TV, фокус не переключался на фрагменты поддержки.
  • Leanback: BrowseFragment падает при отключенных заголовках и пустом адаптере.
  • Appcompat: AlertDialog слишком широкий.
  • InputContentInfoCompat вызывает requestPermission(), когда должен вызывать releasePermission().
  • MediaBrowserCompat сбоев.
  • CoordinatorLayout измеряет и размещает представления, когда для параметра visibility задано значение GONE.
  • Не удалось применить оттенок AnimatedVectorDrawableCompat на уровне API ниже 24
  • Библиотека Leanback вызывает ложные ошибки линтера
  • Библиотека Palette вызывала сбои при тестировании на всех уровнях API
  • RecyclerView не прошел тесты на платформе Leanback
  • RecyclerView аварийно завершает работу при переработке держателей представлений (проблема AOSP 225762)
  • Fragment.onDestroy() не вызывается для фрагмента в стеке возврата
  • CollapsingToolbarLayout не отображается при сворачивании.
  • CoordinatorLayout.offsetChildByInset() throws IllegalArgumentException
  • Анимирование объектов RecyclerView приводит к отсоединению внутренних объектов RecyclerView и предотвращает предварительную загрузку в будущем.
  • Прикрепленные объекты RecyclerView нельзя вкладывать в предварительно загруженные объекты.
  • Данные предварительной выборки для вложенных объектов RecyclerView удаляются при первой разметке
  • RecyclerView Предварительная выборка не выполняется, если два события drag происходят в одной и той же позиции
  • RecyclerView должен предварительно выполнять разметку, пока RenderThread выполняет отрисовку.
  • Ресурсы цвета, настроенные для ночного режима и преобразованные в объекты Drawable, не всегда корректно удаляются из кеша ресурсов.
  • FloatingActionButton: Программная настройка BackgroundTintList работает неправильно (проблема 227428 в AOSP).
  • TextInputLayout: для ErrorView не задан шрифт (проблема AOSP 227803)
  • TextInputLayout всегда возвращается к светлому цвету ошибки, если версия API ниже 23 (проблема AOSP 221992).
  • FloatingActionButton отображается как нажатая, когда указатель покидает ее

Полный список исправлений общедоступных ошибок можно найти в системе отслеживания ошибок AOSP.

Deprecations

В этом выпуске прекращена поддержка ряда методов и классов. Эти устаревшие API будут удалены в одной из следующих версий, поэтому разработчикам следует отказаться от их использования. Чтобы узнать, как перейти на другой API, ознакомьтесь с документацией по нему.

Версия 25.0.1

(ноябрь 2016 г.)

Устраненные проблемы

  • Переключатель пароля TextInputLayout теперь отключен по умолчанию, чтобы избежать ненужной перезаписи конечных объектов, заданных разработчиком. Его можно включить вручную с помощью XML-атрибута passwordToggleEnabled.
  • Объекты BottomNavigationView теперь отображаются в одну строку в соответствии со спецификацией материалов.
  • RecyclerView аварийно завершает работу во время предварительной выборки, если менеджер макетов имеет значение null.
  • BottomNavigationView теперь задана правильно. (проблема AOSP 226182)
  • BottomNavigationView аварийно завершает работу при добавлении пунктов меню программным способом. (проблема AOSP 225731)
  • Исправлена ошибка, из-за которой составные объекты drawable TextInputLayout слева и справа не отображались. (проблема 225836 в AOSP)
  • RecyclerView происходит сбой при повторном использовании держателей представлений. (Проблема 225762 в AOSP)
  • Leanback: TalkBack часто произносит слово "null" при разделенном экране.
  • RecyclerView: проблемы с отрисовкой в Android Studio. (проблема 225753 в AOSP)
  • BottomNavigationView по-прежнему показывает, что пункт меню выбран, после того как onNavigationItemSelected() возвращает значение false. (Проблема AOSP 225898)
  • ForwardingListener вызывает исключение NoSuchMethodError. (проблема 225647 в AOSP)
  • TextInputEditText не показывает подсказки в режиме извлечения IME. (проблема AOSP 221880)

Полный список исправлений общедоступных ошибок можно найти в системе отслеживания ошибок AOSP.

Версия 25.0.0

(октябрь 2016 г.)

Важные изменения

  • Конструктор класса ContextCompat теперь защищен. Этот класс не должен быть общедоступным, но его можно расширить с помощью библиотек поддержки, предназначенных для более новых уровней API.
  • Конструктор класса ActivityCompat теперь защищен. Этот класс не должен быть общедоступным, но его могут расширять библиотеки поддержки, предназначенные для более новых уровней API.
  • getReferrer(Activity) стал статическим.
  • Ресурс android.support.design.widget.CoordinatorLayout.Behavior.isDirty(CoordinatorLayout, V) уже удален. Все клиентские реализации этого метода следует удалить.
  • Ресурс android.support.v4.media.session.MediaSessionCompat.obtain(Context, Object) уже удален. Вместо него следует использовать метод fromMediaSession().
  • android.support.v4.media.session.MediaSessionCompat.QueueItem.obtain(Object) удален. Вместо него следует использовать метод MediaSessionCompat.QueueItem#fromQueueItem.
  • Ресурс android.support.v7.widget.Space уже удален. Вместо Usages используйте android.support.v4.widget.Space.

Новые API

  • Класс android.support.design.widget.BottomNavigationView реализует нижнюю панель навигации из спецификации Material Design.
  • Новый пакет android.support.v13.view.inputmethod включает классы для доступа к функциям android.view.inputmethod.InputConnection, добавленным после API уровня 13.
  • android.v7.widget.RecyclerView.DividerItemDecoration – базовый класс для реализации вертикальных или горизонтальных разделителей между элементами.
  • Новые стили с декоративными элементами в android.support.v7.app.NotificationCompat, DecoratedCustomViewStyle и DecoratedMediaCustomViewStyle, зеркальные классы, добавленные в API платформы 24.

Устраненные проблемы

Полный список исправлений общедоступных ошибок можно найти в системе отслеживания ошибок AOSP.

Версия 24.2.1

Сентябрь 2016 г.

Устраненные проблемы:

Полный список исправлений общедоступных ошибок можно найти в системе отслеживания ошибок AOSP.

Версия 24.2.0

Август 2016 г.

В версии 24.2.0 внесены следующие изменения:

Примечание. В версии 24.2.0 прекращена поддержка Android 2.2 (уровень API 8) и более ранних версий. Классы и методы, которые существуют только для поддержки этих версий системы, теперь помечены как устаревшие и больше не должны использоваться. Эти устаревшие классы и методы могут быть удалены в будущей версии.

Разделение библиотеки поддержки версии 4

В этом выпуске библиотека поддержки версии 4 была разделена на несколько небольших модулей:

support-compat
Предоставляет оболочки совместимости для новых API фреймворка, например Context.getDrawable() и View.performAccessibilityAction().
support-core-utils
Содержит ряд вспомогательных классов, таких как AsyncTaskLoader и PermissionChecker.
support-core-ui
Реализует различные компоненты интерфейса, такие как ViewPager, NestedScrollView и ExploreByTouchHelper.
support-media-compat
Переносит части фреймворка media, в том числе MediaBrowser и MediaSession.
support-fragment
Переносит фреймворк fragment в более раннюю версию. Этот модуль зависит от support-compat, support-core-utils, support-core-ui и support-media-compat.

Для обеспечения обратной совместимости, если вы укажете support-v4 в скрипте Gradle, в APK будут включены все эти модули. Однако, чтобы уменьшить размер APK, мы рекомендуем указать только те модули, которые нужны вашему приложению.

Обновления API

  • Клиенты, использующие вкладки браузера, могут контролировать, должны ли открываться мгновенные приложения. (Обратите внимание, что приложения с мгновенным запуском пока доступны не всем.) Чтобы включить или отключить приложения с мгновенным запуском, вызовите метод CustomTabsIntent.Builder.setInstantAppsEnabled() или укажите EXTRA_ENABLE_INSTANT_APPS. По умолчанию в настраиваемых вкладках будут включены мгновенные приложения, когда эта функция станет доступна.
  • TextInputLayout добавляет поддержку переключателя видимости пароля из спецификации Material Design.
  • Новый пакет android.support.transition переносит фреймворк Transitions на уровни API 14 и выше. Подробнее о параметре android.support.transition…
  • Библиотека поддержки пользовательских вкладок добавляет поддержку использования RemoteViews на дополнительной панели инструментов. Существующий метод setToolbarItem() больше не поддерживается.
  • AppCompatResources позволяет загружать <vector> (на устройствах с уровнем API 9 и выше) или <animated-vector> (на устройствах с уровнем API 11 и выше) по идентификатору ресурса с помощью нового метода getDrawable().
  • CoordinatorLayout теперь поддерживает определение врезок и указание, что другие виды должны избегать врезок. Это позволяет приложениям воспроизводить шаблоны поведения, похожие на то, как FloatingActionButton уходит с пути Snackbar, но для любых дочерних элементов. Подробную информацию можно найти в справочной документации по LayoutParams.insetEdge и LayoutParams.dodgeInsetEdges.
  • Новый класс DiffUtil может вычислять разницу между двумя коллекциями и отправлять список операций обновления, которые подходят для использования в RecyclerView.Adapter.
  • Добавлен параметр RecyclerView.OnFlingListener, позволяющий задавать особые действия в ответ на жесты. Класс SnapHelper реализует привязку дочерних представлений, а класс LinearSnapHelper расширяет эту реализацию, чтобы обеспечить привязку по центру, аналогичную ViewPager.
  • Теперь библиотека пользовательских вкладок позволяет клиентам запрашивать стандартный интерфейс браузера вместо интерфейса пользовательских вкладок, вызывая CustomTabsIntent.setAlwaysUseBrowserUI(). Такое поведение полезно, когда браузер по умолчанию использует интерфейс специальных вкладок, но пользователь предпочитает стандартный интерфейс браузера.

Изменения в поведении

  • Если вы используете функцию переключения между дневным и ночным режимами из библиотеки appcompat, система теперь автоматически воссоздает ваше действие при смене режима (из-за времени суток или вызова AppCompatDelegate.setLocalNightMode()).
  • Snackbar теперь отрисовывается за панелью навигации, если строка состояния полупрозрачная.

Библиотека MediaRouter

Устройства Bluetooth больше не отображаются в качестве маршрутов передачи медиаконтента. Маршрутизация аудио на устройства Bluetooth теперь полностью контролируется на уровне системы Android.

Deprecations

Устаревшие классы и методы могут быть удалены в будущих версиях. Как можно скорее откажитесь от этих API.

  • Некоторые методы в перечисленных ниже классах были необходимы только для API 8 и более ранних версий, поэтому их больше не следует использовать. Вместо этого используйте реализации фреймворка.
    • android.support.v4.view.KeyEventCompat: заменить на KeyEvent
    • android.support.v4.view.MotionEventCompat: использовать MotionEvent
    • android.support.v4.view.ViewCompat: использовать View
    • android.support.v4.view.ViewConfigurationCompat: использовать ViewConfiguration
  • Метод AccessibilityServiceInfoCompat.getDescription() устарел. Вместо него используйте метод AccessibilityServiceInfoCompat.loadDescription(), который возвращает правильно локализованное описание.
  • Не создавайте экземпляры класса ActivityCompat напрямую. В одном из следующих выпусков метод getReferrer(Activity) будет сделан статическим.
  • CoordinatorLayout.Behavior.isDirty() устарел и больше не вызывается CoordinatorLayout. Все реализации и вызовы этого метода следует удалить.
  • Метод MediaSessionCompat.obtain() больше не поддерживается. Вместо него используется метод fromMediaSession(), название которого лучше отражает его назначение.
  • Метод MediaSessionCompat.QueueItem.obtain() устарел и был заменен более подходящим методом fromQueueItem().
  • Несколько абстрактных классов были объявлены устаревшими и заменены интерфейсами, которые лучше отражают их аналоги в фреймворке.
  • Функция CustomTabsSession.setToolbarItem() устарела и заменена на setSecondaryToolbarViews() на основе RemoteViews.

Исправлены ошибки.

В версии 24.2.0 исправлены следующие известные проблемы:

  • Убедитесь, что индикатор SwipeRefreshLayout показывается, когда setRefreshing(true) вызывается до первого прохода измерения (проблема 77712 в AOSP).
  • Устранена проблема с мерцанием TabLayout при смене страниц (AOSP, проблема 180454).
  • Избегайте использования ClassNotFoundException при десериализации SavedState на устройствах с уровнем API 11 и ниже (проблема 196430 на сайте AOSP)

Полный список исправлений общедоступных ошибок можно найти в системе отслеживания ошибок AOSP.

Версия 24.1.1

Июль 2016 г.

Устраненные проблемы:

  • Исправлена проблема в версии 24.1.0, которая влияла на идентификаторы ресурсов, используемые в библиотеках поддержки. Из-за этой проблемы в приложениях, которые зависят от библиотек поддержки с ресурсами (например, design и appcompat), возникали ошибки, связанные с несоответствием идентификаторов ресурсов.

Версия 24.1.0

Июль 2016 г.

Изменения в библиотеке поддержки версии 4:
  • NotificationCompat.Action.WearableExtender содержит новые методы getHintDisplayActionInline() и setHintDisplayActionInline() для совместимости с предварительной версией Android Wear 2.0. Эти методы позволяют приложению указать, что действие должно быть показано в уведомлении.
  • Вызов Fragment.setUserVisbileHint() больше не приводит к тому, что фрагмент становится запущенным, если подсказка была добавлена в FragmentTransaction, который ещё не был зафиксирован. Это влияет на пользователей FragmentPagerAdapter, которые переопределяют setUserVisbileHint() и предполагают определенное состояние жизненного цикла фрагмента после вызова super.setUserVisibleHint(). Дополнительную информацию можно найти на справочной странице документации по Fragment.setUserVisbileHint().

Устраненные проблемы:

  • TabLayout.setCustomView(null) приводит к NullPointerException (проблема 214753 в AOSP)
  • TabLayout неправильно выделяет специальные вкладки (проблема 214316 в AOSP)
  • AppCompatTextHelper использует массив атрибутов с неправильной сортировкой (проблема 214366 в AOSP)
  • Невозможно сослаться на VectorDrawable из XML контейнера drawable при использовании пользовательского ContextWrapper (проблема AOSP 214055)
  • ViewDragHelper.saveLastMotion() вызывает исключение ArrayIndexOutOfBoundsException (проблема 212945 в AOSP)
  • При использовании setState(STATE_EXPANDED) BottomSheetBehavior разворачивается до высоты старого контента (проблема AOSP 213660)
  • CollapsingToolbarLayout не обрабатывает закрепленные дочерние элементы с верхними или нижними полями (проблема AOSP 213001).
  • Заголовок для просмотра в Leanback не поддерживает выравнивание по правому краю (проблема AOSP 213461)
  • PagerTabStrip исчезает из-за отсутствия унаследованной аннотации (проблема AOSP 213359)
  • При использовании логического значения для установки условных флагов привязка данных вызывает исключение NullPointerException (проблема AOSP 191841)
  • CoordinatorLayout не реагирует на setFitsSystemWindows() (проблема AOSP 212720)
  • Сбой BottomSheetBehavior при задании начального состояния (проблема AOSP 203114)
  • ViewPager пропускает страницы, если индекс страницы имеет большое значение (проблема AOSP 211734)
  • BottomSheetBehavior не работает с динамическими макетами (проблема AOSP 205226)

Версия 24.0.0

Июнь 2016 г.

Изменения в библиотеке поддержки версии 4:
  • Добавлено Fragment.commitNow() для синхронной фиксации
  • Добавлена функция NotificationCompat.MessagingStyle для групповых чатов.
  • Добавлено: NotificationManagerCompat.areNotificationsEnabled() и getImportance().
  • MediaSessionCompat теперь выполняет те же функции, что и MediaSession, и больше не вызывает setMediaButtonReceiver() автоматически.

Примечание. Только MediaBrowserServiceCompat версии 24.0.0 совместим с будущими версиями Android, которые будут выпущены после API 24. Если вы используете более ранние версии, обновите их до этой, чтобы обеспечить совместимость.

Изменения в библиотеке appcompat версии 7:
  • Добавлена поддержка ссылок на тематические объекты ColorStateList из XML
Изменения в библиотеке поддержки дизайна:
Изменения в библиотеке Leanback версии 17:
  • Добавлен тег OnboardingFragment для первого запуска и настройки.
Изменения в пользовательских вкладках:
  • Добавлена поддержка иерархии RemoteViews для дополнительной панели инструментов
  • Добавлена строка CustomTabsClient.connectAndInitialize() для разогрева.

Версия 23.4.0

Май 2016 г.

Изменения в библиотеке поддержки версии 4:
  • Устранена проблема, из-за которой фрагменты добавлялись в неправильном порядке. (Проблема 206901)
  • Исправлена проблема, из-за которой панель приложений не отображалась после прокрутки за пределы экрана. (Проблема 178037)
Изменения в библиотеке appcompat версии 7:
Изменения в библиотеке поддержки дизайна:
Изменения в библиотеке векторной графики :

Версия 23.3.0

Апрель 2016 г.

Изменения в библиотеке поддержки версии 4:
  • Добавлен тег AppLaunchChecker, который позволяет отслеживать, как пользователь запускал приложение в прошлом. hasStartedFromLauncher() позволяет узнать, запускал ли пользователь ваше приложение с главного экрана или только другими способами (например, чтобы посмотреть определенные URL).
  • Устранена утечка памяти в приложении "MediaBrowserServiceCompat.mConnections". (Проблема 205220)
  • Исправлена проблема, из-за которой ViewPager не учитывает поля страницы при ее перелистывании. (Проблема 203816)
  • Теперь Fragment.onRequestPermissionsResult() передается дочерним фрагментам.
Изменения в библиотеке appcompat версии 7:
Изменения в библиотеке mediapouter версии 7:
Изменения в библиотеке v7 Preference:
Изменения в библиотеке v7 recyclerview:
Изменения в библиотеке поддержки дизайна:

Версия 23.2.1

Март 2016 г.

Изменения в библиотеке поддержки версии 4:
Изменения в библиотеке appcompat версии 7:
  • Восстановлена зависимость от векторных объектов, чтобы разработчики, использующие библиотеку appcompat, не были вынуждены использовать VectorDrawable и связанные с ним флаги сборки.
  • Исправлена проблема совместимости с ночным режимом и уровнем API 23. (Выпуск 201910)
  • Исправлена проблема совместимости с SwitchCompat и уровнем API 7. (Проблема 201942)
  • Исправлена проблема с распространением значений конфигурации в объектах ресурсов. Проблема 201928
  • Устранена проблема совместимости, из-за которой кнопка отмены android.support.v7.app.NotificationCompat.MediaStyle становилась невидимой на устройствах с API версии 21 и ниже. (Проблема 202156)
  • Исправлена ошибка совместимости с AppCompatSpinner на устройствах с уровнем API 21 и ниже. (Проблема 202246)
  • Исправлена проблема, из-за которой не работал стиль app:textAllCaps = "false". (Проблема 202117)
  • Исправлена ошибка, из-за которой происходил сбой при восстановлении SearchView. (ошибка 201836)
  • Устранена утечка памяти, которая возникала при тонировании ресурсов drawable с помощью AppCompat. (Проблема 202379)
  • Исправлена проблема с KeyEvent на уровне API 11 и ниже. (Проблема 202939)
Изменения в библиотеке v7 cardview:
Изменения в библиотеке v7 recyclerview:
  • Исправлены ошибки, связанные с различными методами measure-spec. (ошибка 201856)
  • Сокращен период блокировки, в течение которого RecyclerView не позволяет изменять адаптер при расчете макета или прокрутки. (Проблема 202046)
  • Исправлена ошибка, возникающая при вызове notifyItemChanged() для элемента, который не виден. (Выпуск 202136)
  • Исправлен сбой, который возникал, когда RecyclerView.LayoutManager добавлял и удалял представление в рамках одного сеанса сбора данных. (ошибка 193958)
Изменения в библиотеке mediapouter версии 7:
Изменения в версии 17 библиотеки Leanback:
  • Исправлена проблема с GridLayout.onAddFocusables(), из-за которой выбирался неверный элемент.
  • Исправлена проблема, из-за которой действия GuidedStepFragment исчезали после того, как действие было свернуто.
Изменения в библиотеке поддержки дизайна:
  • Исправлен сбой TabLayout, вызванный объединением вкладок. (Проблема 201827)
  • Исправлена ошибка в NavigationView, из-за которой выбирался неправильный цвет. (Выпуск 201951)
  • Исправлена ошибка, из-за которой setBackgroundTintList() больше не мог менять цвет фона. (Проблема 201873)
  • Исправлена ошибка, из-за которой при использовании android:fitsSystemWindows = “true” элемент AppBarLayout не полностью прокручивался за пределы экрана. (Выпуск 201822)
  • Исправлена ошибка, из-за которой в BottomSheetDialog неправильно отображались короткие видео. (Проблема 201793)
  • Устранена проблема, из-за которой BottomSheetDialogFragment иногда перемещался при изменении контента внутри него. (Выпуск 202125)
  • Исправлена ошибка, приводящая к сбою счетчика TextInputLayout link
  • Исправлена ошибка, из-за которой происходил сбой при восстановлении сохраненного состояния TextInputLayout.getCounterMaxLength(). (Проблема 202375)
  • Исправлена ошибка ClassCastException, которая возникала при восстановлении CoordinatorLayout с использованием сохраненного состояния представления, не являющегося CoordinatorLayout.
Изменения в VectorDrawableCompat:
  • Исправлена ошибка, из-за которой для android:tintMode считывалась неправильная переменная. (Выпуск 201907)

Версия 23.2.0

Февраль 2016 г.

Изменения в библиотеке поддержки версии 4:
  • Добавлены свойства MediaBrowserCompat для поддержки MediaBrowser и MediaBrowserServiceCompat для поддержки MediaBrowserService. Это полезно, когда фоновая служба медиаприложения подключается к компонентам интерфейса, а также при интеграции с Android Auto и Android Wear без необходимости использовать уровень API 21 или более поздний.
  • Теперь система вызывает onActivityResult() для вложенного элемента FragmentActivity.
Изменения в библиотеке AppCompat версии 7:
  • Добавлена функция ночного режима для устройств с уровнем API 14 и выше. Переключаться между светлой и тёмной темами Material в зависимости от времени суток или настроек приложения.
    • Темы "День" и "Ночь" можно найти здесь: <sdk>/extras/android/support/v7/appcompat/res/values/themes_daynight.xml
    • AppCompatDelegate.setDefaultNightMode() – задает режим приложения по умолчанию, передавая одну из следующих констант:
      • MODE_NIGHT_AUTO
      • MODE_NIGHT_NO
      • MODE_NIGHT_YES
      • MODE_NIGHT_FOLLOW_SYSTEM
    • AppCompatDelegate.setLocalNightMode(): переопределяет настройку ночного режима для локального компонента приложения.
    • AppCompatDelegate.getDefaultNightMode() – возвращает ночной режим по умолчанию.
Изменения в библиотеке mediarouter версии 7:
  • MediaRouteControllerDialog теперь корректно применяет цвета пользовательской темы приложения.
Изменения в библиотеке поддержки дизайна:
  • Добавлена поддержка нижних листов. Плагин взаимодействия BottomSheetBehavior позволяет дочернему представлению объекта CoordinatorLayout действовать как нижний лист. Базовый класс BottomSheetCallback предоставляет обратные вызовы для отслеживания событий в нижней панели.
Изменения в библиотеке поддержки CustomTabs:
  • Специальные вкладки Chrome теперь позволяют добавлять в приложения нижнюю панель с командными кнопками в дополнение к существующей верхней командной кнопке.
  • CustomTabsIntent.Builder.addToolBarItem() – добавляет кнопку действия на пользовательскую вкладку. С помощью этого параметра можно добавить несколько кнопок.
  • CustomTabsSession.setToolBarItem(): обновляет изображения элементов панели инструментов. Этот метод будет выполнен успешно, только если ему передать действительный идентификатор и сеанс браузера находится на переднем плане.
Добавлена библиотека поддержки VectorDrawable:
  • Добавленные курсы:
    • VectorDrawableCompat
    • AnimatedVectorDrawableCompat
  • Добавлена поддержка объектов VectorDrawable в приложениях, работающих на устройствах с уровнем API 7 или выше. Объекты AnimatedVectorDrawable также поддерживаются на уровне API 11 и выше. Векторные объекты могут быть значительно меньше графических и помогают уменьшить размер приложения, поскольку для поддержки экранов разных устройств требуется меньше объектов.
  • Теперь эта библиотека является зависимостью библиотеки AppCompat версии 7, что позволяет разработчикам и AppCompat легко использовать векторные изображения. Чтобы использовать VectorDrawableCompat в ImageButton или ImageView, используйте атрибут XML app:srcCompat или метод setImageResource().
  • Чтобы продолжить ссылаться на идентификаторы атрибутов на уровне API 20 или ниже, добавьте в файл build,gradle следующий флаг appt:
    • Если вы используете Android Plugin for Gradle версии 1.5.0 или более ранней, добавьте в файл build.gradle следующие строки:
    • android {
        defaultConfig {
          // Stops the Gradle’s automatic rasterization of vectors
          generatedDensities = []
        }
         // Flag that tells aapt to keep the attribute ids
        aaptOptions {
          additionalParameters "--no-version-vectors"
        }
      }
    • Если вы используете Android Plugin for Gradle версии 2.0.0 или более поздней, добавьте в файл build.gradle следующее:
    • android {
        defaultConfig {
          vectorDrawables.useSupportLibrary = true
        }
      }
Изменения в библиотеке Leanback версии 17:
  • В компонент GuidedStepFragment, который помогает пользователям принимать решения, добавлены новые возможности:
    • Добавлены действия для кнопок в GuidedAction:
      • GuidedStepFragment.setButtonActions() – задает список кнопок GuidedAction, которые пользователь может выбрать в представлении "Действия".
    • Теперь можно редактировать поля описания:
      • GuidedAction.Builder.descriptionEditable() – при передаче true устанавливает для описания действия возможность редактирования.
      • GuidedAction.getEditDescription() – возвращает редактируемое описание в виде CharSequence.
    • Добавлены раскрывающиеся списки вложенных действий:
      • GuidedAction.setSubActions() – задает список GuidedAction в виде раскрывающегося меню с поддействиями.
  • Добавлен виджет GuidedDatePickerAction для функции DatePicker:
    • Дата выбирается с помощью столбцов года, месяца и дня и имеет настраиваемый диапазон.
    • GuidedDatePickerAction.Builder – класс конструктора для объекта GuidedDatePickerAction.
    • GuidedDatePickerAction.Builder.datePickerFormat(String datePickerFormat): задайте нужный формат даты, передав соответствующий трехсимвольный код String, например “YMD” или “MDY”. Также можно использовать атрибут XML datePickerFormat.
Изменения в библиотеке v7 RecyclerView:
  • В RecyclerView теперь есть функция AutoMeasure, которая позволяет RecyclerView.LayoutManager легко обернуть контент или обработать различные спецификации измерений, предоставленные родительским элементом RecyclerView. Он поддерживает все существующие возможности анимации RecyclerView.
    • Если у вас есть настраиваемый тег RecyclerView.LayoutManager, вызовите функцию setAutoMeasureEnabled(true), чтобы начать использовать новый AutoMeasure API. Все встроенные объекты RecyclerView.LayoutManager по умолчанию включают автоматический сбор данных.
    • RecyclerView.LayoutManager больше не игнорирует некоторые настройки RecyclerView.LayoutParams, например MATCH_PARENT в направлении прокрутки.

      Примечание. Снятие ограничений может привести к неожиданному поведению макетов. Убедитесь, что вы указали правильные параметры макета.

  • При обновлении RecyclerView.ViewHolder с информацией о полезной нагрузке DefaultItemAnimator теперь отключает анимацию изменений.
  • Теперь вы можете изменить ItemTouchHelperскорость убегания, чтобы настроить чувствительность к пролистыванию. Чтобы изменить чувствительность к пролистыванию, переопределите getSwipeEscapeVelocity(float defaultValue) и измените defaultValue.

Версия 23.1.1

Ноябрь 2015 г.

Изменения в библиотеке v7 recyclerview
  • Исправлен сбой, который возникал при выполнении действия "Провести, чтобы закрыть", предоставляемого вспомогательным классом ItemTouchHelper, а затем добавлении элемента. (Проблема 190500)
Изменения в библиотеке настроек версии 7
  • Исправлена проблема с использованием ProGuard. (ошибка 183261).
Изменения в библиотеке поддержки Leanback версии 17
  • Исправлены внутренние ошибки в библиотеке.
Изменения в библиотеке поддержки дизайна:
  • В класс NavigationView добавлен метод getHeaderView.
  • Исправлена проблема с прозрачным фоном для объекта FloatingActionButton на устройствах с Android 4.0 (уровень API 15) и более ранних версий. (Проблема 183315)

Версия 23.1.0

Октябрь 2015 г.

Изменения в библиотеке поддержки версии 4
  • В виджет NestedScrollView добавлена поддержка интерфейса OnScrollChangedListener. Он позволяет получать обратные вызовы при изменении позиций прокрутки по оси X или Y.
  • Добавлен класс MediaButtonReceiver для пересылки полученных элементов управления воспроизведением в сервис, управляющий классом MediaSessionCompat. У класса MediaSessionCompat есть конструктор, который может автоматически найти получателя кнопки мультимедиа в манифесте. Приемник медиакнопок – ключевой компонент для управления воспроизведением с помощью аппаратных или Bluetooth-элементов управления.
Изменения в библиотеке v7 appcompat
  • Добавлены виджеты Seekbar и ImageButton в стиле Material Design.
  • В виджет ImageView добавлена поддержка функции тонирования.
  • Обновлен внешний вид виджета SwitchCompat.
Изменения в библиотеке MediaRouter версии 7
  • В класс MediaRouteChooserDialog добавлены следующие функции:
    • Показывает страницу загрузки во время поиска поставщиков маршрутов мультимедиа.
    • Добавлен значок типа устройства, чтобы его было проще идентифицировать.
    • Сортирует маршруты по частоте использования в текущем приложении.
    • Поддерживает горизонтальный режим.
  • В класс MediaRouteControllerDialog добавлены следующие функции:
    • Распознает трансляцию экрана и предоставляет подходящее описание.
    • Поддерживает обложки альбомов разных размеров и соотношений сторон, а также асинхронную загрузку.
    • Автоматически выбирает цвет контента на основе основного цвета приложения.
    • Макет диалогового окна будет подстраиваться под доступное место на экране устройства.
    • Поддерживает горизонтальный режим.
Изменения в библиотеке палитр версии 7
  • Добавлен метод setRegion(), позволяющий извлекать цвет из определенной области объекта Bitmap.
Изменения в библиотеке v7 recyclerview
  • В класс ItemAnimator добавлен улучшенный API анимации, который позволяет более точно настраивать:
    • Анимация изменений больше не требует двух копий объекта ViewHolder, что позволяет создавать анимацию контента элементов. Кроме того, объект ItemAnimator определяет, следует ли использовать тот же объект ViewHolder или создать новый.
    • Новый API записи информации позволяет классу ItemAnimator собирать данные в нужный момент жизненного цикла макета. Эта информация затем передается в обратные вызовы анимации.
  • Мы предусмотрели простой план перехода на новую версию API, несовместимую с предыдущей:
    • Если вы ранее расширили класс ItemAnimator, вы можете изменить базовый класс на SimpleItemAnimator, и ваш код будет работать как раньше. Класс SimpleItemAnimator предоставляет старый API, обернув новый API.
    • Из класса ItemAnimator были удалены некоторые методы. Следующий код больше не будет компилироваться:
    • Kotlin

      recyclerView.itemAnimator.supportsChangeAnimations = false

      Java

      recyclerView.getItemAnimator().setSupportsChangeAnimations(false)

      Вы можете заменить его на:

      Kotlin

      val animator: SimpleItemAnimator? = recyclerView.itemAnimator as? SimpleItemAnimator
      animator?.supportsChangeAnimations = false

      Java

      ItemAnimator animator = recyclerView.getItemAnimator();
      if (animator instanceof SimpleItemAnimator) {
         ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false);
      }
Изменения в библиотеке поддержки настроек версии 7, версии 14 и версии 17:
  • Удалены API для управления диалоговыми окнами EditText.
Изменения в библиотеке поддержки Leanback версии 17
  • Добавлена версия класса GuidedStepFragment для библиотеки поддержки (расширяет android.support.v4.app.Fragment), а также улучшены анимации и переходы.
  • Обновлен класс GuidedStepFragment, чтобы его можно было размещать поверх существующего контента.
  • Добавлена возможность аннотировать разные типы автозаполнения поисковых запросов в класс SearchFragment.
  • В класс VerticalGridFragment добавлена поддержка перехода слайдов с задержкой.
Изменения в библиотеке поддержки дизайна:
  • В виджет TextInputLayout добавлена поддержка подсчета символов.
  • В класс AppBarLayout добавлена поддержка привязки к краям с помощью константы SCROLL_FLAG_SNAP. Если после прокрутки элемент виден лишь частично, он будет автоматически прокручен до ближайшего края.
  • Добавлена поддержка специальных представлений для класса NavigationView с помощью атрибута app:actionLayout или метода MenuItemCompat.setActionView().
Изменения в библиотеке поддержки специальных вкладок
  • В класс CustomTabsIntent добавлен метод enableUrlBarHiding(). Оно позволяет клиенту настроить, будет ли адресная строка автоматически скрываться при прокрутке вниз.
  • В класс CustomTabsSession добавлен метод setActionButton(). Он позволяет клиенту изменить значок кнопки настраиваемого действия в уже запущенной специальной вкладке.
  • Добавлены константы TAB_SHOWN и TAB_HIDDEN в качестве новых событий для метода onNavigationEvent класса CustomTabsCallback.

Версия 23.0.1

Сентябрь 2015 г.

Изменения в библиотеке поддержки предпочтений версии 7 и версии 14:
  • Добавлены файлы макета и стиля Material Design. (ошибка 183376)
Изменения в библиотеке v7 appcompat
  • Устранены проблемы со сбоями для класса Fragment путем ограничения использования аппаратных слоев до Android 4.1 (уровень API 16) и более поздних версий. (ошибка 183896).
  • Исправлена ошибка, из-за которой аппаратные кнопки не работали, когда активность задавала класс Toolbar в качестве ActionBar с помощью метода setSupportActionBar(). (Проблема 183334)
  • Обновлен класс AppCompatDialogFragment, чтобы больше не возникала ошибка Windows feature must be requested before adding content. (Проблема 183186)
Изменения в библиотеке поддержки дизайна:
  • Исправлена ошибка, из-за которой класс AppBarLayout неправильно отрисовывался после поворота. (проблема 183109)
  • Исправлена ошибка, из-за которой класс TabLayout работал неправильно, когда пользователь нажимал на экран после пролистывания. (Проблема 183123)
Изменения в библиотеке поддержки специальных вкладок
  • Значение minSdkVersion снижено с 16 до 15 для поддержки версий.
  • Добавлена возможность создавать CustomTabsSessionToken на основе намерения.

Версия 23

Август 2015 г.

Добавлены новые библиотеки поддержки:

Полный список изменений в библиотеке поддержки приведен в отчете о различиях в API библиотеки поддержки.

Версия 22.2.1

Июль 2015 г.

Изменения в библиотеке поддержки дизайна:
  • В класс FloatingActionButton добавлены методы hide() и show() для программного запуска анимации.
  • В класс Snackbar добавлен констант LENGTH_INDEFINITE для показа уведомления, пока оно не будет закрыто или пока не будет показано другое уведомление. Также добавлены методы setActionTextColor(int) и setActionTextColor(ColorStateList).
  • В класс TabLayout добавлен метод getSelectedTabPosition() для получения текущей выбранной вкладки.
  • Для класса android.support.v7.app.NotificationCompat.MediaStyle реализован полностью гибкий API, позволяющий объединять методы в цепочки.
  • В RecyclerView добавлены удобные методы для пакетной вставки объектов.

Полный список изменений в библиотеке поддержки приведен в отчете о различиях в API библиотеки поддержки.

Версия 22.2.0

Май 2015 г.

Добавлена библиотека поддержки дизайна:
  • Добавлен элемент TextInputLayout для показа EditTextподсказок и текста ошибок в виде плавающих ярлыков.
  • Добавлен элемент FloatingActionButton для реализации основного действия в интерфейсе в виде плавающей кнопки действия, поддерживающей стандартный и миниатюрный размеры.
  • Добавлен Snackbar для предоставления простого отзыва с необязательным действием в анимированном снекбаре.
  • Добавлен TabLayout для реализации фиксированных и прокручиваемых вкладок, а также для простой интеграции с ViewPager.
  • Добавлен класс NavigationView для реализации содержимого панели навигации, в том числе возможности развертывания пунктов меню с помощью ресурса меню.
  • Добавлен CoordinatorLayout – макет общего назначения, который используется для создания зависимостей между соседними представлениями и позволяет легко прокручивать компоненты с помощью CoordinatorLayout.Behavior. Многие компоненты библиотеки дизайна должны быть дочерними элементами CoordinatorLayout.
  • Добавлен элемент AppBarLayout – контейнер для элемента Toolbar и других представлений (например, TabLayout), позволяющий реагировать на события прокрутки, скрываясь с экрана, появляясь при прокрутке вниз или сворачиваясь и разворачиваясь до того, как исчезнуть с экрана или появиться на нем.
  • Добавлен параметр CollapsingToolbarLayout, позволяющий управлять тем, как сворачивается Toolbar. Панель инструментов может сворачиваться, если: закрепить компоненты в верхней части экрана, пока она сворачивается; добавить эффект параллакса для компонентов, например ImageView; добавить цвет полупрозрачного слоя, когда панель частично свернута.
Изменения в библиотеке поддержки версии 4
Изменения в библиотеке v7 appcompat:

Полный список изменений в библиотеке поддержки приведен в отчете о различиях в API библиотеки поддержки.

Версия 22.1.0

Апрель 2015 года

Изменения в библиотеке аннотаций:
  • Добавлена библиотека аннотаций для поддержки улучшенных проверок кода. Аннотации добавляются в виде тегов метаданных, которые прикрепляются к переменным, параметрам и возвращаемым значениям, чтобы проверять возвращаемые значения методов, переданные параметры, а также локальные переменные и поля.
Изменения в библиотеке поддержки версии 4
  • Добавлен класс ColorUtils, который содержит набор вспомогательных методов, связанных с цветом.
  • В класс DrawableCompat добавлены методы unwrap() и wrap(), позволяющие использовать setTint(), setTintList() и setTintMode() на всех устройствах с уровнем API 4 или выше.
  • Добавлен класс TraceCompat для записи событий трассировки в буфер трассировки системы, которые затем можно собрать и визуализировать с помощью инструмента Systrace.
  • Добавлен класс CircularIntArray для создания циклических структур данных целочисленных массивов.
  • В класс CircularArray добавлены методы clear(), removeFromStart() и removeFromEnd(). Кроме того, существующие методы в этом классе были изменены на нефинальные.
  • Добавлен класс InputDeviceCompat в качестве вспомогательного класса для доступа к данным в классе InputDeviceCompat.
  • Добавлен класс LayoutInflaterCompat в качестве вспомогательного класса для доступа к данным в классе LayoutInflaterCompat и добавлен интерфейс LayoutInflaterFactory.
  • Добавлены классы, методы и интерфейсы для поддержки вложенной прокрутки.
    • Добавлены вспомогательные классы NestedScrollingChildHelper и NestedScrollingParentHelper для реализации вложенных родительских и дочерних представлений с прокруткой.
    • Добавлен интерфейс NestedScrollingChild, который должны реализовать подклассы View.
    • Добавлены интерфейсы NestedScrollingParent и ScrollingView для поддержки операций прокрутки и предоставления API, связанных с прокруткой.
    • В класс ViewGroupCompat добавлен метод getNestedScrollAxes().
    • В класс ViewParentCompat добавлены методы для поддержки вложенной прокрутки.
    • Добавлен класс NestedScrollView для поддержки вложенной прокрутки родительского и дочернего элементов в новых и старых версиях Android.
  • В класс MotionEventCompat добавлены методы и константы для получения значений осей и источника событий.
  • В класс AccessibilityNodeInfoCompat добавлены методы для обработки ошибок, аннулирования контента и меток.
  • Добавлены следующие классы интерполяции для анимации:FastOutLinearInInterpolator,FastOutSlowInInterpolator,LinearOutSlowInInterpolator,LinearOutSlowInInterpolator иPathInterpolatorCompat.
  • Добавлен класс Space, позволяющий создавать промежутки между компонентами в макетах общего назначения. Этот класс устарел в библиотеке gridlayout.
  • Добавлен класс TextViewCompat для доступа к функциям в TextView.
  • В метод onPull() класса EdgeEffectCompat добавлен параметр смещения.
Изменения в библиотеке v7 appcompat:
  • Добавлена поддержка оттенков для виджетов appcompat, в том числе для следующих:AppCompatAutoCompleteTextView,AppCompatButton,AppCompatCheckBox,AppCompatCheckedTextView,AppCompatEditText,AppCompatMultiAutoCompleteTextView,AppCompatRadioButton,AppCompatRatingBar,AppCompatSpinner иAppCompatTextView.
  • Обновлен класс AppCompatActivity, который используется в качестве базового для действий, использующих функции панели действий библиотеки поддержки. Этот класс заменяет устаревший класс ActionBarActivity.
  • Добавлен интерфейс AppCompatCallback, который нужно реализовать для AppCompat, чтобы выполнять обратные вызовы.
  • Добавлен абстрактный класс AppCompatDelegate в качестве делегата, который можно использовать для расширения поддержки AppCompat на любое действие.
  • Добавлен класс AppCompatDialog в качестве базового класса для диалоговых окон с темами AppCompat.
  • Добавлены стили спиннера AlertDialog и AlertDialog.Builder, чтобы предоставить AlertDialog с темой AppCompat.
  • Добавлен класс Palette.Builder для создания экземпляров Palette.
    • В класс Palette добавлен метод from(Bitmap), который позволяет начать генерировать палитру с помощью возвращенного экземпляра Palette.Builder.
    • Методы Palette.generate() и Palette.generateAsync() больше не поддерживаются.
  • В класс GridLayout.Spec добавлен метод getAbsoluteAlignment().
  • Устаревшее использование app:theme для стилизации Toolbar. Теперь вы можете использовать android:theme для панелей инструментов на всех устройствах с уровнем API 7 и выше, а также android:theme для всех виджетов на устройствах с уровнем API 11 и выше.
Изменения в библиотеке Leanback версии 17:
Изменения в библиотеке recyclerview версии 7:
  • Добавлены классы SortedList для отображения элементов в списке и уведомлений об изменениях в нем.
  • Добавлен класс SortedListAdapterCallback, который может привязать отсортированный список к классу RecyclerView.Adapter.
Изменения в библиотеке RenderScript версии 8:
  • Добавлен класс ScriptIntrinsicHistogram для использования в качестве фильтра гистограммы.
  • Добавлен класс ScriptIntrinsicResize для изменения размера двумерного распределения.

Исправление 22

Март 2015 г.

Изменения в библиотеке поддержки версии 4
  • Метод getDrawable() теперь возвращает объект drawable для указанного идентификатора ресурса, плотности экрана и темы.
  • Добавлен метод setImportantForAccessibility(), позволяющий указать, должно ли представление вызывать события доступности.
  • Добавлен метод getStatusBarBackgroundDrawable(), позволяющий получить фон строки состояния в виде объекта Drawable.
  • Добавлены методы в класс NotificationCompat.CarExtender.UnreadConversation, чтобы приложения для обмена сообщениями в Android Auto могли получать дополнительные данные уведомлений.
  • Добавлен метод getProgressCircleDiameter(), возвращающий диаметр круговой макета.
  • Изменен цвет строки статуса по умолчанию с DrawerLayout на colorPrimaryDark.
Изменения в библиотеке v7 appcompat:
Изменения в библиотеке Leanback версии 17:
  • Добавлены методы getRecycledPoolSize() и setRecycledPoolSize(), позволяющие задавать собственные размеры пулов повторно используемых объектов.
  • В настройку ширины макета добавлен атрибут WRAP_CONTENT, чтобы поддерживать перенос контента для значков заголовков.
  • Определено значение R.transition в XML-файле, чтобы улучшить переход между обновлениями.
  • Добавлена поддержка макетов с письмом справа налево.
  • Добавлена поддержка ключевых событий воспроизведения и паузы в класс PlaybackOverlayFragment.
  • Добавлены переходы при вводе и возврате в класс BrowseFragment и класс DetailsFragment.
  • Добавлен метод replace() для замены элементов в массиве адаптера объекта.
Изменения в библиотеке MediaRouter версии 7:
  • Обновлены значки Google Cast в стиле Material Design.
  • Обновлены все значки, используемые в диалоговых окнах MediaRouter, в соответствии со стилем Material Design.
Изменения в библиотеке v7 recyclerview:

Версия 21.0.3

Декабрь 2014 года

Изменения в библиотеке поддержки версии 4

Версия 21.0.2

Ноябрь 2014 г.

Изменения в библиотеке поддержки версии 4
  • Добавлен класс NotificationCompat.CarExtender для поддержки расширений Android Auto для уведомлений.
Изменения в библиотеке v7 appcompat:
  • Добавлен конструктор PopupMenu для поддержки новых всплывающих меню.
  • Добавлена поддержка описания значка "Свернуть" в классе Toolbar.
  • Виджет SearchView теперь поддерживает отображение commitIcon.
  • Из класса Toolbar удален атрибут buttonGravity.
Изменения в библиотеке v7 cardview:
Изменения в библиотеке v7 recyclerview:
  • В класс RecyclerView добавлены константы TOUCH_SLOP_DEFAULT и TOUCH_SLOP_PAGING для поддержки конфигураций сенсорного экрана при пролистывании страниц.
Изменения в библиотеке Leanback версии 17:
  • Добавлена поддержка создания фрагментов кода версии 4.
  • Изменен цвет дополнительного текста на CardView.

Версия 21.0.1

Ноябрь 2014 г.

Добавлена библиотека поддержки multidex для поддержки нескольких исполняемых файлов Dalvik (DEX) для многофайловых приложений до Android 5.0.

Версия 21

Октябрь 2014 г.

Изменения в библиотеке поддержки версии 4
  • Добавлена поддержка переходов Fragment для устройств с Android 5.0 (уровень API 21). Обратите внимание, что переходы не работают на устройствах с Android 4.4 и более ранних версий.
  • Добавлен элемент DocumentFile, чтобы упростить переход с File при работе с деревом документов. Однако этот класс требует больше вычислительных ресурсов, чем DocumentsContract API, добавленный в Android 4.4 (уровень API 19). Поэтому при работе с Android 4.4 и более поздними версиями следует использовать DocumentsContract.
Изменения в библиотеке v7 appcompat:
  • Добавлена поддержка пользовательских интерфейсов Material Design.
  • Добавлен тег Toolbar, который обобщает функциональность тега ActionBar для использования в макетах приложений.
  • Обновлено ActionBarDrawerToggle, в котором содержится анимация перехода от меню к стрелке
  • Обновлены виджеты общего пользовательского интерфейса, чтобы их можно было окрашивать с помощью атрибутов темы на устройствах с версией ОС ниже Android 5.0.
  • Добавлен SwitchCompat – портированная версия виджета Switch, который был добавлен в Android 4.0 (уровень API 14).
Новая библиотека v7 cardview:
  • Добавлен виджет CardView, который позволяет показывать элементы данных в соответствии с принципами Material Design.
Новая библиотека v7 recyclerview:
  • Добавлен виджет RecyclerView, который позволяет просматривать ограниченный объем данных из большого набора в виде списка.
Новая библиотека палитр v7:
  • Добавлен класс Palette, который позволяет извлекать основные цвета из изображения.
Новая библиотека Leanback версии 17:

Версия 20

Июль 2014 года

Изменения в библиотеке поддержки версии 4:
  • В версии NotificationCompat.WearableExtender добавлена расширенная поддержка уведомлений для Android Wear, которая позволяет указывать в уведомлениях функции, предназначенные для носимых устройств.
  • Добавлен тег NotificationCompat.Action.WearableExtender, позволяющий добавлять действия в уведомления на носимых устройствах.
  • Добавлена функция NotificationManagerCompat, которая позволяет отправлять уведомления с поддержкой функций носимых устройств.
  • Добавлено разрешение RemoteInput, которое позволяет мобильному устройству получать голосовой ввод из уведомления, появляющегося на носимом устройстве.
  • Улучшена обработка тактильной обратной связи в SwipeRefreshLayout.

Версия 19.1.0

Март 2014 г.

Изменения в библиотеке поддержки версии 4:
  • Добавлен класс SwipeRefreshLayout, который позволяет пользователям обновлять содержимое представления с помощью вертикального жеста смахивания.
  • Устранены проблемы со специальными возможностями в выдвижных меню.
Изменения в библиотеке appcompat версии 7:
  • Исправлены проблемы с фоном панели действий.

Версия 19.0.1

Декабрь 2013 г.

Изменения в библиотеке поддержки версии 4:
  • Улучшена PrintHelper за счет добавления асинхронной обработки печати.
  • Исправлена аппроксимация класса DrawerLayout для метода addChildrenForAccessibility().
  • Исправлено зеркальное отображение слайдов в ActionBarDrawerToggle.
  • Исправлена ошибка, возникавшая при удалении элемента из итератора коллекции.
Изменения в библиотеке mediarouter версии 7:
  • Улучшенное определение маршрута благодаря использованию полного названия компонента в поле MediaRouteProvider.ProviderMetadata.
  • Обновление MediaRouteChooserDialog позволяет скрывать отключенные маршруты.
Изменения в библиотеке RenderScript версии 8
  • Добавлено распространение ошибок для уровня RenderScript.

Версия 19

Октябрь 2013 г.

Изменения в библиотеке поддержки версии 4:
  • Добавлена поддержка внешних API хранилища с помощью getObbDirs(), getExternalFilesDirs(), getExternalCacheDirs() и getStorageState(). На устройствах с Android 4.3 (уровень API 18) и более ранних версий эти вспомогательные методы всегда возвращают один объект файла. При работе на Android 4.4 (уровень API 19) и более поздних версиях эти методы могут возвращать более одного объекта файла.
  • Добавлен класс PrintHelper, который работает с API печати и позволяет печатать изображения с минимальным количеством кода.
  • Добавлена поддержка перетаскивания для открытия всплывающих меню. Дополнительную информацию можно найти по адресам PopupMenuCompat и ListPopupWindowCompat.
  • Улучшена поддержка специальных возможностей: добавлен метод findFocus() в AccessibilityNodeProviderCompat и метод getLiveRegion() в AccessibilityNodeInfoCompat.
  • Добавлен вспомогательный класс ScaleGestureDetectorCompat для доступа к новым методам масштабирования.
  • Исправлена проблема с символом ActionBarDrawerToggle при отображении текста на языках с направлением письма справа налево.
  • Изменен параметр AutoScrollHelper, позволяющий обрабатывать события касания или передавать их другим представлениям.
Изменения в библиотеке mediarouter версии 7:
  • Добавлена поддержка очереди воспроизведения медиаконтента, установки значений заголовков HTTP и продолжительности воспроизведения медиаконтента.
  • Добавлены явные действия для начала, получения и завершения сеанса, позволяющие управлять сеансами воспроизведения медиаконтента с помощью медиамаршрутизатора.

Исправление 18

Июль 2013 г.

Изменения в библиотеке поддержки версии 4:
  • Пользовательский интерфейс
    • Добавлен символ BidiFormatter для обработки текстовых строк, в которых сочетаются тексты с форматированием справа налево и слева направо.
    • Изменено поведение ViewPager, чтобы лучше обрабатывать случаи, когда ширина пейджера равна нулю при первоначальной обработке макета.
    • Изменения в DrawerLayout и SlidingPaneLayout: теперь при редактировании кода проекта не возникает исключений для сбора данных.
  • Специальные возможности
    • Добавлен тег ExploreByTouchHelper, чтобы упростить реализацию специальных возможностей для пользовательских представлений.
    • Исправлена проблема, из-за которой ViewPager неправильно заполнял события доступности TYPE_VIEW_SCROLLED.
    • Исправлено исключение указателя null в теге ViewPager при заполнении события доступности.
    • Упрощенный AccessibilityNodeInfoCompat путем изменения входных данных CharSequence на объекты String.
    • Устаревший конструктор AccessibilityRecordCompat , который использовал Object в качестве входных данных.
  • Медиа
    • Добавлен вспомогательный класс TransportMediator для управления воспроизведением медиаконтента, например для запуска, приостановки, пропуска и других действий.
    • Добавлен параметр DisplayManagerCompat для управления выводом изображения на один или несколько экранов устройства.
  • Другие изменения
    • Добавлен вспомогательный класс WakefulBroadcastReceiver для реализации стандартного способа обнаружения события пробуждения устройства и передачи задачи в Service. При этом устройство не переходит в спящий режим до завершения передачи.
    • В AsyncTaskLoader добавлены два новых API: commitContentChanged() и rollbackContentChanged(). Они помогают обрабатывать фоновые обновления для изменений данных, которые впоследствии отменяются.
Новая библиотека v7 appcompat:
  • Добавлен элемент ActionBar, позволяющий реализовать шаблон дизайна интерфейса панели действий в Android 2.1 (уровень API 7) и более поздних версиях. Чтобы использовать этот класс, реализуйте свое действие, расширив новый класс ActionBarActivity.
Новая библиотека медиамаршрутизатора v7:

Добавлена новая библиотека mediarouter, которая поддерживает предварительную версию Google Cast для разработчиков. API библиотеки mediarouter версии 7 позволяют управлять маршрутизацией медиаканалов и потоков с текущего устройства на внешние экраны, колонки и другие устройства. Библиотека совместима с Android 2.1 (уровень API 7) и более поздними версиями. Подробнее о библиотеке mediapouter V7…

API библиотеки mediarouter версии 7, представленные в библиотеке поддержки версии 18, могут быть изменены в более поздних версиях библиотеки поддержки. В настоящее время мы рекомендуем использовать библиотеку только в связи с предварительной версией Google Cast для разработчиков.

Версия 13

Май 2013 г.

Изменения в библиотеке поддержки версии 4:
  • Добавлен элемент DrawerLayout для создания панели навигации, которую можно выдвинуть с края окна.
  • Добавлен виджет SlidingPaneLayout для создания связанных сводных и подробных представлений, которые корректно адаптируются к экранам разных размеров.
  • Добавлена функция ActionBarDrawerToggle, которая объединяет функции DrawerLayout и ActionBar.
  • Добавлен новый общий компонент ViewDragHelper для перетаскивания представлений в родительском представлении.
  • Добавлено свойство ScrollerCompat для поддержки совместимости с Scroller и OverScroller.
  • Добавлен параметр FileProvider, позволяющий обмениваться частными файлами между приложениями.
  • Обновлено ViewPager, чтобы при изменении связанного класса PagerAdapter без вызова notifyDataSetChanged() вызывалось исключение.
  • Исправлена проблема с сортировкой рисунков детей в ViewPager.
  • Исправлена ошибка GestureDetectorCompat, из-за которой не отправлялись пропущенные вызовы onSingleTapConfirmed(MotionEvent) между событиями тайм-аута нажатия и долгого нажатия.
Новая библиотека GridLayout v7:
  • Добавлен объект GridLayout для поддержки объекта макета GridLayout.
  • Добавлен элемент android.support.v7.widget.Space, который можно использовать для создания пустых областей в объекте макета GridLayout.

Версия 12

Февраль 2013 г.

Изменения в библиотеке поддержки версии 4:
  • Улучшено взаимодействие с ViewPager.
  • Исправлена ошибка, из-за которой при нажатии клавиши ViewPager выбиралась неверная страница.
  • Исправлено использование метода removeView() при создании макета для ViewPager.
  • Исправлена ошибка в SearchViewCompat, из-за которой при использовании кнопки "Назад" для закрытия не удалялся текст поиска. Исправление применяется только к API хоста уровня 14 и выше.

Версия 11

Ноябрь 2012 г.

Изменения в библиотеке поддержки версии 4:
  • Пользовательский интерфейс
    • Добавлена поддержка вложенных классов Fragment.
    • Улучшена отладка FragmentManager.
    • Исправлена проблема в FragmentTabHost, из-за которой взаимодействие с фрагментом и вкладкой могло привести к потере состояния ListView.
    • Исправлена проблема с подсказкой, которая показывалась пользователю в приложении "FragmentStatePagerAdapter".
    • В интерфейс ViewPager добавлен интерфейс PageTransformer, позволяющий приложениям задавать собственное поведение при прокрутке.
    • Добавлены новые функции и исправления в TaskStackBuilder из текущего выпуска.
    • Исправлена ошибка, из-за которой PagerTitleStrip неправильно отслеживал PagerAdapter, используемый в данный момент.
    • Устранены проблемы с мерцанием экрана, позиционированием и обрезкой текста при использовании элемента PagerTitleStrip.
    • Исправлена ошибка: теперь при отрисовке подчеркивания свойство PagerTabStrip учитывает отступы.
  • Специальные возможности
    • Добавлена поддержка новых типов жестов специальных возможностей и событий касания в AccessibilityEventCompat.
    • В ViewCompat добавлена поддержка новых API специальных возможностей.
    • В ViewCompat добавлена поддержка метода performAccessibilityAction().
  • Добавлена поддержка жестов с помощью GestureDetectorCompat.
  • Добавлена поддержка атомарных операций с файлами с помощью нового класса AtomicFile.
  • Добавлена поддержка полного набора методов make в IntentCompat.
  • В класс утилит LruCache добавлен метод trimToSize().
  • Обновлено ConnectivityManagerCompat, чтобы получать NetworkInfo из трансляции CONNECTIVITY_ACTION.

Версия 10

Август 2012 г.

Изменения в библиотеке поддержки версии 4:
  • Добавлена поддержка функций уведомлений, представленных в Android 4.1 (уровня API 16), с дополнениями к NotificationCompat.

Редакция 9

Июнь 2012 г.

Изменения в библиотеке поддержки версии 4:
  • Поддержка интерфейса
    • Добавлена поддержка PagerTabStrip, которая предоставляет расширенные возможности по сравнению с PagerTitleStrip.
    • Исправлены различные ошибки, связанные с PagerTitleStrip и PagerTabStrip, в том числе с вариантом setAllCaps, выравниванием заголовка, внешним видом, минимальной шириной и навигацией с помощью сенсорного экрана.
    • Добавлена поддержка полей страницы ViewPager, которые помогают классу ViewPager обеспечивать поддержку разбивки на страницы для контента с большим диапазоном горизонтальной прокрутки, например для карты.
    • Исправлено множество ошибок для ViewPager, в том числе проблемы с изменением размера и набора данных, позиционированием страницы, взаимодействием с пользователем, отслеживанием прокрутки и навигацией с помощью клавиатуры.
    • Исправлено множество ошибок для Fragment, в том числе правильная обработка onActivityResult(), когда целевой фрагмент больше не существует, отправка событий выбора невидимым фрагментам, улучшенное поведение FragmentTransaction.replace() и улучшенная обработка состояния для фрагментов, которые перемещаются за пределы видимости.
    • В ViewCompat добавлена поддержка метода postOnAnimation().
    • В версии NavUtils добавлена функция навигации Вверх, которая доступна в Android 4.1 (уровень API 16) и более поздних версиях.
  • Специальные возможности
    • Обновлены классы поддержки специальных возможностей, в том числе AccessibilityNodeInfoCompat, чтобы учесть исправления, внесенные в Android 4.1 (уровень API 16).
    • Добавлена поддержка действий прокрутки для специальных возможностей в ViewPager.
  • Общие улучшения

Версия 8

Апрель 2012 г.

Изменения в библиотеке поддержки версии 4:
  • Исправлены флаги намерений для объектов PendingIntent, созданных TaskStackBuilder.
  • Удалены неиспользуемые атрибуты из проектов библиотеки gridlayout, чтобы обеспечить возможность сборки библиотеки с уровнем API 7 и выше.
  • Добавлены файлы .classpath и .project для проекта библиотеки gridlayout.

Версия 7

Март 2012 г.

Изменения в библиотеке поддержки версии 4:
  • Добавлен класс ShareCompat, который предоставляет вспомогательные классы для отправки и получения контента для приложений, позволяющих делиться информацией в социальных сетях. В нем также есть новые метаданные для указания исходного приложения. Кроме того, этот класс обеспечивает совместимость с новым классом ShareActionProvider в Android 4.0.
  • Добавлены поля NavUtils и TaskStackBuilder, чтобы обеспечить поддержку реализации рекомендаций по дизайну Android для навигации. В частности, в них рассказывается, как реализовать кнопку Назад на панели действий в разных версиях. Пример реализации этого шаблона можно найти в образце AppNavigation (<em><sdk></em>/samples/<em><platform></em>/AppNavigation).
  • Добавлен класс NotificationCompat.Builder, чтобы обеспечить совместимость с классом помощника Notification.Builder из Android 3.0 для создания стандартных системных уведомлений.

Версия 6

Декабрь 2011 г.

Примечание. Справочная информация об API библиотеки поддержки теперь доступна вместе со справочной информацией о фреймворке, например: android.support.v4.app.

Изменения в библиотеке поддержки версии 4:
  • Изменения в ViewPager:
    • Добавлена поддержка дополнительных декоративных представлений для ViewPager. Декоративные элементы можно добавить в качестве дочерних элементов пейджера в макете XML.
    • Добавлен элемент PagerAdapter.getPageTitle() для указания строк заголовков страниц. По умолчанию для каждой страницы заголовок не задан.
    • Добавлен неинтерактивный заголовок PagerTitleStrip, который можно добавить как дочерний элемент ViewPager. Разработчики могут указать внешний вид и цвет текста, а также размер макета и гравитацию.
    • Обновлены методы PagerAdapter, чтобы принимать объекты ViewGroup, а не View, чтобы избежать приведения типов в реализациях адаптера.
    • Обновлено поведение клавиши ViewPager при пролистывании в стиле панели запуска.
    • Исправлены ошибки, связанные с взаимодействием с пользовательским интерфейсом и автоматизацией тестирования.
  • Поддержка фрагментов:
    • Метод setStartDeferred() изменен на setUserVisibleHint(boolean).
    • Добавлен отложенный запуск для страниц, которые не показываются на экране, чтобы повысить эффективность.
  • Поддержка API специальных возможностей:
    • Методы AccessibilityDelegateCompat теперь возвращают пустые списки, а не значение null.
    • Добавлены новые API, необходимые для примеров версии 4.

Версия 5

Декабрь 2011 г.

Изменения в библиотеке поддержки версии 4:

Версия 4

Октябрь 2011 г.

Изменения в библиотеке поддержки версии 4:
  • В EdgeEffect добавлена поддержка EdgeEffectCompat.
  • Добавлен тег LocalBroadcastManager, позволяющий приложениям легко регистрировать и получать намерения в рамках одного приложения, не транслируя их глобально.
  • В ViewCompat добавлена поддержка проверки и настройки режимов прокрутки для View на устройствах Android 2.3 и более поздних версий.
  • Изменения в API фрагментов:
    • Добавлены новые API для управления видимостью новых меню.
    • Добавлены API для создания пользовательских анимаций.
    • В FragmentActivity добавлены API для сохранения пользовательских данных экземпляра, не относящихся к конфигурации.
    • Исправлены различные ошибки.
  • Исправлена ошибка Loader, из-за которой возникали проблемы при отмене AsyncTask на платформе Froyo и более ранних версиях. В коде поддержки теперь используется собственная версия AsyncTask, чтобы обеспечить одинаковое поведение на всех версиях платформы.

Версия 3

Июль 2011 г.

Изменения в библиотеке поддержки версии 4:
  • Добавлена поддержка Fragment.SavedState
  • Добавлена поддержка MotionEventCompat для новых API MotionEvent
  • Добавлен VelocityTrackerCompat для поддержки более новых API VelocityTracker
  • Добавлен ViewConfigurationCompat для поддержки более новых API ViewConfiguration
  • Новые API (доступны только в библиотеке поддержки), которые позволяют создавать интерфейсы с горизонтальной разбивкой на страницы, чтобы пользователи могли переходить между представлениями контента, проводя пальцем влево и вправо. Для этого можно использовать следующие классы:
    • ViewPager: ViewGroup, который управляет макетом дочерних представлений, между которыми пользователь может переключаться.
    • PagerAdapter – адаптер, который заполняет ViewPager представлениями, соответствующими каждой странице.
    • FragmentPagerAdapter – расширение PagerAdapter для переключения между фрагментами.
    • FragmentStatePagerAdapter: расширение PagerAdapter для переключения между фрагментами, использующее поддержку Fragment.SavedState из библиотеки.
Новая библиотека поддержки v13:
  • Включает FragmentPagerAdapter и FragmentStatePagerAdapter для поддержки горизонтальной прокрутки.

    Они полностью идентичны API, добавленным в библиотеку поддержки версии 4, но в Android 3.2 используют другие компоненты платформы. Используйте эту библиотеку вместо v4, если вы разрабатываете приложение для Android 3.2 и более поздних версий (все остальные API из библиотеки v4 уже доступны на уровне API 13).

Версия 2

Май 2011 г.

Изменения в библиотеке версии 4:

Версия 1

Март 2011 г.

Первый выпуск с библиотекой v4.