Android LinearLayout Visibility problemas com animação
-
22-09-2019 - |
Pergunta
Estou tentando trocar duas linhas lineares, definindo suas propriedades de visibilidade para "visível" e "Gone", respectivamente. Também estou usando uma animação enquanto os layouts estão sendo trocados. A animação é concluída com êxito e vejo o layout correto. No entanto, o layout anterior que tem sua propriedade de visibilidade definida como "Gone" ainda recebe cliques, mesmo que não seja visível. Ao mesmo tempo, o layout que é "visível" recebe cliques apenas quando clicado na área onde o layout "Gone" não é clicável. Também estou chamando o método RequestFocus no layout "visível". Mas isso não ajuda.
Além disso, se eu pular a parte da animação e apenas definir as propriedades de visibilidade, tudo funciona corretamente.
O que estou perdendo aqui?
Solução
Se você estiver animando widgets, precisará fazer alterações no layout para obter os resultados "Stick". Apenas usando o fillAfter
as coisas vão lhe dar alguns dos efeitos que você vê - está desenhando -os no novo local, mas eles não são realmente dentro o novo local.
Então, eu começaria desligando qualquer fill*
Configurações (por exemplo, fillAfter
) em sua animação. Veja como sua animação se comporta então. Provavelmente, agora ele representa o que os cliques dizem.
Em seguida, configure um AnimationListener
Para obter o controle quando a animação termina e, nesse ponto, faça alterações reais nos widgets e seus contêineres para afetar suas posições finais.
Aqui está um projeto de amostra Isso demonstra o que quero dizer, embora de uma maneira excessivamente complicada, já que estou animando uma visão personalizada, em vez de um widget pronto para uso.