Archivo de revisión de la biblioteca de compatibilidad

En esta página, se proporcionan detalles sobre las versiones anteriores de los paquetes de la biblioteca de compatibilidad. Para acceder a los lanzamientos más recientes, consulta Revisiones recientes de la biblioteca de compatibilidad.

Revisión 26.0.0 Beta 2

(junio de 2017)

Ten en cuenta que la revisión 26.0.0-beta2 es una versión previa al lanzamiento. Su superficie de API está sujeta a cambios y no necesariamente incluye funciones o correcciones de errores de las últimas versiones estables de la biblioteca de compatibilidad.

Importante: Las bibliotecas de compatibilidad ahora están disponibles a través del repositorio Maven de Google. No es necesario que descargues el repositorio de compatibilidad de SDK Manager. Para obtener más información, consulta Configuración de la biblioteca de compatibilidad.

API nuevas

Diferencias de API

Correcciones de errores

  • La caída del SDK de Android O provoca la pérdida de cursiva en TextViews
  • Excepción de puntero nulo durante la conexión a MediaBrowserServiceCompat
  • TextInputLayout debe establecer sugerencias en onProvideAutofillStructure()
  • Desbordamiento de pila cuando se ajusta automáticamente el tamaño de TextView en O

Revisión 26.0.0 Beta 1

(mayo de 2017)

Ten en cuenta que la revisión 26.0.0-beta1 es una versión previa al lanzamiento. Su superficie de API está sujeta a cambios y no necesariamente incluye funciones o correcciones de errores de las últimas versiones estables de la biblioteca de compatibilidad.

Importante: Las bibliotecas de compatibilidad ahora están disponibles a través del repositorio Maven de Google. No es necesario que descargues el repositorio de compatibilidad de SDK Manager. Para obtener más información, consulta Configuración de la biblioteca de compatibilidad.

Cambios importantes

  • Se quitaron FragmentActivity.setSupportMediaController() y FragmentActivity.getSupportMediaController(). Utiliza los nuevos métodos estáticos MediaControllerCompat.setMediaController() y MediaControllerCompat.getMediaController().
  • BottomNavigationView ahora llama a onNavigationItemReselected() cuando se selecciona un elemento ya seleccionado, en lugar de llamar a onNavigationItemSelected().
  • Todas las instancias del método findViewById() ahora devuelven <T extends View> T en lugar de View. Este cambio tiene las siguientes consecuencias:
    • Esto puede hacer que el código existente tenga un tipo ambiguo de datos que se muestra. Por ejemplo, si hay someMethod(View) y someMethod(TextView), el resultado de una llamada es findViewById().
    • Cuando se usa un idioma de origen Java 8, se requiere una conversión de tipos explícita a View cuando el tipo de datos que se muestra no tiene restricciones (por ejemplo, assertNotNull(findViewById(...)).someViewMethod())).
    • En las anulaciones de métodos findViewById() no finales (por ejemplo, Activity.findViewById()), será necesario actualizar el tipo de datos que se muestra.

API nuevas

  • FragmentManager y Fragment tienen un método isStateSaved() para consultar si se permitirá o no una transacción sin pérdida de estado. Eso es especialmente útil para verificar un evento onClick() antes de ejecutar cualquier transacción.
  • En AnimatedVectorDrawableCompat, se admite el movimiento de rutas. El movimiento de rutas permite que un animador de objetos cambie dos propiedades al mismo tiempo en función de una ruta; la ruta se especifica como android:pathData en el archivo XML del animador.
  • Animación basada en la física:
    • FlingAnimation nuevo que admite animar con una velocidad inicial y disminuirla sin inconvenientes.
    • Las subclases de DynamicAnimation admiten propiedades personalizadas de animación para cualquier objeto.
    • Tanto SpringAnimation como FlingAnimation ahora pueden animar un valor flotante sin requerir que se asocie con un View o un Object.

    Para obtener más información, consulta las páginas de vista previa de Animación de primavera y Animación de lanzamiento.

  • Compatibilidad de fuentes en XML:
    • ResourcesCompat.getFont permite cargar recursos de fuente, incluido el archivo XML de familia de fuentes, que pueden usarse con TextView.setTypeface().
    • Cuando se usa AppCompat, TextView admite especificar un recurso de fuente o un XML de familia de fuentes por medio del atributo XML android:fontFamily.
    • Usa el XML de familia de fuentes para crear familias de fuentes con variaciones de estilo y peso. (Si usas las clases de biblioteca de compatibilidad para hacerlo, usa los atributos app: y los atributos android:).
  • Fuentes para descargar:
    • FontsContractCompat nuevo que permite que solicites fuentes de un proveedor de fuentes en lugar de empaquetarlas en tu app.
    • Las fuentes también pueden solicitarse en XML y usarse en los diseños.
  • Biblioteca de compatibilidad de emojis:
    • EmojiCompat puede procesar un CharSequence determinado y agregar EmojiSpans.
    • EmojiTextView y otros widgets para mostrar los emojis.
    • FontRequestEmojiCompatConfig para solicitar fuentes de emojis de un proveedor de fuentes.
  • Ajuste automático de tamaño de TextView:
    • Nuevos métodos en TextViewCompat, así como atributos XML para controlar el ajuste de tamaño automático en TextView.
  • Controles de reproducción Leanback con compatibilidad de búsqueda:
    • PlaybackTransportRowPresenter nuevo que representa los controles de reproducción con una barra de búsqueda.
    • PlaybackTransportControlGlue nuevo que funciona con PlaybackTransportRowPresenter y admite búsquedas.
    • Nueva clase base PlaybackSeekDataProvider para que la app proporcione miniaturas de búsqueda a PlaybackTransportControlGlue.
  • Almacén de datos de preferencias:
    • PreferenceDataStore ahora permite implementar tu propio almacenamiento de preferencias, establecido con métodos nuevos en Preference y PreferenceManager.

Problemas conocidos

  • La integración de la compatibilidad de fuentes y emojis descargables con los Servicios de Google Play solo funciona con la versión 11 o posterior de los Servicios de Google Play, que actualmente está disponible en el programa Beta de los Servicios de Google Play.

Correcciones de errores

  • La API de MediaBrowserCompat.search() no funciona (problema 262170 de AOSP)
  • ViewCompat.postInvalidateOnAnimation() arroja una excepción (problema 80146 de AOSP)
  • onActivityCreated() llamó a fragmentos en una actividad destruida
  • RecyclerView.isComputingLayout() debe mostrar "true" durante la precarga
  • Cuando se interrumpe y se invierte una transición de Fade, View comienza la animación desde el principio. (Correcciones del marco de trabajo de Android).
  • Transition.Fade ignora la versión Alfa inicial de View (problema 221820 de AOSP)

Revisión 26.0.0 Alfa 1

(marzo de 2017)

Ten en cuenta que la revisión 26.0.0-alpha1 es una versión previa al lanzamiento. Su superficie de API está sujeta a cambios y no necesariamente incluye funciones o correcciones de errores de las últimas versiones estables de la biblioteca de compatibilidad.

Cambios importantes

Nota: La versión mínima del SDK aumentó a 14. Como resultado, muchas API que existían solo para la compatibilidad con API anteriores a 14 quedaron obsoletas. Los clientes de esas API deben migrar a sus equivalentes del marco de trabajo, como se indica en la página de referencia para cada API obsoleta.

  • El módulo support-percent quedó obsoleto. Los clientes de este módulo deberían migrar al nuevo widget ConstraintLayout, que se proporciona como un artefacto separado en SDK Manager.
  • El módulo support-fragment ya no depende del módulo support-media-compat.

API nuevas

Se agregaron muchos métodos, clases y constantes nuevos para proporcionar retrocompatibilidad con las API de plataforma agregadas en la vista previa de O.

  • IME_FLAG_NO_PERSONALIZED_LEARNING: Los IME pueden escuchar las marcas "no learning" para las apps que tienen un modo privado, como los navegadores. Esta función ayuda a los IME a entender si una app está en modo privado. De esa forma, pueden inhabilitar su funcionalidad adaptativa o de aprendizaje mientras la app está en ese modo.

Para obtener una lista completa de los cambios de API entre 25.2.0 y 26.0.0-alpha1, consulta el informe de diferencias de API de la biblioteca de compatibilidad.

Correcciones de errores

  • En algunos casos, la animación simple AutoTransition se puede interrumpir por los "saltos" de vistas. (Problema 221816 de AOSP)

Revisión 25.4.0

(junio de 2017)

Importante: Las bibliotecas de compatibilidad ahora están disponibles a través del repositorio Maven de Google. No es necesario que descargues el repositorio de compatibilidad de SDK Manager. Para obtener más información, consulta Configuración de la biblioteca de compatibilidad.

Cambios importantes

  • No se permiten executePendingTransactions(), commitNow(), popBackStackImmediate() y las llamadas de transacción similares durante los cambios de estado FragmentManager. La ejecución de reentrantes de transacciones no es segura y FragmentManager ahora aplica esto durante los cambios de estado.
  • Simultáneamente con esta versión de la biblioteca de compatibilidad, también estamos lanzando versión 1.0.2 de multidex. En esta versión, se incluyen los siguientes cambios importantes:
    • Permite el uso de multidex para el APK de instrumentación.
    • MultiDexTestRunner deja de estar disponible (se debe usar AndroidJUnitRunner en su lugar).
    • Proporciona una mejor protección contra la mala administración de extracción de archivos de la app.
    • Corrige un error que podría ocasionar archivos temporales abandonados.
    • Proporciona una instalación más rápida cuando se realiza en un proceso concurrente.
    • Corrige un error de instalación en las API nivel 19 y nivel­ 20.

API nuevas y modificadas

Se admiten la transformación y la interpolación de rutas en AnimatedVectorDrawableCompat. La transformación de rutas permite que las formas cambien de una ruta (especificada como android:valueFrom) a otra (especificada como android:valueTo) para proporcionar efectos visuales complejos y atractivos. La interpolación de rutas permite que los interpoladores de AnimatedVectorDrawableCompat se especifiquen como rutas (especificadas como android:pathData en el XML del interpolador).

Diferencias de API

Errores corregidos

  • Excepción de puntero nulo durante la conexión a MediaBrowserServiceCompat
  • La API de MediaBrowserCompat.search() no funciona (problema 262170 de AOSP)
  • Devoluciones de llamada BrowseFragment onItemClback interrumpidas en 25.3.0
  • NullPointerException mientras el usuario se desplaza hacia arriba y hacia abajo en VerticalGridView en 25.3.1
  • ClassCastException en SimpleArrayMap.allocArrays()

Revisión 25.3.1

(marzo de 2017)

Errores corregidos

  • SwitchCompat requiere una versión mínima del SDK de 14 o posterior. (Problema 251302 de AOSP)
  • El updateListener de animación basado en la física omite el primer marco.
  • La animación de la etiqueta BottomNavigationView no funciona.

Revisión 25.3.0

(marzo de 2017)

Cambios importantes

Los metadatos de la versión de la biblioteca de compatibilidad se agregarán automáticamente a AndroidManifest.xml cuando se compile desde Gradle, lo que simplifica el seguimiento de las versiones en compilaciones públicas. Por ejemplo:

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

Elementos obsoletos

En esta versión, varios métodos y clases dejaron de estar disponibles. Estas API obsoletas se quitarán en una versión futura y los desarrolladores deberían migrar a otras. Para obtener más información sobre cómo migrar fuera de una API específica, consulta la documentación.

ExifInterface
El método booleano getLatLong(float[]) ya no está disponible. En su lugar, usa el nuevo método getLatLong(), que no lleva argumentos y devuelve double[].
mediacompat
PlaybackStateCompat.Builder.setErrorMessage(CharSequence) ya no está disponible. En su lugar, usa el nuevo método setErrorMessage(int, CharSequence), que recibe un código de error y una descripción opcional.
EXTRA_SUGGESTION_KEYWORDS ya no está disponible. En su lugar, usa la función de búsqueda MediaBrowserCompat.
v7.recyclerview
El nombre de LinearLayoutManager.getInitialItemPrefetchCount() cambió a LinearLayoutManager.getInitialPrefetchItemCount(). El nombre antiguo aún es compatible, pero se quitará en una versión futura.

API nuevas y modificadas

appcompat-v7
El nuevo método ActionBarDrawerToggle.setDrawerSlideAnimationEnabled(boolean) simplifica la inhabilitación de la animación del ícono para alternar el panel lateral de navegación.
customtabs
Se agregó compatibilidad para canales de mensajes. Para obtener más información, consulta la referencia CustomTabsService.requestPostMessageChannel() y CustomTabsService.postMessage().
dynamic-animation
Nueva biblioteca de animación basada en la física que proporciona un conjunto de API para desarrollar animaciones que reaccionan dinámicamente a las entradas del usuario.
leanback-v17
Se agregó compatibilidad con fondos de paralaje. Para obtener más detalles, consulta la referencia Parallax.
Se agregó un widget TimePicker para seleccionar horarios en una interfaz de TV.
mediacompat
Se agregó funcionalidad de búsqueda. Para obtener más información, consulta la referencia MediaBrowserCompat.search() y MediaBrowserServiceCompat.onSearch().
Se agregó compatibilidad con los modos de reproducción aleatoria y repetición. Para obtener más información, consulta la referencia MediaSessionCompat.setRepeatMode() y setShuffleModeEnabled().

Errores corregidos

Revisión 25.2.0

(febrero de 2017)

Cambios importantes

Errores corregidos

  • En esta versión, se corrige un problema grave de mediarouter en el que el uso de un dispositivo A2DP y las API de enrutamiento multimedia pueden hacer que el dispositivo deje de responder y requiera un reinicio.
  • La clase FragmentManager.FragmentLifecycleCallbacks ahora es estática.

Errores corregidos

  • Mostrar una presentación de diapositivas con la duplicación de pantalla hace que el dispositivo se desconecte de la red Wi-Fi
  • El botón multimedia no manejó correctamente las apps de música que no se registraron con setMediaButtonReceiver()
  • Error VectorDrawable con recurso de string (problema 232407 de AOSP)
  • TextInputLayout superpone la sugerencia y el texto si el archivo XML establece el texto (problema 230171 de AOSP)
  • Pérdida de memoria MediaControllerCompat (problema 231441 de AOSP)
  • Falla de RecyclerViewLayoutTest.triggerFocusSearchInOnRecycledCallback()
  • RecyclerView falla cuando se reciclan contenedores de vistas (problema 225762 de AOSP)
  • getAllowGeneratedReplies() muestra de manera incorrecta "false" para acciones en un WearableExtender

Revisión 25.1.1

(enero de 2017)

Importante: Hay un error conocido en la clase android.support.v7.media.MediaRouter en las revisiones 25.1.1 y 25.1.0 de la biblioteca de compatibilidad. Si la app utiliza MediaRouter de la versión 7, debes actualizar a la revisión 25.2.0 de la biblioteca de compatibilidad, que corrige este error.

Cambios importantes

  • Las transacciones de fragmento ahora se pueden optimizar dentro de las transacciones y entre ellas. La optimización de las operaciones de transacción de fragmentos puede quitar las operaciones que se cancelan. Por ejemplo, supongamos que se ejecutan dos transacciones juntas, una que agrega un fragmento A y otra que reemplaza el fragmento A por el B. En este caso, la primera operación podría cancelarse y solo podría agregarse el fragmento B. Eso significa que el fragmento A podría no pasar por el ciclo de vida de creación/destrucción.

    Un efecto secundario de esta optimización es que los fragmentos pueden tener cambios de estado fuera del orden esperado. Por ejemplo, supongamos que una transacción agrega el fragmento A, una segunda agrega el fragmento B y una tercera quita el fragmento A. Sin la optimización, el fragmento B podría esperar que, mientras se crea, también exista el fragmento A porque el fragmento A se quitará después de que se agregue el fragmento B. Con la optimización, el fragmento B no puede estar seguro de que el fragmento A existirá mientras se está creando B, porque la optimización puede borrar la creación y la destrucción del fragmento A.

    De manera predeterminada, esta optimización está inhabilitada. Para habilitar la optimización, llama a FragmentTransaction.setAllowOptimization(true).

  • Ahora, los fragmentos pueden posponer sus transacciones y animaciones hasta que estén listas usando Fragment.postponeEnterTransition() y Fragment.startPostponedEnterTransition(). Esta API es similar a Activity.postponeEnterTransition() y Activity.startPostponedEnterTransition() cuando su uso se da con actividades de transacción.

Errores corregidos

Revisión 25.1.0

(diciembre de 2016)

Importante: Hay un error conocido en la clase android.support.v7.media.MediaRouter en las revisiones 25.1.1 y 25.1.0 de la biblioteca de compatibilidad. Si la app utiliza MediaRouter de la versión 7, debes actualizar a la revisión 25.2.0 de la biblioteca de compatibilidad, que corrige este error.

Cambios importantes

  • Los clientes de widgets RecyclerView anidados (por ejemplo, la lista de desplazamiento vertical de las listas de desplazamiento horizontal) pueden obtener importantes beneficios de rendimiento si indican a los administradores de diseño de los widgets RecyclerView internos cuántos elementos preparar antes de desplazarse en la pantalla. Llama a LinearLayoutManager.setInitialPrefetchItemCount(N), donde N es la cantidad de vistas visibles por elemento interno. Por ejemplo, si las listas horizontales internas muestran un mínimo de tres vistas y media de elementos a la vez, puedes mejorar el rendimiento llamando a LinearLayoutManager.setInitialPrefetchItemCount(4). De esa forma, permites que RecyclerView cree todas las vistas relevantes de manera anticipada, mientras el objeto RecyclerView externo se desplaza, lo que reduce considerablemente la inestabilidad durante los desplazamientos.
  • FragmentActivity.setSupportMediaController() y FragmentActivity.getSupportMediaController() ya no están disponibles. Usa los nuevos métodos estáticos MediaControllerCompat.setMediaController() y MediaControllerCompat.getMediaController().
  • Cuando un cliente especifica un tono de widget mediante el ajuste de tonos de appcompat (por ejemplo, appcompat:buttonTint), el cliente es responsable de proporcionar todos los estados necesarios (como "inhabilitado", "presionado", etc.). Eso es coherente con la forma en que los tonos de widget se especifican cuando se usan ajustes de tono del marco de trabajo.

API nuevas y modificadas

Errores corregidos

  • La alternancia de visibilidad de contraseña falla en las pruebas de accesibilidad.
  • Appcompat no respeta state_enabled en dispositivos con versiones anteriores a Android L.
  • Se agregó un mecanismo de recuperación de foco a RecyclerView. Esto también solucionó el foco dañado de los fragmentos pref de compatibilidad cuando se usa la navegación DPAD, como en los dispositivos Android TV.
  • Leanback: BrowseFragment falla con los encabezados inhabilitados y el adaptador vacío.
  • Appcompat: AlertDialog es demasiado ancho.
  • InputContentInfoCompat llama a requestPermission() cuando debería llamar a releasePermission().
  • MediaBrowserCompat falla.
  • CoordinatorLayout mide/implementa vistas cuando la visibilidad está configurada en GONE.
  • No se pudo ajustar el tono de AnimatedVectorDrawableCompat en el nivel de API inferior a 24
  • La biblioteca Leanback activa errores falsos de lint
  • La biblioteca de paletas provocó errores de prueba en todos los niveles de API
  • RecyclerView falló en las pruebas en Leanback
  • RecyclerView falla cuando se reciclan contenedores de vistas (problema 225762 de AOSP)
  • Fragment.onDestroy() no llamó al fragmento en la pila de actividades
  • La malla de CollapsingToolbarLayout no se dibuja cuando se contrae
  • CoordinatorLayout.offsetChildByInset() arroja IllegalArgumentException
  • Cuando se animan elementos RecyclerView, se separan los RecyclerView internos para evitar precargas futuras
  • Los elementos RecyclerView adjuntos no pueden anidarse ni precargarse
  • Los datos de precarga para elementos RecyclerView anidados se descartan durante el primer diseño
  • La precarga de RecyclerView falla si dos eventos de arrastre llegan a la misma posición
  • RecyclerView debe diseñarse de manera especulativa mientras se procesa RenderThread
  • Los recursos de color de configuración nocturna convertidos en elementos de diseño no siempre se purgan correctamente de la caché de recursos
  • FloatingActionButton: La configuración programática de BackgroundTintList no funciona correctamente (problema 227428 de AOSP)
  • TextInputLayout: No se está configurando el tipo de letra para ErrorView (problema 227803 de AOSP)
  • TextInputLayout siempre recurre al color de error claro por debajo de la API nivel 23 (problema 221992 de AOSP)
  • FloatingActionButton se muestra como presionado cuando el puntero sale

Puedes consultar una lista completa de las correcciones públicas de errores en el Seguimiento de problemas de AOSP.

Elementos obsoletos

En esta versión, varios métodos y clases dejaron de estar disponibles. Estas API obsoletas se quitarán en una versión futura y los desarrolladores deberían migrar a otras. Para obtener más información sobre cómo migrar fuera de una API específica, consulta su documentación.

Revisión 25.0.1

(noviembre de 2016)

Errores corregidos

  • La opción TextInputLayout de activar o desactivar la contraseña ahora está inhabilitada de forma predeterminada para evitar sobrescribir innecesariamente los elementos de diseño final especificados por el desarrollador. Se puede habilitar de forma manual por medio del atributo XML de passwordToggleEnabled.
  • Los elementos BottomNavigationView ahora tienen una sola línea para coincidir con la especificación de materiales.
  • RecyclerView falla durante la precarga si el administrador de diseño es nulo.
  • La elevación de BottomNavigationView ahora está configurada correctamente. (Problema 226182 de AOSP)
  • BottomNavigationView falla cuando se agregan elementos de menú de manera programática. (Problema 225731 de AOSP)
  • Se corrigió para elementos de diseño compuesto de izquierda y derecha de TextInputLayout. (Problema 225836 de AOSP)
  • RecyclerView falla cuando se reciclan los contenedores de vistas. (Problema 225762 de AOSP)
  • Leanback: Con frecuencia, TalkBack dice la palabra "null" en las vistas de pantalla dividida.
  • RecyclerView: Problemas de procesamiento en Android Studio. (Problema 225753 de AOSP)
  • BottomNavigationView sigue mostrando el elemento de menú como seleccionado después de que onNavigationItemSelected() muestra "false". (Problema 225898 de AOSP)
  • ForwardingListener arroja NoSuchMethodError. (Problema 225647 de AOSP)
  • TextInputEditText no muestra sugerencias en el modo de extracción IME. (Problema 221880 de AOSP)

Puedes consultar una lista completa de las correcciones públicas de errores en el Seguimiento de problemas de AOSP.

Revisión 25.0.0

(octubre de 2016)

Cambios importantes

  • El constructor ContextCompat se protegió. No se debe crear una instancia pública de esta clase, pero es posible que la amplíen las bibliotecas de compatibilidad que se orienten a niveles de API más nuevos.
  • El constructor ActivityCompat se protegió. No se debe crear una instancia pública de esta clase, pero es posible que la amplíen las bibliotecas de compatibilidad que se orienten a niveles de API más nuevos.
  • getReferrer(Activity) se hizo estático.
  • Se quitó android.support.design.widget.CoordinatorLayout.Behavior.isDirty(CoordinatorLayout, V). Se deben quitar todas las implementaciones cliente de este método.
  • Se quitó android.support.v4.media.session.MediaSessionCompat.obtain(Context, Object). Los usos deben reemplazarse por el método con nombre más apropiado fromMediaSession().
  • Se quitó android.support.v4.media.session.MediaSessionCompat.QueueItem.obtain(Object). Los usos deben reemplazarse con el método con nombre más apropiado MediaSessionCompat.QueueItem#fromQueueItem.
  • Se quitó android.support.v7.widget.Space. Los usos deben reemplazarse con android.support.v4.widget.Space.

API nuevas

  • La clase android.support.design.widget.BottomNavigationView implementa el patrón de navegación inferior de la especificación de Material Design.
  • El paquete android.support.v13.view.inputmethod nuevo incluye clases para acceder a funciones android.view.inputmethod.InputConnection introducidas después de la API nivel 23.
  • La clase android.v7.widget.RecyclerView.DividerItemDecoration proporciona una implementación básica para divisores horizontales o verticales entre elementos.
  • Nuevos estilos decorados en android.support.v7.app.NotificationCompat, DecoratedCustomViewStyle y DecoratedMediaCustomViewStyle, se agregaron clases espejo en la plataforma de API 24.

Errores corregidos

Puedes consultar una lista completa de las correcciones públicas de errores en el Seguimiento de problemas de AOSP.

Revisión 24.2.1

(septiembre de 2016)

Errores corregidos:

Puedes consultar una lista completa de las correcciones públicas de errores en el Seguimiento de problemas de AOSP.

Revisión 24.2.0

agosto de 2016

La versión 24.2.0 incluye los siguientes cambios:

Nota: En la versión 24.2.0, se quita la compatibilidad con Android 2.2 (API nivel 8) y versiones anteriores. Las clases y los métodos que existen solo para funcionar con esas versiones del sistema ahora están marcados como obsoletos y ya no deberían usarse. Es posible que se quiten esos métodos y clases obsoletos en una versión futura.

División de la biblioteca de compatibilidad de la versión 4

En esta versión, se divide la biblioteca de compatibilidad de la versión 4 en varios módulos más pequeños:

support-compat
Proporciona wrappers de compatibilidad para las nuevas API de marco de trabajo, como Context.getDrawable() y View.performAccessibilityAction().
support-core-utils
Proporciona una serie de clases de utilidad, como AsyncTaskLoader y PermissionChecker.
support-core-ui
Implementa una variedad de componentes relacionados con la IU, como ViewPager, NestedScrollView y ExploreByTouchHelper.
support-media-compat
Es un backport del marco de trabajo de multimedia, incluidos MediaBrowser y MediaSession.
support-fragment
Es un backport del marco de trabajo de fragmentos. Este módulo tiene dependencias de support-compat, support-core-utils, support-core-ui y support-media-compat.

Para tener retrocompatibilidad, si incluyes support-v4 en la secuencia de comandos Gradle, tu APK incluirá todos esos módulos. Sin embargo, a fin de reducir el tamaño del APK, te recomendamos que solo enumeres los módulos específicos que necesita tu app.

Actualizaciones de API

Cambios en el comportamiento

  • Si usas la funcionalidad diurna/nocturna de la biblioteca de appcompat, el sistema ahora volverá a crear tu actividad automáticamente cuando cambie el modo diurno/nocturno (ya sea por la hora del día o por una llamada a AppCompatDelegate.setLocalNightMode()).
  • Snackbar ahora dibuja detrás de la barra de navegación si la barra de estado es translúcida.

Biblioteca MediaRouter

Los dispositivos Bluetooth ya no aparecen como rutas de medios. El enrutamiento de audio a dispositivos Bluetooth ahora se controla únicamente en el nivel del sistema Android.

Elementos obsoletos

Las clases y los métodos obsoletos están sujetos a eliminación en una versión futura. Debes dejar de usar estas API lo antes posible.

  • Varios métodos en las siguientes clases solo se requerían para la API nivel 8 y versiones anteriores, y ya no deberían usarse. En su lugar, usa las implementaciones del marco de trabajo.
    • android.support.v4.view.KeyEventCompat: Reemplaza con KeyEvent
    • android.support.v4.view.MotionEventCompat: Usa MotionEvent
    • android.support.v4.view.ViewCompat: Usa View
    • android.support.v4.view.ViewConfigurationCompat: Usa ViewConfiguration
  • AccessibilityServiceInfoCompat.getDescription() dejó de estar disponible a favor de AccessibilityServiceInfoCompat.loadDescription(), que devuelve una descripción localizada correctamente.
  • No debes crear una instancia de la clase ActivityCompat directamente. El método getReferrer(Activity) no estático se convertirá en estático en una versión futura.
  • CoordinatorLayout.Behavior.isDirty() dejó de estar disponible y CoordinatorLayout ya no lo invoca. Se deben quitar todas las implementaciones, así como cualquier llamada a este método.
  • MediaSessionCompat.obtain() dejó de estar disponible y se reemplazó por el método fromMediaSession(), que tiene un nombre más apropiado.
  • MediaSessionCompat.QueueItem.obtain() dejó de estar disponible y se reemplazó por el método fromQueueItem(), que tiene un nombre más apropiado.
  • Varias clases abstractas dejaron de estar disponibles y se reemplazaron por interfaces que reflejan con más precisión sus equivalentes de marco de trabajo.
  • CustomTabsSession.setToolbarItem() dejó de estar disponible y se reemplazó por setSecondaryToolbarViews() basado en RemoteViews.

Correcciones de errores

En la versión 24.2.0, se corrigieron los siguientes problemas conocidos:

  • Asegúrate de que se muestre el indicador SwipeRefreshLayout cuando se llame a setRefreshing(true) antes del primer pase de medición (problema 77712 de AOSP)
  • Evita que TabLayout parpadee cuando se cambie de página (problema 180454 de AOSP)
  • Evita ClassNotFoundException para desalinear SavedState en API nivel 11 o versiones anteriores (problema 196430 de AOSP)

Puedes consultar una lista completa de las correcciones públicas de errores en el Seguimiento de problemas de AOSP.

Revisión 24.1.1

julio de 2016

Errores corregidos:

  • En la versión 24.1.0, se soluciona un problema que afectaba a los ID de recursos compartidos entre las bibliotecas de compatibilidad. Este problema hizo que las apps que dependían de bibliotecas de compatibilidad con recursos (como diseño y appcompat) tuvieran problemas causados por discrepancias de ID de recursos.

Revisión 24.1.0

julio de 2016

Cambios en la biblioteca de compatibilidad de la versión 4:

Errores corregidos:

Revisión 24.0.0

junio de 2016

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se agregó Fragment.commitNow() para la confirmación síncrona.
  • Se agregó NotificationCompat.MessagingStyle para las conversaciones entre varias partes.
  • Se agregaron NotificationManagerCompat.areNotificationsEnabled() y getImportance()
  • MediaSessionCompat ahora refleja la funcionalidad de MediaSession y ya no llama a setMediaButtonReceiver() automáticamente.

Nota: Solo MediaBrowserServiceCompat en la versión 24.0.0 es compatible con versiones futuras de Android más allá de la API nivel 24. Si usas versiones posteriores, actualiza a esta versión para garantizar la compatibilidad.

En la biblioteca appcompat de la versión 7:
  • Se agregó compatibilidad con objetos ColorStateList temáticos de XML
Cambios para la biblioteca de compatibilidad de diseño:
Cambios en la biblioteca Leanback de la versión 17:
  • Se agregó OnboardingFragment para proporcionar flujo de bienvenida de primera ejecución y configuración
Cambios para las pestañas personalizadas:
  • Se agregó compatibilidad para proporcionar una jerarquía de RemoteViews en la barra de herramientas secundaria
  • Se agregó CustomTabsClient.connectAndInitialize() para la preparación de una línea

Revisión 23.4.0

mayo de 2016

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se solucionó el problema por el cual se agregaban fragmentos en el orden incorrecto (Problema 206901)
  • Se solucionó el problema por el que la barra de la app no se dibujaba después de que el usuario la desplazaba fuera de la pantalla. (Problema 178037)
En la biblioteca appcompat de la versión 7:
Cambios para la biblioteca de compatibilidad de diseño:
Cambios de la biblioteca de elementos de diseño de vectores:

Revisión 23.3.0

abril de 2016

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se agregó AppLaunchChecker para ayudar a hacer un seguimiento de cómo el usuario inició la app en el pasado. hasStartedFromLauncher() te informa si el usuario inició tu app desde la pantalla principal anteriormente o si solo se inició por otros medios (por ejemplo, para ver URL web específicas).
  • Se corrigió una filtración de memoria en MediaBrowserServiceCompat.mConnections. (Problema 205220)
  • Se solucionó un problema en el que ViewPager no tenía en cuenta los márgenes de la página cuando se daba vuelta la página. (Problema 203816)
  • Fragment.onRequestPermissionsResult() ahora se publica en fragmentos secundarios.
En la biblioteca appcompat de la versión 7:
Cambios en la biblioteca de mediarouter de la versión 7:
Cambios para la biblioteca de preferencias de la versión 7:
Cambios en la biblioteca de recyclerview de la versión 7:
Cambios para la biblioteca de compatibilidad de diseño:

Revisión 23.2.1

marzo de 2016

Cambios en la biblioteca de compatibilidad de la versión 4:
En la biblioteca appcompat de la versión 7:
  • Se revirtió la dependencia de los elementos vectoriales para que los desarrolladores que usan la biblioteca appcompat no se vean obligados a usar VectorDrawable y los indicadores de compilación asociados.
  • Se corrigió un problema de compatibilidad con el Modo nocturno y la API nivel 23. (Problema 201910)
  • Se solucionó un problema de compatibilidad con SwitchCompat y la API nivel 7. (Problema 201942)
  • Se solucionó un problema con la propagación de los valores de configuración en los objetos de recursos Problema 201928
  • Se corrigió un problema de compatibilidad en el que el botón de cancelación de android.support.v7.app.NotificationCompat.MediaStyle se volvía invisible en la API nivel 21 o versiones anteriores. (Problema 202156)
  • Se corrigió una falla de compatibilidad con AppCompatSpinner en la API nivel 21 o versiones anteriores. (Problema 202246)
  • Se solucionó un problema por el cual el estilo app:textAllCaps = "false" no funcionaba. (Problema 202117)
  • Se corrigió una falla durante el restablecimiento de SearchView. (Problema 201836)
  • Se corrigió una filtración de memoria que se producía cuando se ajustaba el tono de los elementos de diseño mediante AppCompat. (Problema 202379)
  • Se solucionó un problema con KeyEvent en la API nivel 11 y en versiones anteriores. (Problema 202939)
Cambios para la biblioteca cardview de la versión 7:
Cambios en la biblioteca de recyclerview de la versión 7:
Cambios en la biblioteca de mediarouter de la versión 7:
Cambios en la biblioteca Leanback versión 17:
  • Se solucionó un problema con GridLayout.onAddFocusables() que causaba la selección del elemento incorrecto.
  • Se solucionó el problema con las acciones de GuidedStepFragment que desaparecían después de contraer una acción.
Cambios para la biblioteca de compatibilidad de diseño:
Cambios para VectorDrawableCompat:
  • Se corrigió un error en el que se leía la variable incorrecta para android:tintMode. (Problema 201907)

Revisión 23.2.0

febrero de 2016

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se agregó MediaBrowserCompat para compatibilidad con MediaBrowser y MediaBrowserServiceCompat para compatibilidad con MediaBrowserService. Esto es útil cuando se conecta el servicio en segundo plano de una app de música con componentes de IU y se integra con Android Auto y Android Wear sin requerir la API nivel 21 o versiones posteriores.
  • El sistema ahora llama a onActivityResult() para un FragmentActivity anidado.
Cambios para la biblioteca de appcompat de la versión 7:
  • Se agregó la funcionalidad del Modo nocturno a la API nivel 14 y versiones posteriores. Cambia entre los temas de material claro y material oscuro según la hora del día o la configuración específica de la app.
    • Los temas diurno y nocturno se pueden encontrar aquí: <sdk>/extras/android/support/v7/appcompat/res/values/themes_daynight.xml
    • AppCompatDelegate.setDefaultNightMode(): Establece el modo predeterminado de la app pasando una de las siguientes constantes:
      • MODE_NIGHT_AUTO
      • MODE_NIGHT_NO
      • MODE_NIGHT_YES
      • MODE_NIGHT_FOLLOW_SYSTEM
    • AppCompatDelegate.setLocalNightMode(): Anula la configuración del modo nocturno para el componente de app local.
    • AppCompatDelegate.getDefaultNightMode(): Muestra el modo nocturno predeterminado.
Cambios en la biblioteca de mediarouter de la versión 7:
Cambios para la biblioteca de compatibilidad de diseño:
  • Se agregó compatibilidad para las hojas inferiores. Un complemento de interacción, BottomSheetBehavior, permite que una vista secundaria de un CoordinatorLayout funcione como hoja inferior. La clase base, BottomSheetCallback, proporciona devoluciones de llamadas para supervisar eventos de hojas inferiores.
Cambios para la biblioteca de compatibilidad de CustomTabs:
  • Las pestañas personalizadas de Chrome ahora permiten que las apps incluyan una barra inferior con botones de acción, además del botón de acción superior existente.
  • CustomTabsIntent.Builder.addToolBarItem(): Agrega un botón de acción en una pestaña personalizada. Puedes usar esta opción para agregar varios botones.
  • CustomTabsSession.setToolBarItem(): Actualiza las imágenes para los elementos de la barra de herramientas. Este método solo funcionará de manera correcta si se le da un id válido y la sesión del navegador está en primer plano.
Se agregó la biblioteca de compatibilidad de VectorDrawable:
  • Clases agregadas:
    • VectorDrawableCompat
    • AnimatedVectorDrawableCompat
  • Se agregó compatibilidad para los elementos VectorDrawable en las apps que ejecutan API nivel 7 o versiones posteriores. También se admiten los elementos AnimatedVectorDrawable en API nivel 11 o versiones posteriores. Los elementos vectoriales pueden ser mucho más pequeños que los elementos de imágenes y deberían ayudar a disminuir el tamaño de la app, ya que reducen la cantidad de elementos necesarios para admitir varias pantallas de dispositivos.
  • Ahora, esta biblioteca es una dependencia de la biblioteca de AppCompat de la versión 7, lo que permite que los desarrolladores y AppCompat usen con facilidad elementos de diseño vectoriales. Para usar VectorDrawableCompat en un ImageButton o ImageView, usa el atributo XML app:srcCompat o el método setImageResource().
  • Para seguir haciendo referencia a ID de atributos en API nivel 20 o versiones anteriores, agrega la siguiente marca appt a tu archivo build,gradle:
    • Si estás compilando con el complemento de Android para Gradle 1.5.0 o versiones anteriores, agrega lo siguiente al archivo 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"
            }
          }
          
    • Si estás compilando con el complemento de Android para Gradle 2.0.0 o una versión posterior, agrega lo siguiente al archivo build.gradle:
    •     android {
            defaultConfig {
              vectorDrawables.useSupportLibrary = true
            }
          }
          
Cambios en la biblioteca Leanback de la versión 17:
  • Se agregaron nuevas funciones a GuidedStepFragment, que es un componente que guía a los usuarios en una decisión o una serie de decisiones:
    • Se agregaron acciones de botones a GuidedAction:
      • GuidedStepFragment.setButtonActions(): Establece una lista de botones GuidedAction que el usuario puede seleccionar en la vista Acciones.
    • Los campos de descripción ahora son editables:
      • GuidedAction.Builder.descriptionEditable(): Cuando se pasa true, establece que la descripción de la acción sea editable.
      • GuidedAction.getEditDescription(): Muestra la descripción editable como un CharSequence.
    • Se agregaron listas desplegables de subacciones:
      • GuidedAction.setSubActions(): Establece una lista de GuidedAction como un menú desplegable de subacciones.
  • Se agregó el widget GuidedDatePickerAction para la funcionalidad DatePicker:
    • La fecha se selecciona mediante columnas de año, mes y día, y tiene un rango personalizable.
    • GuidedDatePickerAction.Builder: Clase compiladora para el objeto GuidedDatePickerAction.
    • GuidedDatePickerAction.Builder.datePickerFormat(String datePickerFormat): Establece el formato de fecha deseado pasando el String de los tres caracteres apropiados, por ejemplo, “YMD” o “MDY”. También puedes usar el atributo XML datePickerFormat.
Cambios en la biblioteca de recyclerview de la versión 7:
  • RecyclerView ahora tiene una función de participación denominada AutoMeasure que permite que RecyclerView.LayoutManager agrupe fácilmente el contenido o maneje distintas especificaciones de medición proporcionadas por el elemento superior de RecyclerView. Es compatible con todas las capacidades de animación existentes de RecyclerView.
    • Si tienes un RecyclerView.LayoutManager personalizado, llama a setAutoMeasureEnabled(true) para comenzar a usar la nueva API de AutoMeasure. Todos los objetos incorporados de RecyclerView.LayoutManager permiten la medición automática de forma predeterminada.
    • RecyclerView.LayoutManager ya no ignora algunas configuraciones de RecyclerView.LayoutParams, como MATCH_PARENT en la dirección de desplazamiento.

      Nota: Estas restricciones que se quitaron pueden causar un comportamiento inesperado en tus diseños. Asegúrate de especificar los parámetros de diseño correctos.

  • Cuando actualizas un RecyclerView.ViewHolder con información de carga útil, DefaultItemAnimator ahora inhabilita las animaciones de cambio.
  • Ahora puedes modificar la velocidad de escape de ItemTouchHelper para controlar la sensibilidad de deslizamiento. Para facilitar o dificultar el deslizamiento, anula getSwipeEscapeVelocity(float defaultValue) y modifica defaultValue.

Revisión 23.1.1

noviembre de 2015

Cambios en la biblioteca de recyclerview de la versión 7:
  • Se corrigió una falla que se produce cuando realizas una acción de deslizar para descartar que proporciona la clase de utilidad ItemTouchHelper y, luego, agregas un elemento. (Problema 190500)
Cambios para la biblioteca de preferencias de la versión 7:
Cambios en la biblioteca de compatibilidad de Leanback de la versión 17:
  • Se corrigió una serie de problemas internos en esta biblioteca.
Cambios para la biblioteca de compatibilidad de diseño:
  • Se agregó el método getHeaderView a la clase NavigationView.
  • Se solucionó un problema de fondo transparente para un objeto FloatingActionButton en dispositivos con Android 4.0 (API nivel 15) o versiones anteriores. (Problema 183315)

Revisión 23.1.0

octubre de 2015

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se agregó compatibilidad con la interfaz OnScrollChangedListener al widget NestedScrollView. Permite recibir devoluciones de llamada cuando cambian las posiciones de desplazamiento X o Y.
  • Se agregó una clase MediaButtonReceiver para reenviar los controles de reproducción recibidos a un servicio que administra la clase MediaSessionCompat. La clase MediaSessionCompat tiene un constructor que puede encontrar automáticamente un receptor de botón multimedia en el manifiesto. Un receptor de botón multimedia es un elemento clave para manejar los controles de reproducción desde los controles de hardware o bluetooth.
Cambios para la biblioteca de appcompat de la versión 7:
  • Se agregaron widgets Seekbar y ImageButton de Material Design.
  • Se actualizó el widget ImageView para admitir la función de ajuste de tono.
  • Se actualizó el aspecto del widget SwitchCompat.
Cambios en la biblioteca de mediarouter de la versión 7:
  • Se agregaron las siguientes características a la clase MediaRouteChooserDialog:
    • Muestra una página de carga mientras se descubren proveedores de rutas de medios.
    • Incluye un ícono de tipo de dispositivo para facilitar la identificación del dispositivo.
    • Ordena las rutas según la frecuencia de uso en la app actual.
    • Admite el modo de paisaje.
  • Se agregaron las siguientes características a la clase MediaRouteControllerDialog:
    • Reconoce la transmisión de pantalla y proporciona una descripción adecuada.
    • Admite distintos tamaños y proporciones de imágenes de álbum, y las carga de manera asíncrona.
    • Selecciona automáticamente el color del contenido en función del color principal de la app.
    • Ajusta el diseño del cuadro de diálogo en función del espacio disponible en la pantalla del dispositivo.
    • Admite el modo de paisaje.
Cambios en la biblioteca de paletas de la versión 7:
  • Se agregó el método setRegion() para admitir la extracción de color de una región específica de un objeto Bitmap.
Cambios en la biblioteca de recyclerview de la versión 7:
  • Se agregó una API de animación mejorada a la clase ItemAnimator para mejores personalizaciones:
    • Las animaciones de cambio ya no aplican dos copias del objeto ViewHolder, lo que permite las animaciones de contenido de elementos. Además, el objeto ItemAnimator decide si quiere volver a usar el mismo objeto ViewHolder o crear uno nuevo.
    • La nueva API de registro de información brinda a la clase ItemAnimator la flexibilidad para recopilar datos en el punto correcto del ciclo de vida del diseño. Luego, esa información se pasa a las devoluciones de llamada de animación.
  • Se proporcionó un plan de transición sencillo para este cambio de API incompatible con versiones anteriores:
    • Si ya extendiste la clase ItemAnimator, puedes cambiar la clase base a SimpleItemAnimator y el código debería funcionar como antes. La clase SimpleItemAnimator proporciona la API anterior mediante la agrupación de la API nueva.
    • Se quitaron algunos métodos de la clase ItemAnimator. El siguiente código ya no se compilará:
    • Kotlin

          recyclerView.itemAnimator.supportsChangeAnimations = false
          

      Java

          recyclerView.getItemAnimator().setSupportsChangeAnimations(false)
          

      Puedes reemplazarlo con lo siguiente:

      Kotlin

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

      Java

          ItemAnimator animator = recyclerView.getItemAnimator();
          if (animator instanceof SimpleItemAnimator) {
             ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false);
          }
          
Cambios en la biblioteca de compatibilidad de preferencias de las versiones 7, 14 y 17:
  • Se quitaron las API para controlar los cuadros de diálogo de EditText.
Cambios en la biblioteca de compatibilidad de Leanback de la versión 17:
  • Se agregó una versión de la clase GuidedStepFragment para la biblioteca de compatibilidad (se extiende android.support.v4.app.Fragment) y se mejoraron las animaciones y transiciones.
  • Se actualizó la clase GuidedStepFragment para que se pueda colocar encima del contenido existente.
  • Se agregó la capacidad de anotar diferentes tipos de finalizaciones de búsqueda en la clase SearchFragment.
  • Se agregó compatibilidad con la transición escalonada de deslizamiento a la clase VerticalGridFragment.
Cambios para la biblioteca de compatibilidad de diseño:
  • Se agregó compatibilidad con el recuento de caracteres al widget TextInputLayout.
  • Se agregó compatibilidad con el ajuste de bordes a la clase AppBarLayout agregando la constante SCROLL_FLAG_SNAP. Cuando finaliza el desplazamiento, si la vista es solo parcialmente visible, se ajusta y se desplaza la vista al borde más cercano.
  • Se agregó compatibilidad para vistas personalizadas a la clase NavigationView por medio del atributo app:actionLayout o el método MenuItemCompat.setActionView().
Cambios para la biblioteca de compatibilidad de pestañas personalizadas:
  • Se agregó el método enableUrlBarHiding() a la clase CustomTabsIntent. Permite que el cliente decida si la barra de URL debe ocultarse de manera automática cuando el usuario se desplaza hacia abajo.
  • Se agregó el método setActionButton() a la clase CustomTabsSession. Permite que el cliente cambie el ícono de un botón de acción personalizado en una pestaña personalizada que ya se lanzó.
  • Se agregaron las constantes TAB_SHOWN y TAB_HIDDEN como eventos nuevos para el método onNavigationEvent de la clase CustomTabsCallback.

Revisión 23.0.1

septiembre de 2015

Cambios para la biblioteca de compatibilidad de preferencias de las versiones 7 y 14:
  • Se agregaron los archivos de estilo y el diseño de Material Design. (Problema 183376)
Cambios para la biblioteca de appcompat de la versión 7:
  • Se corrigieron fallas en la clase Fragment limitando el uso de capas de hardware en Android 4.1 (API nivel 16) y versiones posteriores. (Problema 183896)
  • Se solucionó un problema por el cual los botones de hardware no funcionaban cuando en una actividad se había configurado la clase Toolbar para que actuara como ActionBar utilizando el método setSupportActionBar(). (Problema 183334)
  • Se actualizó la clase AppCompatDialogFragment para que ya no arroje el error Windows feature must be requested before adding content. (Problema 183186)
Cambios para la biblioteca de compatibilidad de diseño:
  • Se corrigió la clase AppBarLayout para que se dibuje correctamente después de la rotación. (Problema 183109)
  • Se corrigió la clase TabLayout para que se comporte de manera correcta cuando un usuario hace clic después de deslizar el dedo. (Problema 183123)
Cambios para la biblioteca de compatibilidad de pestañas personalizadas:

Revisión 23

agosto de 2015

Se agregaron nuevas bibliotecas de compatibilidad:

Para obtener una lista completa de los cambios en la biblioteca de compatibilidad, consulta el Informe de diferencias de API de la biblioteca de compatibilidad.

Revisión 22.2.1

julio de 2015

Cambios para la biblioteca de compatibilidad de diseño:
  • Se agregaron los métodos hide() y show() a la clase FloatingActionButton para la activación programática de animaciones.
  • Se agregó la constante LENGTH_INDEFINITE a la clase Snackbar para mostrar una barra de notificaciones hasta que se descarte o se muestre otra. Además, se agregaron los métodos setActionTextColor(int) y setActionTextColor(ColorStateList).
  • Se agregó el método getSelectedTabPosition() a la clase TabLayout para recuperar la pestaña seleccionada actualmente.
  • Se proporcionó una API completamente fluida en la clase android.support.v7.app.NotificationCompat.MediaStyle para el encadenamiento de métodos.
  • Se agregaron métodos de conveniencia a RecyclerView para la inserción por lotes de elementos.

Para obtener una lista completa de los cambios en la biblioteca de compatibilidad, consulta el Informe de diferencias de API de la biblioteca de compatibilidad.

Revisión 22.2.0

mayo de 2015

Se agregó la biblioteca de compatibilidad de diseño:
  • Se agregó TextInputLayout para mostrar el texto de error y la sugerencia de EditText como etiquetas flotantes.
  • Se agregó FloatingActionButton para implementar una acción principal en la interfaz como un botón de acción flotante, que admite tamaños predeterminados o miniatura.
  • Se agregó Snackbar para proporcionar comentarios básicos con una acción opcional en una barra de notificaciones animada.
  • Se agregó TabLayout para implementar pestañas fijas y desplazables, así como una fácil integración con ViewPager.
  • Se agregó NavigationView para implementar el contenido del panel lateral de navegación, incluida la capacidad de inflar elementos del menú por medio de un recurso del menú.
  • Se agregó CoordinatorLayout, un diseño general, utilizado para desarrollar dependencias entre vistas hermanas y permitir reacciones de desplazamiento sencillas entre componentes mediante CoordinatorLayout.Behavior. Muchos de los componentes de la biblioteca de diseño dependen de ser un elemento secundario de un CoordinatorLayout.
  • Se agregó AppBarLayout, un contenedor para Toolbar y otras vistas (como TabLayout) a fin de reaccionar a eventos desplazables al desplazarse fuera de la pantalla, volverse visible en reacción a un desplazamiento descendente o contraerse/mostrarse antes de desplazarse dentro o fuera de la pantalla.
  • Se agregó CollapsingToolbarLayout para controlar cómo se contrae un Toolbar. Una barra de herramientas puede contraerse fijando componentes en la parte superior de la pantalla mientras se contrae, introduciendo el desplazamiento de paralaje de componentes como ImageView o agregando un color de malla de contenido cuando la vista se contrae parcialmente.
Cambios en la biblioteca de compatibilidad de la versión 4:
Cambios para la biblioteca de appcompat de la versión 7:

Para obtener una lista completa de los cambios en la biblioteca de compatibilidad, consulta el Informe de diferencias de API de la biblioteca de compatibilidad.

Revisión 22.1.0

abril de 2015

Cambios para la biblioteca de anotaciones:
  • Se agregó la biblioteca de anotaciones para brindar compatibilidad con las inspecciones de código mejoradas. Las anotaciones se agregan como etiquetas de metadatos que adjuntas a las variables, los parámetros y los valores de retorno para inspeccionar los valores de retorno del método, los parámetros pasados y las variables y campos locales.
Cambios en la biblioteca de compatibilidad de la versión 4:
Cambios para la biblioteca de appcompat de la versión 7:
Cambios en la biblioteca Leanback de la versión 17:
Cambios en la biblioteca de recyclerview de la versión 7:
Cambios en la biblioteca de renderscript de la versión 8:

Revisión 22

marzo de 2015

Cambios en la biblioteca de compatibilidad de la versión 4:
Cambios para la biblioteca de appcompat de la versión 7:
Cambios en la biblioteca Leanback de la versión 17:
  • Se agregaron los métodos getRecycledPoolSize() y setRecycledPoolSize() para permitir tamaños personalizados de grupos reciclados.
  • Se agregó el atributo WRAP_CONTENT a la configuración de ancho de diseño para admitir contenido ajustado para íconos de título.
  • Se definió R.transition en XML para mejorar las actualizaciones de la transición.
  • Compatibilidad habilitada para diseños de derecha a izquierda.
  • Se agregó la compatibilidad con los eventos clave de reproducción y pausa de contenido multimedia a la clase PlaybackOverlayFragment.
  • Se agregaron las transiciones de ingreso y devolución a la clase BrowseFragment y la clase DetailsFragment.
  • Se agregó el método replace() para reemplazar elementos en la matriz de adaptador de un objeto.
Cambios en la biblioteca de mediarouter de la versión 7:
Cambios en la biblioteca de recyclerview de la versión 7:

Revisión 21.0.3

diciembre de 2014

Cambios en la biblioteca de compatibilidad de la versión 4:

Revisión 21.0.2

noviembre de 2014

Cambios en la biblioteca de compatibilidad de la versión 4:
Cambios para la biblioteca de appcompat de la versión 7:
  • Se agregó el constructor PopupMenu para admitir nuevos menús emergentes.
  • Se agregó compatibilidad con una descripción del ícono de contraer en la clase Toolbar.
  • Se actualizó el widget SearchView para admitir la visualización de commitIcon.
  • Se quitó el atributo buttonGravity de la clase Toolbar.
Cambios para la biblioteca de cardview de la versión 7:
Cambios en la biblioteca de recyclerview de la versión 7:
Cambios en la biblioteca Leanback de la versión 17:
  • Se agregó compatibilidad para generar fragmentos de código de la versión 4.
  • Se cambió el color del texto secundario en CardView.

Revisión 21.0.1

noviembre de 2014

Se agregó la biblioteca de compatibilidad de multidex para admitir múltiples archivos Dalvik ejecutables (DEX) para compatibilidad con archivos multidex anteriores a Android 5.0.

Revisión 21

octubre de 2014

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se agregó compatibilidad con transiciones Fragment para dispositivos que ejecutan Android 5.0 (API nivel 21). Ten en cuenta que las transiciones no tienen efecto en los dispositivos con Android 4.4 y versiones anteriores.
  • Se agregó DocumentFile para facilitar la transición de File mientras se trabaja con árboles de documentos. Sin embargo, esta clase implica más sobrecarga de procesamiento en comparación con la API DocumentsContract de la plataforma agregada en Android 4.4 (API nivel 19). Por lo tanto, deberás usar DocumentsContract cuando la ejecución sea en Android 4.4 y versiones posteriores.
Cambios para la biblioteca de appcompat de la versión 7:
  • Se agregó compatibilidad con interfaces de usuario de Material Design.
  • Se agregó Toolbar, que generaliza la funcionalidad de ActionBar para usar en diseños de apps.
  • Se actualizó ActionBarDrawerToggle, que contiene la animación de menú a flecha
  • Se actualizaron los widgets de la interfaz de usuario común para permitir el ajuste de tono por medio de los atributos del tema cuando se ejecuta en dispositivos anteriores a Android 5.0
  • Se agregó SwitchCompat, un backport del widget Switch que se agregó en Android 4.0 (API nivel 14).
Nueva biblioteca de cardview de la versión 7:
  • Se agregó el widget CardView, que proporciona una implementación compatible con Material Design para mostrar elementos de datos.
Nueva biblioteca de recyclerview de la versión 7:
  • Se agregó el widget RecyclerView, que proporciona una vista de lista flexible para brindar una ventana limitada de un gran conjunto de datos.
Nueva biblioteca de paletas versión 7:
  • Se agregó la clase Palette, que permite extraer colores destacados de una imagen.
Nueva biblioteca de leanback de la versión 17:

Revisión 20

julio de 2014

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se agregó compatibilidad con notificaciones extendidas para Android Wear en NotificationCompat.WearableExtender, que permite especificar características específicas de wearable en las notificaciones.
  • Se agregó NotificationCompat.Action.WearableExtender, que permite agregar acciones en notificaciones de wearable.
  • Se agregó NotificationManagerCompat, lo que te permite emitir notificaciones que admitan funciones wearable correctamente.
  • Se agregó RemoteInput, lo que permite que un dispositivo de mano reciba la entrada de voz de una notificación que aparece en un dispositivo wearable.
  • Se mejoró el manejo de las respuestas táctiles en SwipeRefreshLayout.

Revisión 19.1.0

marzo de 2014

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se agregó la clase SwipeRefreshLayout, que permite a los usuarios actualizar el contenido de una vista con un gesto de deslizamiento vertical.
  • Se solucionaron problemas de accesibilidad con los paneles laterales de navegación.
Cambios para la biblioteca de appcompat de la versión 7:
  • Se corrigieron problemas de fondo con la barra de acción.

Revisión 19.0.1

diciembre de 2013

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se mejoró PrintHelper agregando un manejo asincrónico de la impresión.
  • Se corrigió la aproximación de clase DrawerLayout del método addChildrenForAccessibility().
  • Se corrigió la duplicación de elementos de diseño de deslizamiento en ActionBarDrawerToggle.
  • Se solucionó el problema de error por un paso que ocurre cuando se quita un elemento de un iterador de grupo.
Cambios en la biblioteca de mediarouter de la versión 7:
Cambios en la biblioteca de renderscript de la versión 8:
  • Se agregó propagación de error para la capa de invocación de RenderScript.

Revisión 19

octubre de 2013

Cambios en la biblioteca de compatibilidad de la versión 4:
Cambios en la biblioteca de mediarouter de la versión 7:
  • Se agregó compatibilidad con la cola de reproducción multimedia, configuración de valores de encabezado HTTP y duración de reproducción multimedia.
  • Se agregaron acciones explícitas de inicio, obtención y finalización de sesión para administrar explícitamente sesiones de reproducción multimedia con Media Router.

Revisión 18

julio de 2013

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Interfaz de usuario
    • Se agregó BidiFormatter para manejar strings de texto que combinan texto con formato de derecha a izquierda y de izquierda a derecha.
    • Se modificó ViewPager para manejar mejor los casos en los que la página tiene un ancho medido de cero en el procesamiento de diseño inicial.
    • Se modificaron DrawerLayout y SlidingPaneLayout para no arrojar excepciones en la medición mientras se edita el código del proyecto.
  • Accesibilidad
  • Multimedia
    • Se agregó la clase auxiliar TransportMediator para administrar el control de transporte multimedia, como reproducir, pausar, omitir y otras acciones multimedia.
    • Se agregó DisplayManagerCompat para administrar la salida de la pantalla a una o más pantallas del dispositivo.
  • Otros cambios
    • Se agregó la clase auxiliar WakefulBroadcastReceiver para implementar un patrón común de detección de un evento de activación del dispositivo y pasaje del trabajo a un Service mientras se garantiza que el dispositivo no vuelva a suspenderse antes de que se complete la transferencia.
    • Se agregaron dos API nuevas, commitContentChanged() y rollbackContentChanged(), a AsyncTaskLoader para ayudar a manejar actualizaciones de fondo de cambios de datos que posteriormente se cancelan.
Nueva biblioteca de appcompat de la versión 7:
  • Se agregó ActionBar para permitir la implementación del patrón de diseño de la interfaz de usuario de la barra de acción de nuevo en Android 2.1 (API nivel 7) y versiones posteriores. El uso de esta clase requiere que, para implementar tu actividad, extiendas la nueva clase ActionBarActivity.
Nueva biblioteca de mediarouter de la versión 7:

Se agregó una nueva biblioteca de mediarouter que admite la vista previa para desarrolladores de Google Cast. Las API de la biblioteca de mediarouter de la versión 7 proporcionan un medio para controlar el enrutamiento de canales y transmisiones multimedia desde el dispositivo actual a pantallas, altavoces y otros dispositivos de destino externos, con compatibilidad hasta Android 2.1 (nivel de API 7). Consulta la biblioteca de mediarouter de la versión 7 para obtener más información.

Las API de la biblioteca mediarouter de la versión 7 incorporadas en la biblioteca de compatibilidad r18 están sujetas a cambios en revisiones posteriores de la biblioteca de compatibilidad. En este momento, recomendamos usar la biblioteca solo en conexión con la vista previa para desarrolladores de Google Cast.

Revisión 13

mayo de 2013

Cambios en la biblioteca de compatibilidad de la versión 4:
Nueva biblioteca de gridlayout de la versión 7:
  • Se agregó GridLayout para proporcionar compatibilidad con el objeto de diseño GridLayout.
  • Se agregó android.support.v7.widget.Space que se puede usar para crear áreas en blanco dentro de un objeto de diseño GridLayout.

Revisión 12

febrero de 2013

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se mejoró el comportamiento de interacción para ViewPager.
  • Se corrigió un error que podía hacer que ViewPager seleccionara la página incorrecta.
  • Se corrigió el uso del método removeView() durante el diseño de ViewPager.
  • Se solucionó el problema con SearchViewCompat donde el uso del botón Atrás para descartar no borra el texto de búsqueda. Esta corrección solo se aplica a API nivel 14 y versiones posteriores de host.

Revisión 11

noviembre de 2012

Cambios en la biblioteca de compatibilidad de la versión 4:

Revisión 10

agosto de 2012

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se agregó compatibilidad con las funciones de notificación introducidas en Android 4.1 (API nivel 16) con adiciones a NotificationCompat.

Revisión 9

junio de 2012

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Compatibilidad con la interfaz de usuario
    • Se agregó compatibilidad con PagerTabStrip, lo que brinda una funcionalidad mejorada más allá de PagerTitleStrip.
    • Se corrigieron varios errores de PagerTitleStrip y PagerTabStrip, entre ellos, la opción setAllCaps, la alineación del título, las mejoras de aspecto, las restricciones de ancho mínimo y los problemas de navegación táctil.
    • Se agregó compatibilidad para márgenes de página ViewPager, lo que ayuda a la clase ViewPager a proporcionar compatibilidad de paginación para contenido con un amplio rango de desplazamiento horizontal, como un mapa.
    • Se corrigieron varios errores de ViewPager, incluidos los problemas de cambio en el tamaño y el conjunto de datos, el posicionamiento de la página, la interacción del usuario, el seguimiento de desplazamiento y los problemas de navegación del teclado.
    • Se corrigieron muchos errores de Fragment, entre ellos la administración de onActivityResult() cuando el fragmento de destino ya no existe y el envío de eventos de selección a fragmentos invisibles. También se mejoró el comportamiento de FragmentTransaction.replace() y se agregó un mejor manejo del estado para los fragmentos que se quitan de la vista.
    • Se agregó compatibilidad con el método postOnAnimation() en ViewCompat.
    • Se actualizó NavUtils para usar la funcionalidad de navegación Arriba de Android 4.1 (API nivel 16) cuando esté disponible.
  • Accesibilidad
    • Se actualizaron las clases de compatibilidad de accesibilidad, como AccessibilityNodeInfoCompat, para seguir las correcciones realizadas en Android 4.1 (API nivel 16).
    • Se agregó compatibilidad para acciones de desplazamiento de accesibilidad en ViewPager.
  • Mejoras generales

Revisión 8

abril de 2012

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se corrigieron las marcas de intent para objetos PendingIntent generados por TaskStackBuilder.
  • Se quitaron los atributos no utilizados de los proyectos de la biblioteca de gridlayout para garantizar que la biblioteca se pueda compilar con API nivel 7 y versiones posteriores.
  • Se agregaron los archivos .classpath y .project para el proyecto de biblioteca de gridlayout.

Revisión 7

marzo de 2012

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se agregó ShareCompat, que proporciona clases auxiliares a fin de enviar y recibir contenido para aplicaciones de publicación compartida en redes sociales, incluidos metadatos nuevos para atribuir datos compartidos a la app de origen. Esta clase también proporciona integración compatible con el nuevo ShareActionProvider en Android 4.0.
  • Se agregaron NavUtils y TaskStackBuilder a fin de proporcionar compatibilidad con la implementación de las pautas de Diseño de Android para la navegación. Estas adiciones incluyen una forma de implementar el botón Arriba de la barra de acción en todas las versiones. Para ver una implementación de ejemplo de este patrón, consulta la muestra de AppNavigation en (<em><sdk></em>/samples/<em><platform></em>/AppNavigation).
  • Se agregó NotificationCompat.Builder para proporcionar una implementación de compatibilidad de la clase auxiliar Notification.Builder de Android 3.0 a fin de crear notificaciones de sistema estandarizadas.

Revisión 6

diciembre de 2011

Nota: La referencia para las API de la biblioteca de compatibilidad ahora está disponible con las referencias del marco de trabajo, por ejemplo: android.support.v4.app.

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Cambios en ViewPager:
    • Se agregó compatibilidad adicional con vistas decorativas para ViewPager. Las vistas decorativas se pueden proporcionar como vistas secundarias de una página en un diseño XML.
    • Se agregó PagerAdapter.getPageTitle() para proporcionar strings de título para las páginas, que, de manera predeterminada, no tiene título para cada página.
    • Se agregó PagerTitleStrip, una barra de título no interactiva, que se puede agregar como un elemento secundario de ViewPager. Los desarrolladores pueden proporcionar el aspecto y el color del texto, así como el tamaño del diseño y la información de gravedad.
    • Se actualizaron los métodos PagerAdapter para tomar objetos de ViewGroup, en lugar de View, a fin de evitar la transmisión de clases en las implementaciones de adaptadores.
    • Se actualizó ViewPager para usar el comportamiento de lanzamiento estilo Launcher.
    • Se corrigieron errores para la interacción con la interfaz de usuario y la automatización de pruebas.
  • Compatibilidad para fragmentos:
    • Se cambió el método setStartDeferred() a setUserVisibleHint(boolean).
    • Se agregó el inicio diferido de las páginas fuera de la pantalla para mejorar el rendimiento.
  • Compatibilidad con API de accesibilidad:
    • Se actualizaron los métodos AccessibilityDelegateCompat para mostrar listas vacías en lugar de nulas.
    • Se agregaron las nuevas API que necesitan las muestras de la versión 4.

Revisión 5

diciembre de 2011

Cambios en la biblioteca de compatibilidad de la versión 4:

Revisión 4

octubre de 2011

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Se agregó EdgeEffectCompat para admitir EdgeEffect.
  • Se agregó LocalBroadcastManager para permitir que las aplicaciones se registren fácilmente y reciban intents dentro de una sola aplicación sin transmitirlos globalmente.
  • Se agregó compatibilidad con ViewCompat para comprobar y establecer modos de desplazamiento para View en Android 2.3 y versiones posteriores.
  • Cambios en las API de fragmentos:
    • Se agregaron API nuevas para controlar la visibilidad de los nuevos menús.
    • Se agregaron API de animación personalizadas.
    • Se agregaron API en FragmentActivity para retener datos de instancia personalizados que no son de configuración.
    • Se corrigieron varios errores.
  • Se corrigió un error Loader que provocaba problemas en la cancelación de AsyncTask cuando se ejecutaba en Froyo y versiones anteriores de la plataforma. El código de compatibilidad ahora usa su propia versión de AsyncTask para mantener el mismo comportamiento en todas las versiones de la plataforma.

Revisión 3

julio de 2011

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Agrega compatibilidad para Fragment.SavedState
  • Agrega MotionEventCompat para admitir API MotionEvent más nuevas
  • Agrega VelocityTrackerCompat para admitir API VelocityTracker más nuevas
  • Agrega ViewConfigurationCompat para admitir API ViewConfiguration más nuevas
  • Todas las API nuevas (disponibles solo en la biblioteca de compatibilidad) permiten crear IU con paginación horizontal, lo que permite a los usuarios deslizar hacia la izquierda y la derecha entre las vistas de contenido. Estas son algunas de las clases que se pueden usar:
    • ViewPager: Un ViewGroup que administra el diseño de las vistas secundarias, entre las cuales el usuario puede deslizarse.
    • PagerAdapter: Un adaptador que propaga el ViewPager con las vistas que representan cada página.
    • FragmentPagerAdapter: Una extensión de PagerAdapter para alternar entre fragmentos.
    • FragmentStatePagerAdapter: Una extensión de PagerAdapter para alternar entre fragmentos que usa la compatibilidad de la biblioteca para Fragment.SavedState.
Nueva biblioteca de compatibilidad de la versión 13:
  • Incluye FragmentPagerAdapter y FragmentStatePagerAdapter para admitir la paginación horizontal.

    Estas son exactamente iguales a las API agregadas a la biblioteca de compatibilidad de la versión 4, pero dependen de otros componentes de la plataforma en Android 3.2. Usa esta biblioteca en lugar de la versión 4 si estás desarrollando para Android 3.2 y versiones posteriores (todas las demás API de la biblioteca de la versión 4 ya están disponibles con API nivel 13).

Revisión 2

mayo de 2011

Cambios para la biblioteca de la versión 4:

Revisión 1

marzo de 2011

Versión inicial con la biblioteca de la versión 4.