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

ViewPager2

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 (link em inglês) 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.