Je commence une activité et préfère avoir un fondu alpha pour startActivity()
, et un fondu sortant pour le finish()
. Comment puis-je aller dans le SDK Android?Puis-je modifier l'animation de transition Android startActivity()?
Répondre
Dans la même déclaration dans laquelle vous exécutez finish(), exécutez votre animation aussi. Ensuite, dans la nouvelle activité, exécutez une autre animation. Voir ce code:
fadein.xml
<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"/> //Time in milliseconds
</set>
Dans votre arrivée classe
private void finishTask() {
if(blabbla==blablabla){
finish();
runFadeAnimation();
}
}
private void runFadeInAnimation() {
Animation a = AnimationUtils.loadAnimation(this, R.anim.fadein);
a.reset();
LinearLayout ll = (LinearLayout) findViewById(R.id.yourviewhere);
ll.clearAnimation();
ll.startAnimation(a);
}
fadeout.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<alpha android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="500"/>
</set>
Dans votre nouvelle classe d'activité vous créez un similaire méthode comme le runFadeAnimation que j'ai écrit et ensuite vous l'exécutez dans onCreate et n'oubliez pas de changer l'id de ressources pour fadeou t.
Voir les thèmes sur Android: http://developer.android.com/guide/topics/ui/themes.html.
Sous themes.xml, il devrait y avoir android:windowAnimationStyle
où vous pouvez voir la déclaration du style dans styles.xml.
mise en œuvre Exemple:
<style name="AppTheme" parent="...">
...
<item name="android:windowAnimationStyle">@style/WindowAnimationStyle</item>
</style>
<style name="WindowAnimationStyle">
<item name="android:windowEnterAnimation">@android:anim/fade_in</item>
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
</style>
http://www.maxters.net/2011/05/android- animation-between-activity-switching-using-theme/ –
Mettre à jour les liens pour themes.xml et styles.xml https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res /res/values/themes.xml https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/styles.xml – vovahost
A partir du niveau de l'API 5, vous pouvez appeler overridePendingTransition immédiatement pour spécifier une animation de transition explicite:
startActivity();
overridePendingTransition(R.anim.hold, R.anim.fade_in);
ou
finish();
overridePendingTransition(R.anim.hold, R.anim.fade_out);
Ajouter quelque chose comme: \t @Override \t public void onBackPressed() { \t \t super.onBackPressed(); overridePendingTransition (R.anim.hold, R.anim.fade_out); \t} pour ajouter des animations de retour. – RightHandedMonkey
devrait-il fonctionner avec 'startActivityForResult()'? –
Cela devrait être la meilleure réponse propre. – cy198706
Vous pouvez simplement créer un contexte et faire quelque chose comme ci-dessous: -
private Context context = this;
Et votre animation: -
((Activity) context).overridePendingTransition(R.anim.abc_slide_in_bottom,R.anim.abc_slide_out_bottom);
Vous pouvez utiliser l'animation de votre choix.
Utilisez overridePendingTransition
startActivity();
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
fadein.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500" />
</set>
fadeout.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/anticipate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" />
</set>
Vous êtes magnifique merci. Ça fonctionne bien – Sam
Pour fadeIn et fadeOut, ajoutez seulement après ce super.onCreate (savedInstanceState) dans votre nouvelle classe d'activité. Vous n'avez pas besoin de créer autre chose (pas de XML, pas de dossier anim, pas de fonction supplémentaire).
overridePendingTransition(R.anim.abc_fade_in,R.anim.abc_fade_out);
http: // stackoverflow.com/questions/8319465/comment-changer-toutes-les-transitions-d'activité-à-une-application-android-unique/8319701 # 8319701 –