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

Guia de recursos da biblioteca de suporte

Observação: com o lançamento do Android 9.0 (API nível 28), há uma nova versão da biblioteca de suporte chamada AndroidX, que faz parte do Jetpack. A 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 (da versão 27 e anteriores, empacotados como android.support.*) permanecerão disponíveis no Maven do Google. 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 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 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 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 a implementação compatível com versões anteriores para os principais recursos recentes de atividades, como permissões de tempo de execução e transições de animação.
    • FragmentActivity: disponibiliza implementação compatível com versões anteriores para atividades, a fim de usar as versões de biblioteca de suporte das APIs Fragment e Loader.
    • AppCompatActivity: oferece temas em cores de materiais, tonalidade de widgets e compatibilidade com a barra do app para dispositivos mais antigos. O uso dessa classe requer que você use temas Theme.AppCompat para conseguir uma apresentação visual consistente.
  • Fragment: oferece uma implementação independente 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 compatibilidade com recursos introduzidos em versões mais recentes da classe Intent, incluindo métodos para selecionar e iniciar atividades específicas.
  • Loader: oferece uma implementação estática da classe Loader do framework e é a base para as classes de suporte AsyncTaskLoader e CursorLoader.
  • Preference: esta classe 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: oferece compatibilidade com recursos introduzidos em versões mais recentes da classe ContentResolver, especificamente o método query(), que pode 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 com 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 mais informações sobre como usar a classe RecyclerView, consulte o guia da Recycler View.
  • ViewPager: oferece um layout que permite ao usuário virar as páginas de dados para a esquerda e a direita.
  • GridLayout: oferece um layout com os filhos em uma grade retangular, compatível com intervalos arbitrários de células contíguas e distribuição de espaço flexível. Essa classe disponibiliza uma versão compatível com versões anteriores da classe GridLayout, introduzida no Android 4.0 (API nível 14).
  • PercentFrameLayout e PercentRelativeLayout: oferecem 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 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, 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 que você crie 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: oferece um layout compatível com a atualização de dados para listas ou outro layout com 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: oferece caixas de diálogo com estilo consistente estendendo DialogFragment e usando AppCompatDialog.
  • NotificationCompat: oferece compatibilidade com estilos de notificação mais recentes de uma maneira compatível com versões anteriores.
  • SearchView: disponibiliza uma classe para o usuário inserir uma consulta de pesquisa e enviar uma solicitação para 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 as recomendações de interface do usuário do Material Design. Muitas dessas classes são disponibilizadas no pacote android.support.design.

  • CoordinatorLayout: oferece 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: oferece uma implementação de muitos dos recursos de rolagem do conceito de barra do app 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 mais informações, consulte Adicionar um botão de ação flutuante.
  • DrawerLayout: cria uma gaveta de navegação, ou seja, 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 mais informações, consulte Criar uma gaveta de navegação.
  • TabLayout: oferece um layout para exibir páginas com guias. Esse widget foi desenvolvido para ser usado com a classe ViewPager.
  • Snackbar: oferece um widget para exibir feedback leve sobre uma operação usando o pop-up snackbar.

Gráficos

O pacote android.support.graphics.drawable é compatível com os drawables vetoriais. Ao usar drawables vetoriais, você pode substituir vários recursos PNG por um único gráfico vetorial, definido em XML.

VectorDrawableCompat oferece compatibilidade com drawables vetoriais em API nível 9 e posteriores. AnimatedVectorDrawableCompat oferece compatibilidade com drawables vetoriais animados em API nível 11 e posteriores.

Acessibilidade

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

  • ExploreByTouchHelper: oferece compatibilidade com acessibilidade em uma Visualização personalizada que representa um conjunto de itens lógicos semelhantes a visualizações.

Reprodução de mídia

A Biblioteca de Suporte do Android fornece 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 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: oferece 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.