Animer vue à glisser sur un autre point de vue, en poussant des vues au-dessous de la route
J'ai une liste de boutons. Lorsque j'appuie sur un bouton, un point de Vue devrait glisser dans un mouvement vers le bas de la touche, comme ceci:
Début:
À mi-chemin:
Fin:
Comment pourrais-je aller à ce sujet? Le point de Vue qui devrait coulissant est plus grand que le bouton, donc tout d'abord de cacher la Vue derrière le bouton et en le faisant glisser vers le bas provoque l'Affichage d'être visible au-dessus du bouton. Cela ne devrait pas arriver.
Des idées ou des exemples sur la manière d'aborder ce?
- Quel est votre API de gamme?
- Ou, d'ailleurs, n'est-ce pas quelque chose d'un ExpandableListView impossible à atteindre? techdroid.kbeanie.com/2010/09/...
- Je suis pour le développement de minimum 8. Je vais regarder dans extensible listview, merci pour ça. J'aimerais voir une solution personnalisée pour cela, cependant, parce que je veux l'utiliser dans d'autres environnements où j'ai seulement 1 bandeau ainsi.
- Le extensible liste ne semble pas offrir une telle animation. Si je suis en utilisant minSdkVersion de 8, ce n'est pas un énorme problème si l'animation ne fonctionne pas sur la version du sdk inférieur, disons, 11.
- je veut juste se poser la question .... animation fluide est obligatoire ou pas...ou tu veux afficher/masquer l'effet
- J'ai besoin de l'animation fluide en effet, cependant, il n'est pas obligatoire dans l'API < 11.
- La liste des
Buttons
représente en fait uneListView
avecButtons
? - Pourrait être, n'a pas d'importance.
- Je ne suis pas sûr à 100% sur la dernière image. Mais si vous voulez, et de développer l'animation, vous pouvez essayer ceci.Si c'est ok, je vais ajouter la réponse.
Vous devez vous connecter pour publier un commentaire.
Je crois que l'approche la plus simple est d'étendre
Animation
classe et substituerapplyTransformation()
pour changer la vue de la hauteur comme suit:À utiliser, il suffit de mettre votre
onclick()
comme suit:Ce qui concerne.
mLayoutParams.Height = mEndHeight
Merci!view2
apparaît brusquement ie. sans le glissement de l'animation, mais il disparaît avec une glisse parfaite de l'animation. Comment puis-je appliquer l'effet de glissement deEXPAND
ainsi?View.GONE
et tente de les animer à l'expansion de l'état de l'animation est rapide et pas lisse. Remplacement demEndHeight = mView.getHeight();
avecmView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); mEndHeight = mView.getMeasuredHeight();
créé une animation fluide pour moi. Utilisé quelques conseils de la part: [lien] (stackoverflow.com/a/38745247/1652110). Espérons que ça aide!Utiliser quelque chose comme:
applyTransformation
méthode est appelée toutefois. Lorsque l'animation est réalisée la vue s'affiche ('sauté' dans la vue). Aussi, le point de vue a une hauteur dematch_parent
, au lieu de150dp
comme défini dans le fichier xml.Ici est simple exemple de la main-d'animation, qui fournissent ce que vous voulez. Il travaille en application de test, mais je ne suis pas sûr qu'il n'y a pas de bugs:
Peut-être vous pouvez définir la hauteur à 0 et augmenter progressivement la hauteur. Mais ensuite, vous aurez le problème que vous avez pour être sûr de votre texte est aligné en bas de la vue. Et aussi de savoir ce que la hauteur maximale de la vue doit être.
Je le ferais comme ça. D'abord la mise en page de l'ensemble du panneau réductible composant: (pseudo xml)
Ce qui devrait garantir que le contenu est toujours en dessous de la poignée.
Puis, quand vous avez besoin de l'effondrement:
utiliser un glissement de la liste de l'adaptateur tellement plus facile que de déconner avec des animations
https://github.com/tjerkw/Android-SlideExpandableListView
Simplement passer
android:animateLayoutChanges
à LinearLayout qui détient tous les points de vue, vous permettra d'atteindre le résultat souhaité.