Como posso animar os itens do RecyclerView quando eles estão aparecendo?
O animador de item padrão somente anima quando um dado é adicionado ou removido após a definição dos dados do reciclador. Sou novo desenvolvedor de aplicativos e não tenho idéia por onde começar.
Alguma idéia de como conseguir isso?
android
android-layout
android-recyclerview
PaulNunezM
fonte
fonte
recyclerView.scheduleLayoutAnimation()
após a alteração do conjunto de dados; caso contrário, a animação não funcionaria.EDIT:
De acordo com a documentação do ItemAnimator :
Portanto, a menos que você adicione seus itens um a um
RecyclerView
e atualize a visualização a cada iteração, acho queItemAnimator
seja a solução para sua necessidade.Aqui está como você pode animar os
RecyclerView
itens quando eles aparecem usando um CustomAdapter:E seu custom_item_layout ficaria assim:
Para obter mais informações sobre CustomAdapters e
RecyclerView
, consulte este treinamento na documentação oficial. .Problemas na rolagem rápida
O uso desse método pode causar problemas na rolagem rápida. A exibição pode ser reutilizada enquanto a animação está acontecendo. Para evitar isso, é recomendável limpar a animação quando ela estiver desanexada.
No CustomViewHolder:
Resposta antiga:
Dê uma olhada no repo de Gabriele Mariotti , tenho certeza que você encontrará o que precisa. Ele fornece ItemAnimators simples para o RecyclerView, como SlideInItemAnimator ou SlideScaleItemAnimator.
fonte
onViewDetachedFromWindow
e chamaclearAnimation
a visualização. O problema é que existem animações em execução quando o RecyclerView está tentando reutilizar a exibição.Eu animei o desvanecimento dos
Recyclerview
itens quando eles aparecem pela primeira vez, conforme mostrado no código abaixo. Talvez isso seja útil para alguém.Você também pode substituir
setFadeAnimation()
o seguintesetScaleAnimation()
para animar a aparência dos itens, escalando-os a partir de um ponto:O código acima tem algumas verrugas, na medida em que você rola os
RecyclerView
itens sempre desbotando ou escalando. Se desejar, você pode adicionar código para permitir que a animação aconteça quando o fragmento ou a atividade que contém oRecyclerView
primeiro é criado (por exemplo, obtenha o tempo do sistema na criação e permita apenas a animação nos primeiros milissegundos de FADE_DURATION).fonte
Criei animações a partir da resposta
modification
da pbm com pouco para fazer com que a informação funcionasse apenas uma vezna outra palavra, o
Animation appear with you scroll down only
e em
onBindViewHolder
chamar a funçãofonte
lastPosition
representa o número de pontos de vista prestados, por isso o início, o seu valor-1
, cada vez que uma nova visão está sendo processado começamos uma animação e aumentar a posiçãoVocê pode adicionar um
android:layoutAnimation="@anim/rv_item_animation"
atributo para oRecyclerView
seguinte:obrigado pelo excelente artigo aqui: https://proandroiddev.com/enter-animation-using-recyclerview-and-layoutanimation-part-1-list-75a874a5d213
fonte
Um bom lugar para começar é este: https://github.com/wasabeef/recyclerview-animators/blob/master/animators/src/main/java/jp/wasabeef/recyclerview/adapters/AnimationAdapter.java
Você nem precisa da biblioteca completa, essa classe é suficiente. Então, se você acabou de implementar sua classe Adapter, fornecendo um animador como este:
você verá itens aparecendo na parte inferior à medida que rolam, evitando também o problema com a rolagem rápida.
fonte
Animar itens na visualização de reciclagem quando estão ligados no adaptador pode não ser a melhor idéia, pois isso pode fazer com que os itens na visualização de reciclagem sejam animados em velocidades diferentes. No meu caso, o item no final da revisão da animação é animado para sua posição mais rapidamente do que os que estão no topo e os que estão no topo ainda precisam viajar, fazendo com que pareça desarrumado.
O código original que usei para animar cada item na revisão de reciclagem pode ser encontrado aqui:
http://frogermcs.github.io/Instagram-with-Material-Design-concept-is-getting-real/
Mas vou copiar e colar o código, caso o link seja quebrado.
PASSO 1: Defina isso dentro do método onCreate para garantir que a animação seja executada apenas uma vez:
PASSO 2: Você precisará inserir este código no método em que deseja iniciar a animação:
No link, o escritor está animando os ícones da barra de ferramentas, então ele o colocou dentro deste método:
PASSO 3: Agora escreva a lógica para o startIntroAnimation ():
Minha alternativa preferida:
Prefiro animar a visão geral da reciclagem em vez dos itens contidos nela.
Os PASSOS 1 e 2 permanecem os mesmos.
No PASSO 3, assim que sua chamada à API retornar com seus dados, eu iniciaria a animação.
Isso animaria toda a sua reciclagem para que ela voasse da parte inferior da tela.
fonte
latestPostRecyclerview
?Crie este método no seu adaptador de reciclagem
E, finalmente, adicione esta linha de código no onBindViewHolder
setZoomInAnimation(holder.itemView);
fonte
Em 2019, eu sugeriria colocar todas as animações de itens no ItemAnimator.
Vamos começar declarando o animador na exibição do reciclador:
Declare o animador personalizado,
Semelhante aos acima, há um para o desaparecimento
animateDisappearance
, para adicionaranimateAdd
, para mudaranimateChange
e moveranimateMove
.Um ponto importante seria chamar os distribuidores de animação corretos dentro deles.
fonte
Apenas estende seu adaptador como abaixo
E adicione super método ao onBindViewHolder
É uma maneira automatizada de criar um adaptador animado como "Basheer AL-MOMANI"
fonte
Eu acho que é melhor usá-lo assim: (no adaptador RecyclerView substitui apenas um método)
Se você quiser todas as animações anexadas no RV.
fonte