J'essaie d'implémenter une transition dans mon application, mais overridePendingTransition (anim, anim) ne fonctionne pas correctement.
Mon code est simple et standard:
Démarrage de l'intention et appel à overridePendingTransition:
Intent newsIntent = new Intent(ZPFActivity.this, More2013Activity.class);
startActivity(newsIntent);
overridePendingTransition(R.anim.slide_no_move, R.anim.fade);
finish();
L'animation de démarrage ne doit rien faire, seule l'animation de fondu doit avoir un effet.
slide_no_move XML:
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:fromYDelta="0%p" Android:toYDelta="0%p"
Android:duration="500"/>
fondu XML:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:fillAfter="true">
<alpha Android:fromAlpha="1.0"
Android:toAlpha="0.0"
Android:duration="500"/>
</set>
EDIT: J'ai oublié de mentionner le fait que les activités que je commence toutes étendent l'activité "principale". Serait-ce le fait qui cause le problème?
Je sais que c'est un ancien billet, mais je l'ai vu et je me suis senti obligé d'y répondre:
C'était un problème très obscur, et c'était lié à un appareil. J'utilisais un iOcean X7 à l'époque. Plus tard, j'ai découvert que ce téléphone n'était pas capable de lire des animations. Pour certains, il n'a pas joué d'animation sur AUCUNE application.
Essayez d'appeler l'attenteTransition après avoir appelé finish()
, comme ceci:
Intent newsIntent = new Intent(ZPFActivity.this, More2013Activity.class);
startActivity(newsIntent);
finish();
overridePendingTransition(R.anim.slide_no_move, R.anim.fade);
Si vous activez le mode de débogage usb, il peut désactiver les effets de transition. Entrez les options pour les développeurs (où vous avez activé le mode de débogage), recherchez la section Interface de l'utilisateur et vérifiez si les animations sont désactivées sur l'échelle de transition de l'animation. Si tel est le cas, réglez-le sur .5x. Terminé!
Essayez d'utiliser ceci:
public class More2013Activity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim. slide_no_move, R.anim.fade_in);
setContentView(R.layout.more_activity)
}
}
au lieu de votre code.
Si vous utilisez la version Android> = 21, définissez le Android: windowActivityTransitions attribut sur true dans le fichier style.xml du dossier values-v21 comme suit.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="Android:windowActivityTransitions">true</item>
</style>
Allez dans votre appareil Options de développement, Il existe trois autres options: échelle d'animation de fenêtres, échelle d'animation de transition et échelle de durée d'animation. Assurez-vous que tout ne soit pas éteint. C'est l'une des raisons pour lesquelles je suis tombé sur.
à partir de 6.0, utilisez cette méthode pour remplacer l'animation personnalisée
ActivityOptions options = ActivityOptions.makeCustomAnimation(context,R.anim.slide_from_right, R.anim.slide_to_left);
Intent intent = new Intent(context, WhichActivityToOpen.class);
context.startActivity(intent, options.toBundle());
Vous utilisez probablement (overridePendingTransition (anim, anim)) dans votre méthode onPause () aussi.
1: Définir un booléen dans votre classe avant la méthode onCreate ()
private boolean trans=true;
@Override
protected void onCreate(Bundle savedInstanceState) {...
2: Mettez trans = false; lorsque vous utilisez startActivity
Intent newsIntent = newIntent(ZPFActivity.this,More2013Activity.class);
trans = false;
startActivity(newsIntent);
overridePendingTransition(R.anim.slide_no_move, R.anim.fade);
3: Et dans votre méthode onPause () faites ceci
@Override
protected void onPause() {
if (trans) {
overridePendingTransition(R.anim.slide_no_move, R.anim.fade);
}
super.onPause();
}
4: Et dans votre méthode onResume (), faites ceci
@Override
protected void onResume() {
super.onResume();
trans=true;
}
veuillez vérifier que votre appareil est en mode d'économie d'énergie. en mode économie d'énergie, les animations ne fonctionneront pas.