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 ver las versiones más recientes de la biblioteca de compatibilidad, 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 desde 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 desde 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 implicaciones:
    • Esto puede hacer que el código existente ahora tenga un tipo de datos ambiguo que se muestre; por ejemplo, si hay someMethod(View) y someMethod(TextView), el resultado de una llamada es findViewById().
    • Cuando se usa un lenguaje 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. Esto 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 la ruta 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 XML del animador.
  • Animación basada en la física:
    • FlingAnimation nuevo que admite animar con una velocidad inicial y se ralentiza 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 XML de familia de fuentes, que se pueden usar con TextView.setTypeface().
    • Cuando se usa AppCompat, TextView admite especificar un recurso de fuente o un XML de familia de fuentes mediante el atributo XML android:fontFamily.
    • Usa la familia de fuentes XML 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 android:).
  • Fuentes descargables:
    • FontsContractCompat nuevo que te permite solicitar 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 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 procesa 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 te permite implementar tu propio almacenamiento de preferencias, configurado 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 en la versión 11 y posteriores de los Servicios de Google Play, que actualmente está disponible a través del programa de versión 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 carga previa
  • Cuando se interrumpe y se revierte una transición Fade, View inicia la animación desde el principio. (Corrige la portabilidad del framework 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 APIs que existían solo para la compatibilidad con API anteriores a 14 quedaron obsoletas. Los clientes de estas APIs deben migrar a sus equivalentes del framework, como se indica en la página de referencia de 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 compatibilidad con versiones anteriores de las APIs de plataforma agregadas en la versión preliminar 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 comprender si una app está en modo privado, de modo que puedan inhabilitar su funcionalidad adaptable 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 AutoTransition simple se puede interrumpir por "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 desde SDK Manager. Para obtener más información, consulta Configuración de la biblioteca de compatibilidad.

Cambios importantes

  • No se permiten executePendingTransactions(), commitNow(), popBackStackImmediate() ni 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 la 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.
    • Se corrigió un error que podía provocar archivos temporales abandonados.
    • Proporciona una instalación más rápida cuando se realiza en un proceso simultáneo.
    • Se corrigió un error de instalación en las APIs 19 y 20.

API nuevas y modificadas

Se admiten la transformación y la interpolación de rutas en AnimatedVectorDrawableCompat. Esta transformación 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 de acceso 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 de BrowsingFragment onItemClicked 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 fotograma.
  • 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 APIs obsoletas se quitarán en una versión futura y los desarrolladores deberían migrar a otras. Si quieres obtener más información para migrar fuera de una API específica, consulta su documentación.

ExifInterface
El método booleano getLatLong(float[]) dejó de estar disponible. En su lugar, usa el nuevo método getLatLong(), que no toma argumentos y muestra double[].
mediacompat
PlaybackStateCompat.Builder.setErrorMessage(CharSequence) ya no está disponible. En su lugar, usa el nuevo método setErrorMessage(int, CharSequence), al que se le pasa un código de error y una descripción opcional.
EXTRA_SUGGESTION_KEYWORDS dejó de estar disponible. En su lugar, usa la funcionalidad de búsqueda MediaBrowserCompat.
v7.recyclerview
Se cambió el nombre de LinearLayoutManager.getInitialItemPrefetchCount() por 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 activar o desactivar 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 APIs para crear animaciones que reaccionan de forma dinámica a las entradas del usuario.
leanback-v17
Se agregó compatibilidad con fondos de paralaje. Consulta la referencia de Parallax para obtener más detalles.
Se agregó el 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 soluciona un problema grave de mediarouter en el que el uso de un dispositivo A2DP y las APIs de enrutamiento de contenido multimedia podía hacer que el dispositivo dejara de responder y requeriría 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 cadenas (problema 232407 de AOSP)
  • TextInputLayout superpone la sugerencia y el texto si el XML establece el texto (problema 230171 de AOSP)
  • Fuga de memoria en 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 dentro de un WearableExtender

Revisión 25.1.1

(enero de 2017)

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

Cambios importantes

  • Las transacciones de fragmentos ahora se pueden optimizar dentro de las transacciones y entre ellas. La optimización de las operaciones de transacción de fragmentos puede eliminar 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 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, luego, una tercera quita el fragmento A. Sin la optimización, el fragmento B podría esperar que, mientras se crea, el fragmento A también exista 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 quitar la creación y destrucción del fragmento A.

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

  • Los fragmentos ahora pueden posponer sus transiciones 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 de las revisiones 25.1.1 y 25.1.0 de la biblioteca de compatibilidad. Si tu app usa la versión 7 de MediaRouter, 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 beneficios de rendimiento significativos 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 tus 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). Esto permite que RecyclerView cree todas las vistas relevantes de manera anticipada, mientras el RecyclerView externo se desplaza, lo que reduce significativamente la cantidad de saltos durante los desplazamientos.
  • FragmentActivity.setSupportMediaController() y FragmentActivity.getSupportMediaController() dejaron de estar 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 tono de appcompat (por ejemplo, appcompat:buttonTint), el cliente es responsable de proporcionar todos los estados necesarios (como "inhabilitado", "presionado", etc.). Esto es coherente con la forma en que se especifican los tonos de widgets cuando se usan los ajustes de tono del framework.

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 corrigió el enfoque dañado de los fragmentos pref de compatibilidad cuando se usaba 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 debe llamar a releasePermission().
  • MediaBrowserCompat falla.
  • CoordinatorLayout mide o presenta vistas cuando la visibilidad se establece 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 generó fallas 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 lámina de CollapsingToolbarLayout no se dibuja cuando se contrae
  • CoordinatorLayout.offsetChildByInset() arroja IllegalArgumentException
  • La animación de elementos RecyclerView desconecta los RecyclerView internos y evita cargas previas futuras
  • Los elementos RecyclerView adjuntos no se pueden anidar ni precargar
  • Los datos de carga previa de elementos RecyclerView anidados se descartan durante el primer diseño.
  • La carga previa de RecyclerView falla si dos eventos de arrastre llegan a la misma posición
  • RecyclerView debe diseñarse de manera especulativa mientras se renderiza RenderThread.
  • Los recursos de color de configuración nocturna convertidos en elementos de diseño no siempre se borran 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 la Herramienta de seguimiento de errores del AOSP.

Bajas

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

Revisión 25.0.1

(noviembre de 2016)

Errores corregidos

  • El botón de activación de la contraseña TextInputLayout ahora está inhabilitado de forma predeterminada para evitar reemplazar innecesariamente los elementos de diseño finales especificados por el desarrollador. Se puede habilitar manualmente a través del atributo XML passwordToggleEnabled.
  • Los elementos BottomNavigationView ahora tienen una sola línea para coincidir con la especificación de materiales.
  • RecyclerView falla durante la carga previa 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 compuestos 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() muestre falso. (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 la Herramienta de seguimiento de errores del 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 se puede extender mediante bibliotecas de compatibilidad que se orienten a niveles de API más recientes.
  • El constructor ActivityCompat se protegió. No se debe crear una instancia pública de esta clase, pero se puede extender mediante bibliotecas de compatibilidad que se orienten a niveles de API más recientes.
  • 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 por el método con nombre más apropiado MediaSessionCompat.QueueItem#fromQueueItem.
  • Se quitó android.support.v7.widget.Space. Los usos deben reemplazarse por 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 nuevo paquete android.support.v13.view.inputmethod incluye clases para acceder a funciones android.view.inputmethod.InputConnection introducidas después del nivel de API 13.
  • La clase android.v7.widget.RecyclerView.DividerItemDecoration proporciona una implementación básica para divisores horizontales o verticales entre elementos.
  • Se agregaron nuevos estilos decorados en android.support.v7.app.NotificationCompat, DecoratedCustomViewStyle y DecoratedMediaCustomViewStyle, clases de duplicación agregadas en el nivel de API 24 de la plataforma.

Errores corregidos

Puedes consultar una lista completa de las correcciones públicas de errores en la Herramienta de seguimiento de errores del AOSP.

Revisión 24.2.1

(septiembre de 2016)

Errores corregidos:

Puedes consultar una lista completa de las correcciones públicas de errores en la Herramienta de seguimiento de errores del 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 (nivel de API 8) y versiones anteriores. Las clases y los métodos que existen solo para entregar esas versiones del sistema ahora están marcados como obsoletos y no deben usarse más. Es posible que estos métodos y clases obsoletos se quiten en una versión futura.

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

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

support-compat
Proporciona wrappers de compatibilidad para las nuevas API de framework, 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 framework de contenido multimedia, incluidos MediaBrowser y MediaSession.
support-fragment
Es un backport del framework de fragmentos. Este módulo tiene dependencias en support-compat, support-core-utils, support-core-ui y support-media-compat.

Para ofrecer retrocompatibilidad, si incluyes support-v4 en la secuencia de comandos de Gradle, tu APK incluirá todos esos módulos. Sin embargo, para 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 de día y noche de la biblioteca appcompat, el sistema ahora recreará automáticamente tu actividad cada vez que cambie el modo diurno/nocturno (ya sea debido a la hora del día o a una llamada a AppCompatDelegate.setLocalNightMode()).
  • Snackbar ahora se 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 a nivel del sistema Android.

Bajas

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 de las siguientes clases solo se requerían para el nivel de API 8 y niveles inferiores, y ya no deberían usarse. En su lugar, usa las implementaciones del marco de trabajo.
    • android.support.v4.view.KeyEventCompat: Reemplazar por 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 y se reemplazó por AccessibilityServiceInfoCompat.loadDescription(), que muestra 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 próxima versión.
  • CoordinatorLayout.Behavior.isDirty() dejó de estar disponible y CoordinatorLayout ya no lo llama. 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 mayor 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 cuando desalinees SavedState en API nivel 11 y versiones anteriores (problema 196430 de AOSP).

Puedes consultar una lista completa de las correcciones públicas de errores en la Herramienta de seguimiento de errores del AOSP.

Revisión 24.1.1

julio de 2016

Errores corregidos:

  • Soluciona un problema en la versión 24.1.0 que afectaba los ID de recursos compartidos entre bibliotecas de compatibilidad. Este problema hizo que las apps que dependían de las bibliotecas de compatibilidad con recursos (como design y appcompat) encontraran 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 posteriores a la API 24. Si usas versiones anteriores, actualiza a esta versión para garantizar la compatibilidad.

Cambios para la biblioteca de 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 un flujo de bienvenida y configuración de primera ejecución.
Cambios para las pestañas personalizadas:
  • Se agregó compatibilidad a fin de proporcionar una jerarquía de RemoteViews para 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 no se dibujaba la barra de la app después de desplazarse fuera de la pantalla. (Problema 178037)
Cambios para la biblioteca de 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 realizar un seguimiento de cómo el usuario inició tu app en el pasado. hasStartedFromLauncher() te permite saber si el usuario inició tu app desde la pantalla principal anteriormente o si solo se inició por otros medios (por ejemplo, para ver URLs web específicas).
  • Se corrigió una fuga de memoria en MediaBrowserServiceCompat.mConnections. (Problema 205220)
  • Se solucionó el problema por 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 entrega a fragmentos secundarios.
Cambios para la biblioteca de 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:
Cambios para la biblioteca de appcompat de la versión 7:
  • Se revirtió la dependencia de los recursos 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 corrigió un problema con la propagación de valores de configuración en objetos de recursos. Error 201928
  • Se solucionó 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 y 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 que el diseño app:textAllCaps = "false" no funcionaba. (Problema 202117)
  • Se corrigió una falla durante el restablecimiento de SearchView. (Problema 201836)
  • Se corrigió una fuga de memoria que se produce cuando se ajusta el tono de los elementos de diseño usando AppCompat. (Problema 202379)
  • Se corrigió un problema con KeyEvent en la API nivel 11 y versiones anteriores. (Problema 202939)
Cambios en 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 de la versión 17:
  • Se corrigió un problema con GridLayout.onAddFocusables() que causaba que se seleccionara el elemento incorrecto.
  • Se solucionó el problema por el que las acciones de GuidedStepFragment 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. lo que resulta ú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 el nivel de API 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 con 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 llamada 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 a una pestaña personalizada. Puedes usar esta opción para agregar varios botones.
  • CustomTabsSession.setToolBarItem(): Actualiza las imágenes de los elementos de la barra de herramientas. Este método solo funcionará de forma correcta si se le asigna un ID válido y la sesión del navegador está en primer plano.
Se agregó una biblioteca de compatibilidad de VectorDrawable:
  • Clases agregadas:
    • VectorDrawableCompat
    • AnimatedVectorDrawableCompat
  • Agrega compatibilidad con elementos VectorDrawable a apps que se ejecutan en la API nivel 7 o posterior. Los elementos AnimatedVectorDrawable también son compatibles con la API nivel 11 o versiones posteriores. Los elementos vectoriales pueden ser considerablemente más pequeños que los elementos de imagen y deberían ayudar a reducir 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 a los desarrolladores y a AppCompat usar fácilmente 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 el nivel de API 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 a tu 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 compilas con el complemento de Android para Gradle 2.0.0 o una versión posterior, agrega lo siguiente a tu archivo build.gradle:
    • android {
        defaultConfig {
          vectorDrawables.useSupportLibrary = true
        }
      }
      
Cambios en la biblioteca Leanback de la versión 17:
  • Se agregaron capacidades nuevas a GuidedStepFragment, que es un componente que guía a los usuarios en una decisión o en 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: Es la clase de compilador para el objeto GuidedDatePickerAction.
    • GuidedDatePickerAction.Builder.datePickerFormat(String datePickerFormat): Establece el formato de fecha deseado pasando el String de tres caracteres apropiado, p.ej., “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 llamada AutoMeasure que permite que RecyclerView.LayoutManager une fácilmente el contenido o controle varias 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 RecyclerView.LayoutManager integrados habilitan la medición automática de forma predeterminada.
    • RecyclerView.LayoutManager ya no ignora algunas opciones de configuración 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 se actualiza un objeto 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 corrigió un problema de fondo transparente para un objeto FloatingActionButton en dispositivos con Android 4.0 (nivel de API 15) y 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. Te permite recibir devoluciones de llamada cuando cambian las posiciones de desplazamiento de 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 botones multimedia en el manifiesto. Un receptor de botón multimedia es un componente clave para manejar los controles de reproducción desde 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 obtener mejores personalizaciones:
    • Las animaciones de cambios ya no aplican dos copias del objeto ViewHolder, lo que habilita las animaciones de contenido de elementos. Además, el objeto ItemAnimator decide si desea volver a usar el mismo objeto ViewHolder o crear uno nuevo.
    • La nueva API de registro de información le brinda a la clase ItemAnimator la flexibilidad para recopilar datos en el punto correcto del ciclo de vida de diseño. Luego, esta 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 hasta su borde más cercano.
  • Se agregó compatibilidad con vistas personalizadas a la clase NavigationView usando el 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 al cliente personalizar si la barra de URL debe ocultarse automáticamente cuando 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 inició.
  • 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 en 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 de la clase Fragment limitando el uso de capas de hardware a Android 4.1 (nivel de API 16) y versiones posteriores. (Problema 183896)
  • Se solucionó un problema por el que los botones de hardware no funcionaban cuando una actividad había configurado la clase Toolbar para que actuara como ActionBar usando 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 ahora se comporte correctamente 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 que se realizaron en la biblioteca de compatibilidad, consulta el Informe de diferencias de las 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 que se realizaron en la biblioteca de compatibilidad, consulta el Informe de diferencias de las 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 tu interfaz como un botón de acción flotante, que admite tamaños predeterminados o pequeños.
  • 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 aumentar los elementos de menú mediante un recurso de menú.
  • Se agregó CoordinatorLayout, un diseño de uso general, que se utiliza para crear dependencias entre vistas del mismo nivel y permitir reacciones de desplazamiento sencillas entre componentes mediante CoordinatorLayout.Behavior. Muchos de los componentes de la biblioteca de diseño dependen de ser elementos secundarios de un CoordinatorLayout.
  • Se agregó AppBarLayout, un contenedor de un objeto Toolbar y otras vistas (como TabLayout) para reaccionar a eventos de desplazamiento fuera de la pantalla, volverse visible en reacción a un desplazamiento descendente o contraerse/abrirse antes de desplazarse hacia afuera o a la pantalla.
  • Se agregó CollapsingToolbarLayout para controlar cómo se contrae un Toolbar. Una barra de herramientas se puede contraer de la siguiente manera: fijando componentes en la parte superior de la pantalla mientras se contrae, introduciendo un desplazamiento de paralaje de componentes como ImageView o agregando un color de velo 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 que se realizaron en la biblioteca de compatibilidad, consulta el Informe de diferencias de las 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 variables, parámetros y valores que se muestran para inspeccionar los valores que se muestran de un 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 transición.
  • Compatibilidad habilitada para diseños de derecha a izquierda.
  • Se agregó la compatibilidad con los eventos de teclas de reproducción y pausa de contenido multimedia a la clase PlaybackOverlayFragment.
  • Se agregaron transiciones de retorno y entrada a las clases BrowseFragment y DetailsFragment.
  • Se agregó el método replace() para reemplazar elementos en el array de adaptadores 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 para una descripción del ícono de contracción 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 v4.
  • 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 varios archivos Dalvik ejecutables (DEX) para la 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 las transiciones Fragment en dispositivos que ejecutan Android 5.0 (API nivel 21). Ten en cuenta que las transiciones no tienen efecto en dispositivos con Android 4.4 y versiones anteriores.
  • Se agregó DocumentFile para facilitar la transición desde File mientras se trabaja con árboles de documentos. Sin embargo, esta clase demanda más sobrecarga de procesamiento en comparación con la API de DocumentsContract de la plataforma agregada en Android 4.4 (nivel de API 19). Por lo tanto, debes comenzar a usar DocumentsContract cuando ejecutes Android 4.4 y versiones posteriores.
Cambios para la biblioteca de appcompat de la versión 7:
  • Se agregó compatibilidad con las interfaces de usuario de Material Design.
  • Se agregó Toolbar, que generaliza la funcionalidad de ActionBar para usar dentro de diseños de apps.
  • Se actualizó ActionBarDrawerToggle, que contiene la animación de menú a flecha.
  • Se actualizaron los widgets comunes de interfaz de usuario para permitir ajustar el tono a través de los atributos de tema cuando se ejecuta en dispositivos con versiones 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 proporcionar una ventana limitada a un gran conjunto de datos.
Nueva biblioteca de paletas versión 7:
  • Se agregó la clase Palette, que te 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, lo que te permite especificar funciones específicas de wearables en tus notificaciones.
  • Se agregó NotificationCompat.Action.WearableExtender, que permite agregar acciones en notificaciones de wearables.
  • Se agregó NotificationManagerCompat, que te permite emitir notificaciones que admitan funciones de wearables correctamente.
  • Se agregó RemoteInput, 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 asíncrono 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 puesta en cola de reproducción de contenido multimedia, la configuración de valores de encabezado HTTP y la duración de la reproducción multimedia.
  • Se agregaron acciones explícitas de inicio, obtención y finalización de sesión para administrar de forma explícita las sesiones de reproducción multimedia con el router de contenido multimedia.

Revisión 18

julio de 2013

Cambios en la biblioteca de compatibilidad de la versión 4:
  • Interfaz de usuario
    • Se agregó BidiFormatter para controlar cadenas 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 el localizador tiene un ancho medido de cero en el procesamiento de diseño inicial.
    • Se modificaron DrawerLayout y SlidingPaneLayout a fin de no arrojar excepciones para la medición mientras se edita el código del proyecto.
  • Accesibilidad
  • Contenido 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 pasar el trabajo a un Service mientras se garantiza que el dispositivo no se vuelva a suspender antes de que se complete la transferencia.
    • Se agregaron dos API nuevas, commitContentChanged() y rollbackContentChanged(), a AsyncTaskLoader para ayudar a manejar actualizaciones en segundo plano de cambios de datos que se cancelan posteriormente.
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 acciones de nuevo en Android 2.1 (nivel de API 7) y versiones posteriores. El uso de esta clase requiere que implementes tu actividad extendiendo 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 mediarouter de la versión 7 proporcionan un medio para controlar el enrutamiento de canales y transmisiones multimedia desde el dispositivo actual a pantallas, bocinas 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 que se introdujeron 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 por el que 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 o versiones posteriores del 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 para las funciones de notificación que se introdujeron 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 proporciona una funcionalidad mejorada más allá de PagerTitleStrip.
    • Se corrigieron varios errores de PagerTitleStrip y PagerTabStrip, incluidas la opción setAllCaps, la alineación del título, las mejoras de apariencia, las restricciones de ancho mínimo y los problemas de navegación táctil.
    • Se agregó compatibilidad con los medianiles de página ViewPager, que ayudan a la clase ViewPager a proporcionar compatibilidad de paginación para el contenido con un gran rango de desplazamiento horizontal, como un mapa.
    • Se corrigieron varios errores de ViewPager, incluidos los problemas de cambio de tamaño y conjunto de datos, el posicionamiento de página, la interacción del usuario, el seguimiento de desplazamiento y los problemas de navegación con el teclado.
    • Se corrigieron muchos errores de Fragment, incluido el control adecuado de onActivityResult() cuando el fragmento de destino ya no existe, el envío de eventos de selección a fragmentos invisibles, se mejoró el comportamiento de FragmentTransaction.replace() y se agregó un mejor control de 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 (nivel de API 16) cuando esté disponible.
  • Accesibilidad
    • Se actualizaron las clases de compatibilidad de accesibilidad, incluida AccessibilityNodeInfoCompat, para seguir las correcciones realizadas en Android 4.1 (nivel de API 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 nivel de API 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 para enviar y recibir contenido en aplicaciones de uso compartido en redes sociales, incluidos nuevos metadatos 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 los lineamientos de diseño de Android para la navegación. Estas adiciones incluyen una forma de implementar el botón Arriba de la barra de acciones en todas las versiones. Para ver una implementación de ejemplo de este patrón, consulta el ejemplo 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 del sistema estandarizadas.

Revisión 6

diciembre de 2011

Nota: La referencia para las APIs de la biblioteca de compatibilidad ahora está disponible con las referencias del framework, 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() a fin de proporcionar strings de título para las páginas, que, de forma predeterminada, no tienen título para cada una.
    • Se agregó PagerTitleStrip, una barra de título no interactiva, que se puede agregar como elemento secundario de ViewPager. Los desarrolladores pueden proporcionar la apariencia 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 ViewGroup en lugar de View para evitar la transmisión de clases en implementaciones del adaptador.
    • Se actualizó ViewPager para usar el comportamiento de deslizamiento estilo Launcher.
    • Se corrigieron errores para la interacción con la interfaz de usuario y la automatización de pruebas.
  • Compatibilidad con 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 APIs 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 en intents y los reciban dentro de una sola aplicación sin transmitirlos de manera global.
  • Se agregó compatibilidad en ViewCompat para buscar y establecer modos de sobredesplazamiento para View en Android 2.3 y versiones posteriores.
  • Cambios en las APIs de Fragment:
    • 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 causaba 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 APIs nuevas (disponibles solo en la biblioteca de compatibilidad) te permiten crear IUs con paginación horizontal, lo que permite a los usuarios deslizar el dedo hacia la izquierda y la derecha entre las vistas de contenido. Estas son algunas de las clases que admiten esto:
    • ViewPager: Es un ViewGroup que administra el diseño de las vistas secundarias, entre las que el usuario puede deslizarse.
    • PagerAdapter: Un adaptador que propaga el ViewPager con las vistas que representan cada página.
    • FragmentPagerAdapter: Es una extensión de PagerAdapter para cambiar entre fragmentos.
    • FragmentStatePagerAdapter: Es una extensión de PagerAdapter para cambiar entre fragmentos que usa la compatibilidad de la biblioteca con Fragment.SavedState.
Nueva biblioteca de compatibilidad de la versión 13:
  • Incluye FragmentPagerAdapter y FragmentStatePagerAdapter para admitir la paginación horizontal.

    Estas son exactamente las mismas que las APIs 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 APIs de la biblioteca de la versión 4 ya están disponibles con el nivel de API 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.