Gardez Vue animée au final de l'Animation de la Position

Donc je suis à l'animation d'une vue à l'aide de l'animation:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >

    <translate
        android:duration="1000"
        android:fromYDelta="0%"
        android:toYDelta="-75%" />

</set>

Il ne visuellement ce que je veux, mais j'ai aussi j'ai envie de geler le résultat de cette animation. Comme j'ai besoin d'une certaine manière à obtenir résultant paramètres de mise en page (ou autre chose?) après l'animation et mis à disposition. Assumer la mise en page Y-coord est le passage de 0 à 100, mais je ne sais pas vraiment ce qui était de départ coords et quels sont résultant coords. J'ai besoin d'obtenir résultant coords et mis à la disposition cuz si ne pas faire de mise en page pour retourner à sa position initiale après l'animation, mais j'ai besoin de le faire rester dans la nouvelle position au lieu de retourner en arrière. J'ai aussi besoin de 2.3.x compatible avec la solution.

Mise à JOUR de 1

J'ai aussi essayé NineOldAndroids:

ObjectAnimator.ofFloat(rootWrapper, "translationY", -rootWrapper.getHeight()*75/100).start();

cette anime la vue et afficher les séjours à l'animation de la position - c'est exactement ce que je veux atteindre.
Cependant, tous les contrôles de séjours à leurs positions pratiquement. Même tu mise en page n'est visible que par 25% de sa partie inférieure et 75% de repos écran est vide si je tape qui vide la zone de l'écran puis sur le bouton s (qui était là b4 animation) onClick déclenchée. La même chose arrive avec xml-animtaions si la valeur

animation.setFillAfter(true); 

Comment faire pour résoudre ce problème? Toutes les commandes de a à se déplacer avec de la vue.

Mise à JOUR 2

Le code:

    public void showAbout(){

        final Animation animShow = AnimationUtils.loadAnimation(this, R.anim.about_in_from_bottom);
        animShow.setFillAfter(true); 

        //ObjectAnimator.ofFloat(rootWrapper, "translationY", -rootWrapper.getHeight()*75/100).start();

        animShow.setAnimationListener(new AnimationListener() {

            @Override
            public void onAnimationStart(Animation animation) {
            }

            @Override
            public void onAnimationRepeat(Animation animation) {}

            @Override
            public void onAnimationEnd(Animation animation) {
                LinearLayout.LayoutParams rootlp = (LinearLayout.LayoutParams) rootWrapper.getLayoutParams();
                Log.i(this,"rootlp: h: "+rootlp.topMargin+ " /w: "+rootlp.bottomMargin);
                rootlp.topMargin = -rootlp.height*75/100;
                rootWrapper.setLayoutParams(rootlp);
            }
        });

        rootWrapper.startAnimation(animShow);
    }

J'ai eu le problème - rootlp.height renvoie 0 car son comme MATCH_PARENT ou comme. Il l'habitude de retourner le RÉEL de pixels, mais une valeur qui représente une constante! Donc, il semble que j'ai 2 jouer avec .getViewTreeObserver().addOnGlobalLayoutListener.

Ok, j'ai eu la réelle hauteur de rootWrapper via getViewTreeObserver(). Et maintenant, à l'aide de la formule rootlp.topMargin = -rootlp.height*75/100; je reçois encore plus de questions.
1) Après l'animation de Vue se déplace de haut en plus (en raison de réglage LP).

2) les Contrôles qui ont animé la Vue contient les boutons qui doit se déplacer avec la Vue parent) reste à leurs positions presque (ils sont invisibles mais cliquable)! Visuellement ces contrôles sont déplacés avec la Vue animée, et je ne peux pas l'atteindre (il sort de l'écran). Mais si je tape la zone où ils étaient avant l'animation correspondante onClick() déclenche! Quel plaisir!

Mise à JOUR 3

Enfin, j'avais atteint mon objectif! Le problème était avec le déplacement de la Vue de l'enfant conteneurs. Je pensais que si je me déplace pour certains alors tous ses vues enfant sont également en mouvement. Mais ce n'est pas le cas, et je était avait pour déplacer les vues enfant manuellement après l'animation complète de fixer fantôme boutons.

  • Pourquoi essayez-vous d'obtenir l'LayoutParams après l'animation? Voulez-vous le point de Vue de séjour à l'animation de la position?
  • ouais, Exactement ce que je veux 2do.
  • Eh bien voir mon anser et l'utilisation setFillAfter();
InformationsquelleAutor Stan | 2013-08-16