Nota: Con el lanzamiento de Android 9.0 (API nivel 28), hay una nueva versión de la biblioteca de compatibilidad denominada AndroidX, que es parte de Jetpack.
La biblioteca de AndroidX contiene la biblioteca de compatibilidad existente e incluye los últimos componentes de Jetpack.
Puedes seguir usando la biblioteca de compatibilidad.
Los artefactos históricos (aquellos de la versión 27 y anteriores, y empaquetados como android.support.*
) seguirán estando disponibles en Google Maven. Sin embargo, todo el desarrollo de bibliotecas nuevas ocurrirá en la biblioteca de AndroidX.
Recomendamos usar las bibliotecas de AndroidX en todos los proyectos nuevos. Otra opción es migrar los proyectos existentes a AndroidX también.
Las bibliotecas de compatibilidad brindan una amplia gama de clases para crear apps, desde componentes de apps fundamentales hasta widgets de interfaz de usuario, manejo de medios y componentes de apps de TV. Muchas de las clases son implementaciones compatibles con versiones anteriores, pero algunas de ellas son características totalmente nuevas.
Este documento proporciona una descripción general de las categorías importantes de funciones disponibles en la biblioteca de compatibilidad y las clases específicas que debes conocer al crear una app.
Para obtener información sobre cómo agregar código de biblioteca de compatibilidad a tu proyecto de desarrollo de app, consulta Configuración de biblioteca de compatibilidad. Para obtener información sobre cómo incluir paquetes de biblioteca de compatibilidad específicos en su proyecto, consulta Paquetes de biblioteca de compatibilidad.
Componentes de la app
Estas clases de la biblioteca de compatibilidad proporcionan implementaciones compatibles con versiones anteriores de las principales características de la plataforma central. Esta implementación generalmente extiende las versiones anteriores de la clase para incorporar nuevos métodos y características que se agregaron en versiones más recientes de la plataforma. Algunas de estas clases son implementaciones completas y estáticas de las API del marco de trabajo.
- Actividades
ActivityCompat
: Incluye una implementación retrocompatible para las principales funciones recientes de actividades, como los Permisos de tiempo de ejecución y las transiciones de animación.FragmentActivity
: Proporciona una implementación retrocompatible para las actividades a fin de usar las versiones de biblioteca de compatibilidad de las APIFragment
yLoader
.AppCompatActivity
: Proporciona temas de color de material, tonos de widgets y compatibilidad con la barra de la app para dispositivos anteriores. El uso de esta clase requiere el uso de temasTheme.AppCompat
para que la presentación visual sea coherente.
Fragment
: Proporciona una implementación independiente de la claseFragment
de framework. Esta clase se debe usar conFragmentActivity
.ContextCompat
: Proporciona compatibilidad con las funciones que se introdujeron en las versiones más recientes de la claseContext
, lo que incluye compatibilidad con permisos, información de color y acceso a archivos.IntentCompat
: Proporciona compatibilidad con las funciones introducidas en versiones más recientes de la claseIntent
, incluidos los métodos para seleccionar actividades específicas y para iniciarlas.Loader
: Proporciona una implementación estática de la claseLoader
de framework y es la clase base para las clases de compatibilidadAsyncTaskLoader
yCursorLoader
.Preference
: Esta clase y sus subclases proporcionan implementaciones de la interfaz de usuario de la configuración de la app de manera retrocompatible.ContentResolverCompat
: Proporciona compatibilidad con las funciones que se introdujeron en versiones más recientes de la claseContentResolver
, específicamente el métodoquery()
con compatibilidad para cancelar una consulta en curso.
Interfaz de usuario
Estas clases de biblioteca de compatibilidad proporcionan implementaciones de widgets y comportamientos de la interfaz de usuario clave, y ayudan a crear interfaces de apps más modernas en dispositivos anteriores. Algunos de estos widgets solo están disponibles a través de la biblioteca de compatibilidad.
Contenedores de diseño general
Estas clases de compatibilidad proporcionan contenedores de interfaz de usuario que pueden adaptarse a diferentes casos de uso de diseño.
RecyclerView
: Crea un diseño para mostrar listas largas, con una estrategia para evitar un alto consumo de memoria. Esta clase permite crear una vista de ventana limitada de un conjunto de datos más grande, para así evitar el consumo de grandes cantidades de memoria al mostrar la lista. Para obtener más información sobre el uso deRecyclerView
, consulta la guía de Recycler View.ViewPager
: Proporciona un diseño que le permite al usuario pasar las páginas de datos hacia la izquierda y la derecha.GridLayout
: Proporciona un diseño con sus elementos secundarios en una cuadrícula rectangular, que admite intervalos arbitrarios de celdas contiguas y una distribución espacial flexible. Esta clase proporciona una versión compatible con versiones anteriores de la claseGridLayout
, introducida en Android 4.0 (nivel de API 14).PercentFrameLayout
yPercentRelativeLayout
: Proporcionan diseños que admiten dimensiones y márgenes basados en porcentajes para las vistas y el contenido secundarios.
Nota: Las clases ViewPager
, RecyclerView
, PercentFrameLayout
y PercentRelativeLayout
solo están disponibles en las bibliotecas de compatibilidad.
Contenedores de diseño especial
Estas clases de compatibilidad proporcionan implementaciones compatibles de patrones de diseño específicos, como vistas de panel lateral que se pueden abrir desde el borde de la pantalla, paneles deslizantes y listas anidadas dentro de listas.
DrawerLayout
: Crea un diseño que permite usar vistas de panel lateral interactivas que se abren desde el extremo de la ventana de vista.SlidingPaneLayout
: Proporciona un diseño horizontal de varios paneles que puede usarse en el nivel superior de la interfaz de usuario de la app para crear diseños que se puedan adaptar sin problemas a diferentes tamaños de pantalla, expandiéndose en las pantallas más grandes y reduciéndose para ajustarse a las pantallas más pequeñas.NestedScrollView
: Es un diseño de desplazamiento que permite anidar otras vistas de desplazamiento, lo que le permite crear listas con elementos que contienen una lista secundaria adicional. Estas listas anidadas pueden contener elementos que se desplazan horizontal o verticalmente, independientemente de la lista superior.SwipeRefreshLayout
: Proporciona un diseño que permite la actualización de datos para listas, o bien otro diseño con un gesto de deslizar con el dedo.
Vistas, diálogos y widgets
Las bibliotecas de compatibilidad proporcionan una serie de clases para mostrar contenido y proporcionar elementos de interacción con el usuario en un diseño.
CardView
: Es una clase personalizada de biblioteca de compatibilidad para crear tarjetas de visualización de estilo de material design. Esta clase se basa en FrameLayout con esquinas redondeadas y una sombra paralela.AppCompatDialogFragment
: Proporciona cuadros de diálogo de estilo coherente extendiendoDialogFragment
y usandoAppCompatDialog
.NotificationCompat
: Proporciona compatibilidad con nuevos estilos de notificación retrocompatible.SearchView
: Proporciona una clase para que el usuario ingrese una búsqueda y envíe una solicitud a un proveedor de búsqueda, destinada principalmente para su uso en una barra de apps.
Material Design
Las bibliotecas de compatibilidad proporcionan varias clases para implementar las recomendaciones de la interfaz de usuario de Material Design.
CoordinatorLayout
: Proporciona un contenedor de nivel superior para diseños que incorporan componentes y comportamiento de Material Design. Esta clase también se puede usar como contenedor para la interacción específica con una o más vistas secundarias.AppBarLayout
: Proporciona una implementación de varias de las funciones de desplazamiento del concepto de barra de la app de Material Design.FloatingActionButton
: Crea un botón flotante para mostrar un tipo especial de acción promovida. Este elemento de la interfaz de usuario de Material Design se muestra como un ícono circular que flota sobre la interfaz de usuario de la app. Para obtener más información, consulta Cómo agregar un botón de acción flotante.DrawerLayout
: Crea un panel lateral de navegación, es decir, un panel de IU que muestra el menú de navegación principal de la app. Aparece cuando el usuario desliza un dedo desde el borde izquierdo de la pantalla o presiona el ícono correspondiente en la barra de apps. Para obtener más información, consulta Cómo crear un panel lateral de navegación.TabLayout
: Proporciona un diseño para mostrar páginas con pestañas. Este widget se diseñó para usarse con la claseViewPager
.Snackbar
: Proporciona un widget para mostrar comentarios ligeros sobre una operación usando la ventana emergente de la barra de notificaciones.
Gráficos
android.support.graphics.drawable
proporciona compatibilidad con interfaces dibujables en vectores.
El uso de estos elementos permite reemplazar varios recursos PNG con un solo gráfico vectorial definido en XML.
VectorDrawableCompat
proporciona compatibilidad para elementos de diseño de vectores para API nivel 9 y posteriores. AnimatedVectorDrawableCompat
proporciona compatibilidad con elementos de diseño de vectores animados para API nivel 11 y posteriores.
Accesibilidad
El paquete android.support.v4.view.accessibility
proporciona clases de compatibilidad para implementar las funciones de accesibilidad introducidas en la API nivel 14 y posteriores, que permiten a los servicios de accesibilidad observar e identificar la interacción del usuario con los elementos que se muestran en la pantalla.
ExploreByTouchHelper
: Proporciona compatibilidad con accesibilidad en una vista personalizada que representa una colección de elementos lógicos similares a una vista.
Reproducción de contenido multimedia
La biblioteca de compatibilidad de Android proporciona portabilidad a versiones anteriores de la funcionalidad de router de medios para dispositivos que ejecutan versiones de la plataforma anteriores a Android 4.1 (API nivel 16). Estas clases permiten el control de la reproducción de medios en dispositivos Android conectados:
MediaRouter
: Permite que las aplicaciones controlen el enrutamiento de canales de medios y transmisiones desde el dispositivo actual a bocinas externas y dispositivos de destino.MediaControllerCompat
: Permite que una app interactúe con una sesión multimedia en curso. Las apps pueden incluir botones de control de contenido multimedia a través de este mecanismo y enviar otros comandos de reproducción a la sesión.MediaSessionCompat
: Proporciona una interfaz de control remoto para la reproducción de contenido multimedia, que permite la interacción con controladores multimedia, teclas de volumen, botones multimedia y controles de transporte de otras apps o dispositivos independientes.
Apps para TV
El SDK de Android proporciona bibliotecas para admitir factores de forma como pantallas grandes y sus controladores asociados. Una app puede depender de una biblioteca de compatibilidad apropiada para la funcionalidad en una amplia variedad de versiones de plataformas, y también proporcionar contenido en pantallas externas, bocinas y otros dispositivos de destino.
- Paquetes android.support.v17.leanback*
Apps para Wear
El SDK de Android proporciona bibliotecas para admitir relojes. Estas bibliotecas proporcionan funciones en las apps que están disponibles para los usuarios en un reloj.
- Paquetes android.support.wear.*
Utilidades
En la biblioteca de compatibilidad de Android se ofrecen varias funciones que no vienen integradas en el marco de trabajo. Estas bibliotecas ofrecen una variedad de utilidades que pueden usar las apps.
- Paquete android.support.v4.util