Guia de recursos da Biblioteca de Suporte

Observação: com o lançamento do Android 9.0 (API de nível 28), há uma nova versão da Biblioteca de Suporte denominada AndroidX, que faz parte do Jetpack. O AndroidX contém a Biblioteca de Suporte existente e inclui os componentes mais recentes do Jetpack.

Você pode continuar usando a Biblioteca de Suporte. Os artefatos históricos com versões 27 e anteriores, e empacotados como android.support.*, permanecerão disponíveis no Google Maven. No entanto, todo o desenvolvimento da nova biblioteca ocorrerá na biblioteca AndroidX.

Recomendamos o uso das bibliotecas AndroidX em todos os novos projetos. Considere também migrar os projetos existentes para o AndroidX.

As Bibliotecas de Suporte oferecem uma ampla variedade de classes para a criação de apps, desde componentes fundamentais, widgets de interface do usuário, processamento de mídia e componentes de apps para TV. Muitas das classes são implementações compatíveis com versões anteriores, mas algumas delas são novos recursos.

Este documento fornece uma visão geral das categorias importantes de recursos disponíveis na Biblioteca de Suporte e de classes específicas que você precisa conhecer ao criar seu app.

Para mais informações sobre como adicionar o código da Biblioteca de Suporte ao seu projeto de desenvolvimento de app, consulte Configuração da Biblioteca de Suporte. Para mais informações sobre como incluir pacotes de Biblioteca de Suporte específicos no projeto, consulte Pacotes de Biblioteca de Suporte.

Componentes do app

Essas classes da Biblioteca de Suporte oferecem implementações compatíveis com versões anteriores de recursos importantes e importantes da plataforma. Essas implementações normalmente estendem versões anteriores da classe para lidar com novos métodos e recursos adicionados em versões mais recentes da plataforma. Algumas dessas classes são implementações estáticas completas das APIs de framework.

  • Atividades
    • ActivityCompat: inclui implementação compatível com versões anteriores para recursos importantes e recentes das atividades, como Permissões de tempo de execução e transições de animação.
    • FragmentActivity: fornece implementação compatível com versões anteriores para que as atividades usem as versões da Biblioteca de Suporte das APIs Fragment e Loader.
    • AppCompatActivity: fornece temas de cores do Material Design, tonalidade de widgets e suporte à barra de apps para dispositivos anteriores. O uso dessa classe requer que você use temas Theme.AppCompat para uma apresentação visual consistente.
  • Fragment: fornece uma implementação autônoma da classe Fragment do framework. Essa classe precisa ser usada com FragmentActivity.
  • ContextCompat: oferece compatibilidade com recursos introduzidos em versões mais recentes da classe Context, incluindo permissões, acesso a arquivos e informações de cores.
  • IntentCompat: oferece suporte a recursos introduzidos em versões mais recentes da classe Intent, incluindo métodos para selecionar e iniciar atividades específicas.
  • Loader: fornece uma implementação estática da classe Loader do framework e é a classe de base das classes de suporte AsyncTaskLoader e CursorLoader.
  • Preference: esta classe e as subclasses correspondentes disponibilizam implementações da interface do usuário das configurações do app de uma forma compatível com versões anteriores.
  • ContentResolverCompat: oferece suporte a recursos introduzidos em versões mais recentes da classe ContentResolver, especificamente o método query(), com suporte para cancelar uma consulta em andamento.

Interface do usuário

Essas classes de Biblioteca de Suporte oferecem implementações dos principais widgets e comportamentos da interface do usuário, além de ajudar a criar interfaces de app mais modernas em dispositivos anteriores. Alguns desses widgets só estão disponíveis por meio da Biblioteca de Suporte.

Contêineres de layout de uso geral

Essas classes de suporte fornecem contêineres de interface do usuário que podem ser adaptados para diferentes casos de uso de design.

  • RecyclerView: cria um layout para exibir listas longas usando uma estratégia para evitar alto consumo de memória. Essa classe permite criar uma visualização de janela limitada em um conjunto de dados maior, evitando o consumo de grandes quantidades de memória ao exibir a lista. Para saber mais sobre o uso de RecyclerView, consulte o guia Recycler View.
  • ViewPager: fornece um layout que permite ao usuário virar as páginas de dados para a esquerda e para a direita.
  • GridLayout: fornece um layout com os filhos em uma grade retangular, compatível com períodos arbitrários de células contíguas e distribuição de espaço flexível. Essa classe fornece uma versão compatível com versões anteriores da classe GridLayout, introduzida no Android 4.0 (API de nível 14).
  • PercentFrameLayout e PercentRelativeLayout: fornecem layouts compatíveis com dimensões e margens baseadas em porcentagem para visualizações e conteúdo filhos.

Observação:as classes ViewPager, RecyclerView, PercentFrameLayout e PercentRelativeLayout estão disponíveis apenas nas Bibliotecas de Suporte.

Contêineres de layout para fins especiais

Essas classes de suporte oferecem implementações compatíveis de padrões de layout específicos, como visualizações de gaveta que podem ser extraídas da borda da tela, painéis deslizantes e listas de aninhamento dentro de listas.

  • DrawerLayout: cria um layout que permite que visualizações de gaveta interativas sejam extraídas da borda da janela de visualização.
  • SlidingPaneLayout: oferece um layout horizontal de vários painéis para uso no nível superior de uma interface do usuário do app para criar layouts que se adaptam facilmente a muitos tamanhos diferentes de tela, expandindo em telas maiores e recolhendo para caber em telas menores.
  • NestedScrollView: um layout de rolagem compatível com o aninhamento de outras visualizações de rolagem, permitindo que você crie listas, com itens que contêm outras listas filhas. Essas listas aninhadas podem conter itens que rolam horizontalmente ou verticalmente, separadamente da lista mãe.
  • SwipeRefreshLayout: oferece um layout compatível com a atualização de dados de listas ou outro layout com um gesto de deslizar o dedo.

Visualizações, diálogos e widgets

As bibliotecas de suporte fornecem várias classes para exibir conteúdo e fornecer elementos de interação do usuário em um layout.

  • CardView: uma classe personalizada de Biblioteca de Suporte para criar cards de exibição de estilo do Material Design. Essa classe é baseada no FrameLayout, com cantos arredondados e uma sombra projetada.
  • AppCompatDialogFragment: fornece caixas de diálogo com estilo consistente, estendendo DialogFragment e usando AppCompatDialog.
  • NotificationCompat: oferece suporte a estilos de notificação mais recentes de uma forma compatível com versões anteriores.
  • SearchView: fornece uma classe para o usuário inserir uma consulta de pesquisa e enviar uma solicitação a um provedor de pesquisa, que se destina principalmente ao uso em uma barra de apps.

Material Design

As bibliotecas de suporte fornecem várias classes para implementar recomendações de interface do usuário do Material Design.

  • CoordinatorLayout: fornece um contêiner de nível superior para layouts que incorporam componentes e comportamento do Material Design. Essa classe também pode ser usada como um contêiner para interação específica com uma ou mais visualizações filhas.
  • AppBarLayout: fornece uma implementação de muitos dos recursos de rolagem do conceito da barra de apps (em inglês) do Material Design.
  • FloatingActionButton: cria um botão flutuante para exibir um tipo especial de ação promovida. Esse elemento da interface do usuário do Material Design é mostrado como um ícone circulado flutuando acima da interface do usuário do app. Para ver mais informações, consulte Adicionar um botão de ação flutuante.
  • DrawerLayout: cria uma gaveta de navegação, um painel de IU que mostra o menu de navegação principal do app. Ela aparece quando o usuário desliza um dedo a partir da borda esquerda da tela ou toca no ícone de gaveta na barra de apps. Para ver mais informações, consulte Criar uma gaveta de navegação.
  • TabLayout: fornece um layout para exibir páginas com guias. Este widget foi projetado para uso com a classe ViewPager.
  • Snackbar: fornece um widget para exibir feedback leve sobre uma operação usando o pop-up da snackbar.

Gráficos

O pacote android.support.graphics.drawable oferece suporte a drawables vetoriais. Ao usar drawables vetoriais, você pode substituir vários recursos PNG por um único gráfico vetorial, definido em XML.

VectorDrawableCompat oferece suporte a drawables vetoriais na API de nível 9 e mais recentes. AnimatedVectorDrawableCompat oferece suporte a drawables vetoriais animados na API de nível 11 e mais recentes.

Acessibilidade

O pacote android.support.v4.view.accessibility fornece classes de compatibilidade para implementar recursos de acessibilidade introduzidos na API de nível 14 e mais recentes, que permitem que os serviços de acessibilidade observem e identifiquem a interação do usuário com itens exibidos na tela.

  • ExploreByTouchHelper: fornece suporte à acessibilidade em uma View personalizada que representa uma coleção de itens lógicos semelhantes a visualizações.

Reprodução de mídia

A Biblioteca de Suporte do Android oferece uma retrocompatibilidade da funcionalidade do roteador de mídia para dispositivos que executam versões da plataforma anteriores ao Android 4.1 (API de nível 16). Essas classes permitem o controle da reprodução de mídia em dispositivos Android conectados:

  • MediaRouter: permite que os aplicativos controlem o roteamento de canais de mídia e streams do dispositivo atual para alto-falantes externos e dispositivos de destino.
  • MediaControllerCompat: permite que um app interaja com uma sessão de mídia em andamento. Os apps podem oferecer botões de controle de mídia por meio desse mecanismo e enviar outros comandos de reprodução para a sessão.
  • MediaSessionCompat: fornece uma interface de controle remoto para reprodução de mídia, permitindo a interação com controladores de mídia, teclas de volume, botões de mídia e controles de transporte em outros apps ou em dispositivos separados.

Apps para TV

O SDK do Android fornece bibliotecas para oferecer suporte a formatos, como telas grandes e os controladores associados. Um app pode depender da Biblioteca de Suporte adequada para fornecer funcionalidade em uma ampla variedade de versões de plataforma e fornecer conteúdo em telas, alto-falantes e outros dispositivos de destino externos.

Apps para o Wear

O SDK do Android fornece bibliotecas para compatibilidade com relógios. Essas bibliotecas oferecem funcionalidades a apps que estão disponíveis aos usuários sempre que estão usando um relógio.

Utilitários

A Biblioteca de Suporte do Android oferece vários recursos que não estão integrados ao framework. Essas bibliotecas oferecem uma variedade de utilitários que os apps podem usar.