Com a nova API de animação que foi introduzida no Android 3.0 (Honeycomb), é muito simples criar essas animações.
Deslizando para View
baixo a uma distância:
view.animate().translationY(distance);
Posteriormente, você pode deslizar a View
parte de trás para sua posição original assim:
view.animate().translationY(0);
Você também pode combinar facilmente várias animações. A animação a seguir deslizará um View
por sua altura e diminuirá ao mesmo tempo:
// Prepare the View for the animation
view.setVisibility(View.VISIBLE);
view.setAlpha(0.0f);
// Start the animation
view.animate()
.translationY(view.getHeight())
.alpha(1.0f)
.setListener(null);
Você pode desbotar a View
parte traseira e deslizá-la de volta à sua posição original. Também definimos um AnimatorListener
para que possamos definir a visibilidade das View
costas GONE
quando a animação terminar:
view.animate()
.translationY(0)
.alpha(0.0f)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
view.setVisibility(View.GONE);
}
});
View
quando sua visibilidade está definidaView.GONE
? Se você definir sua visibilidade para algo além dissoView.VISIBLE
, oView
item não será visível. Eu não entendo o que você está perguntando. Se você deseja que sua animação seja visível, não defina a visibilidade deView
paraView.GONE
.onAnimationEnd
é chamado todas as vezes para uma animação de várias ocorrências, o que significa queonAnimationEnd
também é chamado quando a exibição é exibida, o que define sua visibilidade como Gone etc.Eu estava tendo problemas para entender e aplicar a resposta aceita. Eu precisava de um pouco mais de contexto. Agora que eu descobri, aqui está um exemplo completo:
MainActivity.java
activity_mail.xml
Notas
INVISIBLE
.INVISIBLE
. Se você não estiver animando completamente fora da tela, poderá adicionar uma animação alfa e definir a visibilidade com umAnimatorListenerAdapter
.fonte
.setVisibility(View.INVISIBLE);
a função deslizar para cima não funcionará como o esperado visualmente.Translate Animation
move a vista. Se você deseja animar a visualização como se elaScaleAnimation anim = new ScaleAnimation(1, 1, 0, 1)
Agora, as animações de alteração de visibilidade devem ser feitas através das
Transition API
quais estão disponíveis no pacote de suporte (androidx). Basta chamar o método TransitionManager.beginDelayedTransition com transição de slides e alterar a visibilidade da exibição.activity_main.xml
Verifique esta resposta com outros exemplos de transição padrão e personalizados.
fonte
minSdkVersion 21
androidx
pacote. Funciona bem em pré 21 API.Solução mais fácil: definir
android:animateLayoutChanges="true"
no contêiner com suas opiniões.Para colocar em algum contexto: Se você tiver um layout como abaixo, todas as alterações de visibilidade nas visualizações neste contêiner serão animadas automaticamente.
Você pode encontrar mais detalhes sobre isso em Animating Changes Changes - Desenvolvedor Android
fonte
Você pode iniciar o correto
Animation
quando a visibilidade dasLinearLayout
alterações for criar uma nova subclasseLinearLayout
e substituirsetVisibility()
para iniciar oAnimations
. Considere algo como isto:fonte
View
responsável por suas próprias animações, que NUNCA é o que você deseja. Imagine que você deseja animar oView
diferente em outra parte do seu aplicativo. O que fazes, então? Adicionar um sinalizador para não animar automaticamente a visibilidade? SubclassarView
e substituirsetVisibility()
para remover a animação? Ou ainda pior implementarsetVisibility()
com outra animação? Apenas fica cada vez mais feio a partir daí. Não use esta "solução".Kotlin
Baseado em Suragch 's resposta , aqui é uma maneira elegante usando Ver extensão:
E então, onde você quiser usá-lo, você só precisa
myView.slideUp()
oumyView.slideDown()
fonte
fonte
setAlpha
?você pode deslizar para cima e para baixo em qualquer visualização ou layout usando o código abaixo no aplicativo Android
fonte
Use esta classe:
fonte
Usando ObjectAnimator
fonte
0.toFloat()
também pode ser apenas0f
Eu tinha uma caixa de canto onde a altura da minha vista ainda era
zero
tão ...fonte
Aqui está a minha solução. Basta obter uma referência à sua visualização e chamar este método:
Não há necessidade de fazer mais nada =)
fonte
Resposta de Suragch em Kotlin. Isso funcionou para mim.
}
fonte
Você pode usar as três linhas de código simples para mostrar a animação ...
fonte
Com as extensões Kotlin, você pode usar isto:
Exemplo para a extensão:
fonte
Uma das maneiras simples:
fonte