ViewPager2
Atualização mais recente | Versão estável | Versão candidata a lançamento | Versão Beta | Versão Alfa |
---|---|---|---|---|
14 de maio de 2024 | 1.1.0 | - | - | - |
Dependências do AndroidX
Para usar ViewPager2
, adicione a seguinte dependência do AndroidX ao arquivo build.gradle
do projeto:
Groovy
dependencies { implementation "androidx.viewpager2:viewpager2:1.1.0" }
Kotlin
dependencies { implementation("androidx.viewpager2:viewpager2:1.1.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 conhecidos nesta biblioteca antes de criar um novo. Adicione seu voto a um problema clicando no botão de estrela.
Consulte a documentação do Issue Tracker para saber mais.
Versão 1.1.0
Versão 1.1.0
14 de maio de 2024
Lançamento de androidx.viewpager2:viewpager2:1.1.0
. A versão 1.1.0 contém estas confirmações (link em inglês).
Mudanças importantes desde a versão 1.0.0
- Correção de falhas quando usadas com a RecyclerView
1.3.1-rc01
ou mais recente ViewPager2
agora preenche corretamente oCollectionInfo
e oCollectionItemInfo
que a RecyclerView1.2.0-alpha02
e versões mais recentes não preenchem mais por padrão.- A interface
FragmentTransactionCallback
foi incluída para detectar mudanças no ciclo de vida do fragmento que ocorrem noFragmentStateAdapter
- Correção do problema
FragmentStateAdapter
com a visibilidade inicial do menu de fragmentos ao adicionar um fragmento aoFragmentManager
. - Correção do envio de encartes de janela: todas as páginas agora recebem os mesmos encartes. Devido à forma como
WindowInsets
são enviados em versões antigas da API (anteriores ao nível 30 da API), que podem impedir a disponibilidade de encartes para visualizações irmãs, é necessário ativar essa correção peloWindowInsetsApplier.install(viewPager2)
se quiser aplicar encartes em dispositivos com API 30 ou anteriores.
Versão 1.1.0-rc01
1o de maio de 2024
Lançamento de androidx.viewpager2:viewpager2:1.1.0-rc01
sem mudanças importantes desde a versão 1.1.0-beta02. A versão 1.1.0-rc01 contém this commits.
Versão 1.1.0-beta02
24 de maio de 2023
Lançamento de androidx.viewpager2:viewpager2:1.1.0-beta02
. A versão 1.1.0-beta02 contém estas confirmações.
Mudanças na API
- Adição de callbacks para salvamento do estado do fragmento em
FragmentTransactionCallback
(I45b90). ViewPager2
agora não tenta mais corrigir o envio corrompido deWindowInsets
de versões antigas da API (< 30), porque a correção em si pode ser prejudicial aos irmãos daViewPager2
A correção ainda está disponível, mas agora é opcional para os desenvolvedores decidirem caso a caso. Ative a correção chamandoWindowInsetsApplier.install(viewPager2))
. (Ic9a85).
Correções de bugs
- Correção de problemas de compatibilidade com versões mais recentes do
RecyclerView
Os usuários desta versão doViewPager2
precisam atualizar para, no mínimo,RecyclerView
1.3.1-rc01.
Versão 1.1.0-beta01
4 de agosto de 2021
Lançamento de androidx.viewpager2:viewpager2:1.1.0-beta01
. A versão 1.1.0-beta01 contém estas confirmações.
Mudanças na API
Atualização do AndroidX para usar o Kotlin 1.4 (Id6471, b/165307851, b/165300826).
Migração de todas as bibliotecas androidx para Java 8 (2923f39).
Correções de bugs
- Correção no envio de encartes de janela: todas as páginas agora recebem os mesmos encartes (I47fef)
Versão 1.1.0-alpha01
1º de abril de 2020
androidx.viewpager2:viewpager2:1.1.0-alpha01
é lançado. A versão 1.1.0-alpha01 contém estas confirmações.
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 noFragmentStateAdapter
(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 aoFragmentManager
. (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 de 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 deFragment
) - 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 de 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). - 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). - 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). - Correção de
canScrollHorizontally(int)
ecanScrollVertically(int)
. Agora, eles retornam se o ViewPager2 consegue rolar na direção indicada (b/141848404) - 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 de 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 retornoFragment
(b/139095195). - 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). - Correção de um problema com instâncias
ItemDecoration
e solução alternativa para o posicionamento do indicador de rolagem (b/139012032). - 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 de 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 estadoFragment
transitório b/134246546. - Correção dos problemas de
currentItem
escrollState
, quando um conjunto de dados muda durante uma rolagem suave (casos extremos tratados) b/137642608. - Correção para as animações de
PageTransformer
(incluindoMarginPageTransformer
) em conflito com as animações de alteração do conjunto de dados b/134658996. - Correção de animações de rolagem suave em grandes conjuntos de dados (limite do valor de número inteiro de
float
) b/134858960.
Versão 1.0.0-beta02
19 de julho de 2019
Lançamento de 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 de androidx.viewpager2:viewpager2:1.0.0-beta01
. As confirmações incluídas nessa versão podem ser encontradas neste link.
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 aViewPager2.isLayoutRtl
. TOUCH_SLOP_PAGING
agora é uma tolerância de toque padrão.- Correção de eventos
OnPageChangeCallback
para adaptadores vazios (página0
, em vez de-1
, para paridade comViewPager1
).
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 de 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
:Fragment
s de itens não principais estão limitados aSTARTED
, e omenuVisibility
correspondente é definido como "falso".PageTransformer
,MarginPageTransformer
,CompositePageTransformer
: correção da documentação paraposition
.
Correções de bugs
- Correção de
currentItem
depois da mudança do conjunto de dados/adaptador. - Corrigido o problema de
MarginPageTransformer
comoffscreenPageLimit
. - Corrigidas ações de acessibilidade em comportamento
FakeDrag
.
Versão 1.0.0-alpha05
5 de junho de 2019
Lançamento de androidx.viewpager2:viewpager2:1.0.0-alpha05
. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
- Introdução de
ItemDecorator
com um comportamento consistente comRecyclerView
. - 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áriosPageTransformer
s.
Mudanças na API
- Renomeação do método
FragmentStateAdapter#getItem
paraFragmentStateAdapter#createFragment
: o nome anterior do método se mostrou uma fonte de bugs no passado. - Mudança do valor
OFFSCREEN_PAGE_LIMIT_DEFAULT
de0
para-1
. Não será necessário alterar o código do cliente se a constanteOFFSCREEN_PAGE_LIMIT_DEFAULT
for usada.
Correções de bugs
- Corrigido o comportamento de
getCurrentItem()
quandoSCROLL_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 de androidx.viewpager2:viewpager2:1.0.0-alpha04
. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
offscreenPageLimit
: permite um controle rigoroso do número deView
s eFragment
s da páginas mantidas na hierarquia de visualização.
Mudanças na API
- Os atributos
orientation
eisUserScrollable
não fazem mais parte doSavedState
. - Os métodos
saveState
erestoreState
foram considerados finais emFragmentStateAdapter
. - As anotações
ViewPager2.Orientation
eViewPager2.ScrollState
se tornaram não públicas.
Correções de bugs
SavedState
: foi corrigido um problema com a restauração quandoActivity
é 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 de androidx.viewpager2:viewpager2:1.0.0-alpha03
. As confirmações incluídas nessa versão podem ser encontradas neste link.
Novos recursos
- Capacidade de rolar programaticamente o ViewPager2:
fakeDragBy(offsetPx)
.
Mudanças na API
FragmentStateAdapter
agora requer um objetoLifecycle
. Dois construtores de utilitários foram adicionados para extraí-lo dos hostsFragmentActivity
ouFragment
.
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 de androidx.viewpager2:viewpager2:1.0.0-alpha02
. A lista completa de confirmações incluídas nessa versão pode ser encontrada neste link.
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 de androidx.viewpager2:viewpager2 1.0.0-alpha01
. Essa é a primeira versão do ViewPager2.
Novos recursos
- Comparando 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
substituiFragmentStatePagerAdapter
.RecyclerView.Adapter
substituiPagerAdapter
.registerOnPageChangeCallback
substituiaddPageChangeListener
.
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.