Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

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 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 utilizar 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 compatible con versiones anteriores para funciones clave recientes de actividades, como permisos de tiempo de ejecución y transiciones de animación.
    • FragmentActivity: Proporciona una implementación compatible con versiones anteriores para que las actividades usen las versiones de la biblioteca de compatibilidad de las API Fragment y Loader.
    • AppCompatActivity: Proporciona temas de color de material, tonos de widgets y compatibilidad con la barra de aplicaciones a dispositivos anteriores. Para usar esta clase, se deben utilizar temas Theme.AppCompat a fin de obtener una presentación visual uniforme.
  • Fragment: Proporciona una implementación independiente de la clase Fragment del marco de trabajo. Esta clase se debe usar con FragmentActivity.
  • ContextCompat: Proporciona compatibilidad con las funciones introducidas en las 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 del marco de trabajo, y es la clase de 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 compatible con versiones anteriores.
  • ContentResolverCompat: Proporciona compatibilidad para las funciones introducidas en las versiones más recientes de la clase ContentResolver, específicamente el método query() que admite la cancelación de 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 de RecyclerView, consulta la guía sobre la vista de reciclador.
  • 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 clase GridLayout, introducida en Android 4.0 (nivel de API 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 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 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: 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 principal.
  • 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 uniforme mediante la expansión de DialogFragment y el uso de AppCompatDialog.
  • NotificationCompat: Proporciona compatibilidad con nuevos estilos de notificación de una manera compatible con versiones anteriores.
  • 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. Muchas de estas clases se proporcionan en el paquete android.support.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 la barra de aplicaciones 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 está diseñado para su uso con la clase ViewPager.
  • Snackbar: Proporciona un widget para mostrar comentarios ligeros sobre una operación usando la ventana emergente de la barra de notificaciones.

Gráficos

El paquete android.support.graphics.drawable ofrece compatibilidad con elementos de diseño de 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 en el nivel de API 9 y superior. AnimatedVectorDrawableCompat proporciona compatibilidad con elementos de diseño de vectores animados en el nivel de API 11 y superior.

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 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 vistas.

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 el control de la reproducción de medios en dispositivos Android conectados:

  • MediaRouter: Permite que las apps 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 de medios en curso. Las apps pueden incluir botones de control de medios 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.

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.

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.