web-dev-qa-db-fra.com

faire glisser l'animation ne fonctionne pas sur le bouton arrière?

J'utilise des animations pour entrer ou sortir de l'activité. Entrer dans une animation fonctionne bien, mais quitter une animation ne fonctionne pas bien. Je commence l'animation de sortie lorsque j'appuie sur le bouton Précédent. Que se passe-t-il si vous commencez par entrer dans l'animation pour l'activité en cours, puis affichez la dernière activité, ce que je veux une animation de sortie simple en appuyant sur le bouton Précédent?.

Slide_out.xml

    <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="0%p"
    Android:toXDelta="-100%p" >

</translate>

Slide_in.xml

    <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="100%p"
    Android:toXDelta="0%p" >

</translate>

Activé le bouton de retour de la barre d'action enfoncé

public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    switch (item.getItemId()) {
    case R.id.home:

        finish();
        overridePendingTransition(R.anim.slide_out, R.anim.slide_in);
        return true;


    default:
        break;
    }

    return super.onOptionsItemSelected(item);

}
12
Tarun Sharma

J'ai utilisé Slide_in.xml

    <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="100%"
    Android:toXDelta="0%" >

</translate>

slide_out.xml

    <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="0%"
    Android:toXDelta="-100%" >

</translate>

slide_enter.xml

  <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="-100%"
    Android:toXDelta="0%" >

</translate>

slide_exit.xml

    <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="0%"
    Android:toXDelta="100%" >

</translate>

Code

        Intent i=new Intent(Authentication.this,Login.class);
        startActivity(i);
        overridePendingTransition(R.anim.slide_in, R.anim.slide_out);

Au précédent 

         finish();
         overridePendingTransition(R.anim.slide_enter, R.anim.slide_exit);
6
Tarun Sharma

Commencez par créer une animation supplémentaire, à savoir Nothing.xml, dans votre dossier anim

rien.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="0%"
    Android:toXDelta="0%" >

</translate>

voici votre slide_in.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="-100%"
    Android:toXDelta="0%" >

</translate>

et slide_out.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:duration="@Android:integer/config_longAnimTime"
    Android:fromXDelta="0%"
    Android:toXDelta="100%" >

</translate>

Appelez maintenant votre NewActivity comme ceci

startActivity(new Intent(CurrentActivity.this, NewActivity.class));
overridePendingTransition(R.anim.slide_in, R.anim.nothing);

puis sur votre bouton retour cliquez dessus

finish();
overridePendingTransition(R.anim.nothing, R.anim.slide_out);
18
Mukesh Rana

Ajouter une animation dans onBackPressed, il affichera l'animation en cliquant sur le bouton Précédent.

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.slide_in, R.anim.slide_out);   
}
4
Remees M Syde

J'ai fait quelque chose de similaire et cela fonctionne bien, vous pouvez modifier animate () avec startAnimation (your_xml), vous devrez également rendre l'activité transparente en arrière-plan:

<item name="Android:windowBackground">@Android:color/transparent</item>

Cette activité glissera vers le bas et l’activité principale sera visible au moment du glissement en raison de l’arrière-plan transparent. EDIT - avec le bouton Précédent de la barre d’outils:

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            mainlinear.animate()
                    .translationY(ScUtils.getScreenHeight(getApplicationContext()))
                    .setDuration(210)
                    .setInterpolator(new AccelerateInterpolator())
                    .setListener(new AnimatorListenerAdapter() {
                        @Override
                        public void onAnimationEnd(Animator animation) {
                            ThemeActivity.super.onBackPressed();
                            overridePendingTransition(0, 0);
                           }
                          }).start();
                        }
                    });
0
Djordje Tankosic

Pour l'activité, entrez animation, utilisez overridePendingTransition(R.anim.slide_out, R.anim.slide_in); dans la fonction onCreate(...).

Pour l’animation de sortie, passez le même appel dans onPause(...).

0
Rakshith Shetty

J'avais un bouton Précédent/Accueil sur ma barre d'action qui ne relevait pas l'animation de la diapositive en remplaçant onBackPressed ou finish. J'ai donc dû ajouter cet extrait de ici . Si vous utilisez les mêmes slide_enter et slide_exit que ci-dessus:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    switch(id) {
        // back button
        case Android.R.id.home:
            finish();
            overridePendingTransition(R.anim.slide_enter, R.anim.slide_exit);
            return true;
    }

    return super.onOptionsItemSelected(item);
}

Au cas où quelqu'un le jugerait utile.

0
ab15