Guía de funciones de la biblioteca de compatibilidad

Nota: Con el lanzamiento de Android 9.0 (nivel de API 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 con versiones 27 y anteriores, y empaquetados como android.support.*) seguirán estando disponibles en Google Maven. Sin embargo, todo el desarrollo de bibliotecas nuevas se llevará a cabo 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 ofrecen una amplia variedad de clases para compilar apps, desde componentes básicos de apps hasta widgets de interfaz de usuario, manejo de contenido multimedia y componentes de apps para TV. Muchas de las clases son implementaciones retrocompatibles, pero algunas de ellas son características nuevas por sí solas.

En este documento, se 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 cuando compiles tu 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 específicos de biblioteca de compatibilidad en tu proyecto, consulta Paquetes de biblioteca de compatibilidad.

Componentes de la app

Estas clases de biblioteca de compatibilidad proporcionan implementaciones retrocompatibles de funciones importantes de la plataforma central. Esa implementación generalmente extiende las versiones anteriores de la clase para manejar nuevos métodos y funciones que se agregaron en versiones más recientes de la plataforma. Algunas de estas clases son implementaciones completas y estáticas de las APIs del framework.

  • Actividades
    • ActivityCompat: Incluye una implementación retrocompatible para las funciones clave recientes de las 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 APIs de Fragment y Loader.
    • 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 temas Theme.AppCompat para lograr una presentación visual coherente.
  • Fragment: Proporciona una implementación independiente de la clase Fragment de framework. Esta clase se debe usar con FragmentActivity.
  • ContextCompat: Proporciona compatibilidad con las funciones introducidas en versiones más recientes de la clase Context, incluida la 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 clase Intent, incluidos los métodos para seleccionar actividades específicas y para iniciarlas.
  • Loader: Proporciona una implementación estática de la clase Loader de framework y es la clase base para las clases de compatibilidad AsyncTaskLoader y CursorLoader.
  • Preference: Esta clase y sus subclases proporcionan implementaciones de la interfaz de usuario de la configuración de la app de una manera retrocompatible.
  • ContentResolverCompat: Proporciona compatibilidad con las funciones introducidas en versiones más recientes de la clase ContentResolver, específicamente el método query() 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 te 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 te permite crear una vista de ventana limitada de un conjunto de datos más grande y, así, evitar consumir grandes cantidades de memoria al mostrar la lista. Para obtener más información sobre el uso de RecyclerView, 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 retrocompatible de la clase GridLayout, introducida en Android 4.0 (API nivel 14).
  • PercentFrameLayout y PercentRelativeLayout: 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 extraer desde el borde de la pantalla, paneles deslizantes y listas de anidación dentro de listas.

  • DrawerLayout: Crea un diseño que permite que las vistas de panel lateral interactivas se quiten del borde de la ventana de vista.
  • SlidingPaneLayout: Proporciona un diseño horizontal de varios paneles para usar en el nivel superior de la interfaz de usuario de una app a fin de crear diseños que se puedan adaptar sin problemas a muchos tamaños de pantalla diferentes, expandiéndose en pantallas más grandes y colapsando para adaptarse a pantallas más pequeñas.
  • NestedScrollView: Es un diseño de desplazamiento que permite anidar otras vistas de desplazamiento, lo que te 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 varias 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 diálogos de estilo coherente extendiendo DialogFragment y usando AppCompatDialog.
  • NotificationCompat: Proporciona compatibilidad con nuevos estilos de notificación retrocompatibles.
  • 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 una interacción específica con una o más vistas secundarias.
  • AppBarLayout: Proporciona una implementación de muchas 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 promocionada. 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 del panel lateral en la barra de la app. 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 clase ViewPager.
  • Snackbar: Proporciona un widget para mostrar comentarios ligeros sobre una operación mediante la ventana emergente de la barra de notificaciones.

Gráficos

El paquete android.support.graphics.drawable proporciona compatibilidad con elementos de diseño vectoriales. El uso de estos elementos te permite reemplazar varios recursos PNG con un solo gráfico vectorial definido en XML.

VectorDrawableCompat proporciona compatibilidad con elementos de diseño vectoriales en el nivel de API 9 y versiones posteriores. AnimatedVectorDrawableCompat proporciona compatibilidad con elementos de diseño vectoriales animados en el nivel de API 11 y versiones posteriores.

Accesibilidad

El paquete android.support.v4.view.accessibility proporciona clases de compatibilidad para implementar las funciones de accesibilidad introducidas en el nivel de API 14 y versiones posteriores, que permiten que los servicios de accesibilidad observen e identifiquen la interacción del usuario con los elementos que se muestran en la pantalla.

  • ExploreByTouchHelper: Proporciona compatibilidad de 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 un backport de la funcionalidad de router de medios para dispositivos que ejecutan versiones de la plataforma anteriores a Android 4.1 (nivel de API 16). Estas clases permiten controlar la reproducción de contenido multimedia en dispositivos Android conectados:

  • MediaRouter: Permite que las aplicaciones controlen el enrutamiento de canales de medios y transmisiones del 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 proporcionar botones de control 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 controles asociados. Una app puede depender de una biblioteca de compatibilidad adecuada para proporcionar funcionalidad en una amplia variedad de versiones de plataforma, y puede proporcionar contenido en pantallas externas, bocinas y otros dispositivos de destino.

Apps para Wear

El SDK de Android proporciona bibliotecas para admitir relojes. Estas bibliotecas proporcionan a las apps una funcionalidad que está disponible para los usuarios sin importar el momento en que usan un reloj.

Utilidades

La biblioteca de compatibilidad de Android ofrece varias funciones que no están integradas en el framework. Estas bibliotecas ofrecen una variedad de utilidades que pueden usar las apps.