Un moyen facile de faire PASSÉ le travail d'animation

J'ai une recherche personnalisée du panneau, qui est une partie de la page principale. La plupart du temps, le panneau est caché. Je voudrais ajouter apparaissant/disparaissant de l'animation dans le panneau. Voici la présentation simplifiée extrait:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <RelativeLayout
        android:id="@+id/layoutSearch"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:visibility="gone" >
        <EditText
            android:id="@+id/editSearch"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <<Other inner views to be animated>>
    </RelativeLayout>
    <<Other views, which should not be affected by the animation>>
</LinearLayout>

Essayez 1: j'ai ajouté de l'animation de ressources et de les attacher à l' @id/layoutSearch avec cette ligne dans le fichier XML:

android:layoutAnimation="@anim/search_in_layout"

anim/search_in.xml:

<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/overshoot_interpolator"
    android:fromYDelta="-100%p"
    android:toYDelta="0"
    android:duration="@android:integer/config_longAnimTime" />

anim/search_in_layout.xml:

<layoutAnimation
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:animation="@anim/search_in" />

L'animation fonctionne bien, mais seulement pour le panneau apparaissant. Le panneau disparaît en un instant sans animation quand je le cacher avec:

mSearchLayout.setVisibility(View.GONE);

Essayer 2: je suppose que la solution ci-dessus ne fonctionne pas que de l'animation des paramètres de destination selon l'état de la position du panneau. OK, j'ai créé deux plus de l'animation des ressources: anim/search_out.xml et anim/search_out_layout.xml. Les seules différences sont échangés "fromYDelta" et "toYDelta" les valeurs et les mises à jour "android:animation" de la valeur. Puis-je charger les ressources dans le code et les mettre à la @id/layoutSearch comme ceci:

LayoutAnimationController controller =
    AnimationUtils.loadLayoutAnimation(this, R.anim.search_out_layout);
mSearchLayout.setLayoutAnimation(controller);

"En dehors" de l'animation déclenchée sur l'appel de setLayoutAnimation(). Après l'animation du panneau de recherche retourne à la position d'origine sur l'écran, il a avant de "sortir" de l'animation. Si j'essaie d'appeler mSearchLayout.setVisibility(View.DISPARU), juste après le setLayoutAnimation(), je ne vois pas l'animation, le groupe disparaît à la fois.

Essayez 3: je suppose que j'ai besoin de créer de l'animation dans le code, puis de définir un écouteur. Alors que je devrais l'appeler mSearchLayout.setVisibility(View.DISPARU) dans le onAnimationEnd() gestionnaire de masquer le panneau après l'animation joué. Je n'ai pas essayé encore. Je pense que c'est plus compliqué.

Je suppose que j'ai manqué quelque chose d'important. Est-il un moyen de mettre en œuvre ALLÉ animation un peu trop facile?

OriginalL'auteur borisstr | 2011-04-08