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. A biblioteca AndroidX contém a Biblioteca de Suporte já existente e inclui os componentes mais recentes do Jetpack.

É possível 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 já existentes para a AndroidX.

As bibliotecas de suporte oferecem uma ampla variedade de classes para criação de apps, desde componentes fundamentais, widgets de interface do usuário, tratamento 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 novas.

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 ver mais informações sobre como adicionar o código da Biblioteca de Suporte ao seu projeto de desenvolvimento de apps, consulte Configuração da Biblioteca de Suporte. Para ver mais informações sobre como incluir pacotes de Bibliotecas de Suporte específicos no projeto, consulte Pacotes de Bibliotecas de Suporte.

Componentes de aplicativo

Essas classes da Biblioteca de Suporte fornecem implementações compatíveis com versões anteriores de importantes recursos da plataforma principal. Normalmente, essas implementações estendem versões anteriores da classe para lidar com novos métodos e recursos adicionados a 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 dos recursos principais 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 usar as versões da Biblioteca de Suporte das APIs Fragment e Loader.
    • AppCompatActivity: fornece temas de cores de materiais, tonalização de widgets e compatibilidade com a 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 da framework. Essa classe precisa ser usada com FragmentActivity.
  • ContextCompat: fornece compatibilidade para recursos introduzidos em versões mais recentes da classe Context, incluindo permissões, acesso a arquivos e informações de cores.
  • IntentCompat: fornece compatibilidade para 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 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 maneira compatível com versões anteriores.
  • ContentResolverCompat: fornece compatibilidade para 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 fornecem 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 mais antigos. Alguns desses widgets estão disponíveis apenas 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 que você crie uma visualização de janela limitada em um conjunto de dados maior, evitando assim o consumo de grandes quantidades de memória ao exibir a lista. Para ver mais informações sobre o uso de RecyclerView, consulte o guia do Recycler View.
  • ViewPager: oferece um layout que permite ao usuário virar as páginas de dados para a esquerda e a direita.
  • GridLayout: fornece um layout com os filhos em uma grade retangular, suportando períodos arbitrários de células contíguas e distribuição de espaço flexível. Esta 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 da própria filha.

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

Contêineres de layout de usos especiais

Essas classes de suporte oferecem implementações compatíveis de padrões de layout específicos, por exemplo, 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 interativas de gavetas sejam puxadas para fora da borda da janela de visualização.
  • SlidingPaneLayout: fornece um layout horizontal de vários painéis para uso no nível superior de uma interface do usuário do app, a fim de criar layouts que se adaptem facilmente a vários tamanhos 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 a criação de listas, com itens que contêm outras listas filhas. Essas listas aninhadas podem conter itens que rolam horizontal ou verticalmente, separados da lista pai.
  • SwipeRefreshLayout: fornece um layout compatível com a atualização de dados para listas ou outro layout com um gesto de deslizar o dedo.

Visualizações, caixas de diálogo 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 Bibliotecas de Suporte para criar cartões 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: fornece compatibilidade com estilos de notificação mais recentes de uma maneira 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 do app.

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 exibições filhas.
  • AppBarLayout: fornece uma implementação de muitos dos recursos de rolagem do conceito da barra de apps 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. Aparece quando o usuário desliza o dedo a partir da borda esquerda da tela ou toca no ícone de gaveta na barra do app. Para ver mais informações, consulte Criar uma gaveta de navegação.
  • TabLayout: fornece um layout para a exibição de 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 barra de snackbar.

Gráficos

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

.VectorDrawableCompat fornece compatibilidade com gráficos vetoriais na API de nível 9 e posteriores. AnimatedVectorDrawableCompat oferece compatibilidade com drawables vetoriais animados na API de nível 11 e posteriores.

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 posteriores, que permitem aos serviços de acessibilidade observar e identificar a interação do usuário com itens exibidos na tela.

  • ExploreByTouchHelper: fornece compatibilidade com acessibilidade em uma Visualização personalizada que representa uma coleção de itens lógicos semelhantes a visualização.

Reprodução de mídia

A Biblioteca de Suporte do Android fornece uma retrocompatibilidade da funcionalidade de 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 apps controlem o roteamento de canais e fluxos de mídia 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 fornecer 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 compatíveis com formatos como telas grandes e os controladores associados. Os apps podem depender da Biblioteca de Suporte apropriada 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 fornecem funcionalidade para apps que ficam disponíveis para os usuários quando estão usando um relógio.

Utilidades

A Biblioteca de Suporte do Android oferece uma série de recursos que não estão incorporados no framework. Essas bibliotecas oferecem uma variedade de utilitários que os apps podem usar.