Il peut être fait dans Android Lollipop en utilisant Activity Transition Animations, en utilisant la même mise en page de la barre d'action dans toutes les activités et la définition de la barre d'action pour être un élément commun de la manière suivante:
Tout d'abord, assurez-vous permettre des transitions d'activité dans v21/styles.xml et utiliser le thème NoActionBar afin que vous puissiez créer une barre d'action personnalisée:
<style name="AppTheme.NoActionBar">
...
<!-- enable window content transitions -->
<item name="android:windowActivityTransitions">true</item>
<!-- specify enter and exit transitions -->
<item name="android:windowEnterTransition">@android:transition/slide_right</item>
<item name="android:windowExitTransition">@android:transition/slide_left</item>
<!-- specify shared element transitions -->
<item name="android:windowSharedElementEnterTransition">@transition/app_bar_transform</item>
<item name="android:windowSharedElementExitTransition">@transition/app_bar_transform</item>
</style>
Définissez ensuite votre app_bar_transform.xml être changeBounds comme ceci:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet>
<changeBounds/>
</transitionSet>
Étant donné que la disposition de la barre d'application est la même dans toutes les activités, aucune transformation ne se produit.
Dans votre mesure AppBarLayout définir l'androïde: attribut transitionName:
<android.support.design.widget.AppBarLayout
...
android:id="@+id/app_bar"
android:transitionName="appBar"
...
</android.support.design.widget.AppBarLayout>
Utilisez cette disposition pour la barre d'action dans toutes vos activités:
<include layout="@layout/app_bar"/>
Ensuite, lorsque vous voulez démarrer la activité suivante définir la disposition de la barre d'application en tant que un élément partagé comme celui-ci:
final Intent intent = new Intent(getApplicationContext(), MainActivity.class);
ActivityOptions options = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
AppBarLayout appBar = (AppBarLayout) findViewById(R.id.app_bar);
options = ActivityOptions.makeSceneTransitionAnimation(WelcomeActivity.this, appBar, "appBar");
}
ActivityCompat.startActivity(WelcomeActivity.this, intent, options != null ? options.toBundle() : null);
Cela permet de maintenir la barre d'applications en place lors de la transition entre les activités.
duplication possible de [Transition entre les activités sans déplacer la barre d'action] (http://stackoverflow.com/questions/11904758/transitioning-between-activities-with-moving-actionbar) –