O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

ViewPager2

Guia do usuário  Amostra de código (link em inglês)
Mostre visualizações ou fragmentos em um formato deslizante.
Atualização mais recente Versão estável atual Próximo candidato a lançamento Versão Beta Versão Alfa
1º de abril de 2020 1.0.0 - - 1.1.0-alpha01

Dependências do AndroidX

Para usar ViewPager2, adicione a seguinte dependência do AndroidX ao arquivo build.gradle do projeto:

    dependencies {
        implementation "androidx.viewpager2:viewpager2:1.0.0"
    }
    

Feedback

Seu feedback ajuda a melhorar o Jetpack. Avise se você descobrir novos problemas ou tiver ideias para melhorar esta biblioteca. Consulte os problemas existentes nesta biblioteca antes de criar um novo. Adicione seu voto a um problema existente clicando no botão de estrela.

Criar novo problema

Consulte a documentação do Issue Tracker para saber mais.

Versão 1.1.0

Versão 1.1.0-alpha01

1º de abril de 2020

Lançamento do androidx.viewpager2:viewpager2:1.1.0-alpha01. A versão 1.1.0-alpha01 contém essas confirmações (link em inglês).

Essa versão acompanha uma mudança em RecyclerView 1.2.0-alpha02 preenchendo CollectionInfo e CollectionItemInfo, que o RecyclerView não oferece mais por padrão. Ao atualizar para RecyclerView 1.2.0-alpha02, atualize também ViewPager2 para evitar regressões de acessibilidade.

Novos recursos

  • A interface FragmentTransactionCallback foi incluída para detectar mudanças no ciclo de vida do fragmento que ocorrem no FragmentStateAdapter. (Ibda77, link em inglês)

Correções de bugs

  • Correção do problema FragmentStateAdapter com a visibilidade inicial do menu de fragmentos ao adicionar um fragmento ao FragmentManager. (I9d2ff, b/144442240, links em inglês)

Versão 1.0.0

Versão 1.0.0

20 de novembro de 2019

androidx.viewpager2:viewpager2:1.0.0 é lançado sem mudanças desde 1.0.0-rc01. A versão 1.0.0 contém essas confirmações (link em inglês).

Principais recursos da versão 1.0.0

  • Melhorias da implementação anterior do ViewPager:
    • Compatibilidade com layout RTL (da direita para a esquerda)
    • Compatibilidade com orientação vertical
    • Compatibilidade confiável com Fragment (incluindo processamento de mudanças na coleção subjacente de Fragment)
    • Animações de mudança do conjunto de dados (incluindo compatibilidade com DiffUtil)
  • Migração fácil da implementação do ViewPager anterior (paridade de API sempre que possível). Consulte o guia de migração e o app de amostra (link em inglês).

Consulte o guia sobre como usar o ViewPager2 para deslizar entre fragmentos.

Versão 1.0.0-rc01

23 de outubro de 2019

androidx.viewpager2:viewpager2:1.0.0-rc01 é lançado sem mudanças desde 1.0.0-beta05. A versão 1.0.0-rc01 contém essas confirmações (link em inglês).

Versão 1.0.0-beta05

9 de outubro de 2019

Lançamento do androidx.viewpager2:viewpager2:1.0.0-beta05. A versão 1.0.0-beta05 contém essas confirmações (link em inglês).

Correções de bugs

  • Correção de requestFocus em uma página fora da tela que causa mudança de página. O comportamento agora é consistente com o ViewPager original. (b/140656866, link em inglês)
  • Correção de focus que permanece em uma página fora da tela após mudança de página. Agora, o foco fica liberado ao mudar de página. (b/140656866, link em inglês)
  • Correção de pedidos de Fragment para transações de pausar/retomar ao mudar de página. Agora, sempre pausamos o item principal antigo antes de retomar o novo item. (b/139489059, link em inglês)
  • Correção de canScrollHorizontally(int) e canScrollVertically(int). Agora, eles retornam se o ViewPager2 consegue rolar na direção indicada. (b/141848404, link em inglês)
  • Um problema em SwipeRefreshLayout foi corrigido para funcionar melhor com o ViewPager2.

Versão 1.0.0-beta04

5 de setembro de 2019

Lançamento do androidx.viewpager2:viewpager2:1.0.0-beta04. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Correções de bugs

  • Correção de um bug de caso extremo de FragmentStateAdapter com pilha de retorno Fragment. (b/139095195, link em inglês)
  • Correção de EditText com determinadas configurações de atributo que causam um salto de rolagem/página ao digitar/focar. (b/138044582, b/139432498, links em inglês)
  • Correção de um problema com instâncias ItemDecoration e solução alternativa para o posicionamento do indicador de rolagem. (b/139012032, link em inglês)
  • Corrigidos vários problemas em outros componentes para funcionar melhor com ViewPager2: RecyclerView, NestedScrollView e Navegação.

Versão 1.0.0-beta03

7 de agosto de 2019

Lançamento do androidx.viewpager2:viewpager2:1.0.0-beta03. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Correções de bugs

  • Correção de problema de FragmentStateAdapter com o estado Fragment transitório. b/134246546 (link em inglês).
  • Correção dos problemas de currentItem e scrollState, quando um conjunto de dados muda durante uma rolagem suave (casos extremos tratados). b/137642608 (link em inglês).
  • Correção para as animações de PageTransformer (incluindo MarginPageTransformer) em conflito com as animações de alteração do conjunto de dados. b/134658996 (link em inglês).
  • Correção de animações de rolagem suave em grandes conjuntos de dados (limite do valor de número inteiro de float). b/134858960 (link em inglês).

Versão 1.0.0-beta02

19 de julho de 2019

Lançamento do androidx.viewpager2:viewpager2:1.0.0-beta02. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Correções de bugs

  • Removida dependência não intencional do Jacoco, introduzida no 1.0.0-beta01. (b/137782951, link em inglês)

Versão 1.0.0-beta01

17 de julho de 2019

Lançamento do androidx.viewpager2:viewpager2:1.0.0-beta01. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Correções de bugs

  • Correção da falha de ViewPager2.updateCurrentItem ao rolar e atualizar o conjunto de dados.
  • Correção da falha de NullPointerException relacionada a ViewPager2.isLayoutRtl.
  • TOUCH_SLOP_PAGING agora é uma tolerância de toque padrão.
  • Correção de eventos OnPageChangeCallback para adaptadores vazios (página 0, em vez de -1, para paridade com ViewPager1).

Problemas conhecidos

  • Ainda estamos trabalhando para resolver problemas pendentes antes de passar para a versão Estável.

Versão 1.0.0-alpha06

2 de julho de 2019

Lançamento do androidx.viewpager2:viewpager2:1.0.0-alpha06. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Esse é o nosso último alfa planejado antes de congelar a API e passar para a versão beta. Envie-nos um feedback sobre a API.

Novos recursos

  • Fundamentos para melhoria da acessibilidade: ACTION_PAGE_RIGHT, ACTION_PAGE_DOWN etc.

Mudanças na API

  • FragmentStateAdapter: Fragments de itens não principais estão limitados a STARTED, e o menuVisibility correspondente é definido como "falso".
  • PageTransformer, MarginPageTransformer, CompositePageTransformer: correção da documentação para position.

Correções de bugs

  • Correção de currentItem depois da mudança do conjunto de dados/adaptador.
  • Corrigido o problema de MarginPageTransformer com offscreenPageLimit.
  • Corrigidas ações de acessibilidade em comportamento FakeDrag.

Versão 1.0.0-alpha05

5 de junho de 2019

Lançamento do androidx.viewpager2:viewpager2:1.0.0-alpha05. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Novos recursos

  • Introdução de ItemDecorator com um comportamento consistente com RecyclerView.
  • Introdução de MarginPageTransformer para oferecer a capacidade de criar espaço entre as páginas (fora da inserção da página).
  • Introdução de CompositePageTransformer para oferecer a capacidade de combinar vários PageTransformers.

Mudanças na API

  • Renomeação do método FragmentStateAdapter#getItem para FragmentStateAdapter#createFragment: o nome anterior do método se mostrou uma fonte de bugs no passado.
  • Mudança do valor OFFSCREEN_PAGE_LIMIT_DEFAULT de 0 para -1. Não será necessário alterar o código do cliente se a constante OFFSCREEN_PAGE_LIMIT_DEFAULT for usada.

Correções de bugs

  • Corrigido o comportamento de getCurrentItem() quando SCROLL_STATE_SETTLING é interrompido por uma ação de arrastar na direção oposta.
  • Resolvidos os problemas no carregador de classe FragmentStateAdapter no contexto "Don't keep activities".
  • Aprimorada a documentação de setOffscreenPageLimit.

Versão 1.0.0-alpha04

7 de maio de 2019

Lançamento do androidx.viewpager2:viewpager2:1.0.0-alpha04. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Novos recursos

  • offscreenPageLimit: permite um controle rigoroso do número de Views e Fragments da páginas mantidas na hierarquia de visualização.

Mudanças na API

  • Os atributos orientation e isUserScrollable não fazem mais parte do SavedState.
  • Os métodos saveState e restoreState foram considerados finais em FragmentStateAdapter.
  • As anotações ViewPager2.Orientation e ViewPager2.ScrollState se tornaram não públicas.

Correções de bugs

  • SavedState: foi corrigido um problema com a restauração quando Activity é destruído/recriado.
  • SavedState: a restauração é atrasada até que o adaptador seja configurado.
  • OnPageChangeCallback: casos extremos menores foram corrigidos.

Versão 1.0.0-alpha03

3 de abril de 2019

Lançamento do androidx.viewpager2:viewpager2:1.0.0-alpha03. As confirmações incluídas nessa versão podem ser encontradas aqui (link em inglês).

Novos recursos

  • Capacidade de rolar programaticamente o ViewPager2: fakeDragBy(offsetPx).

Mudanças na API

  • FragmentStateAdapter agora requer um objeto Lifecycle. Dois construtores de utilitários foram adicionados para extraí-lo dos hosts FragmentActivity ou Fragment.

Correções de bugs

  • Várias correções de compatibilidade de Fragment:
    • Gerenciamento de atualizações de conjuntos de dados enquanto elas estão minimizadas ou durante uma rotação de tela.
    • Remoção de Fragments irrelevantes depois da rotação.
    • Remoção do estado salvo dos itens removidos.
  • PageChangeCallback: correção do cálculo de ajuste para páginas com margens.

Versão 1.0.0-alpha02

13 de março de 2019

Lançamento do androidx.viewpager2:viewpager2:1.0.0-alpha02. A lista completa de confirmações incluídas nessa versão pode ser encontrada neste link (link em inglês).

Novos recursos

  • Capacidade de desativar a entrada do usuário (setUserInputEnabled, isUserInputEnabled).

Mudanças na API

  • A classe ViewPager2 foi considerada final.

Correções de bugs

  • Estabilidade de FragmentStateAdapter corrigida.

Versão 1.0.0-alpha01

7 de fevereiro de 2019

Lançamento do androidx.viewpager2:viewpager2 1.0.0-alpha01. Essa é a primeira versão do ViewPager2.

Novos recursos

  • Comparação com o antecessor android.support.v4.view.ViewPager (VP1):
    • Compatibilidade com layout da direita para a esquerda (RTL, na sigla em inglês).
    • Compatibilidade com orientação vertical.
    • notifyDataSetChanged totalmente funcional (bugs do VP1 resolvidos).

Mudanças na API.

  • FragmentStateAdapter substitui FragmentStatePagerAdapter.
  • RecyclerView.Adapter substitui PagerAdapter.
  • registerOnPageChangeCallback substitui addPageChangeListener.

Problemas conhecidos

  • clipToPadding.
  • Sem fakeDrag.
  • JavaDoc.
  • Rolagem aninhada paralela à orientação.
  • Sem controle de limite fora da tela.
  • Requer melhor integração do TabLayout.
  • Sem configurador de pageWidth (forçado 100%/100%).
  • Transformador de página: sem opção de camada de hardware/software. Nenhuma ordem de desenho reversa.
  • O item atual continua visível depois que uma página é inserida antes dele.
  • A navegação pelo teclado precisa de um trabalho.
  • Melhorias na estabilidade e desempenho de FragmentStateAdapter em breve.