package com.lgvalle.material_animations; import android.databinding.DataBindingUtil; import android.os.Bundle; import android.transition.ChangeBounds; import android.transition.Scene; import android.transition.Transition; import android.transition.TransitionInflater; import android.transition.TransitionManager; import android.view.View; import android.view.ViewGroup; import com.lgvalle.material_animations.databinding.ActivityAnimations2Binding; import java.util.ArrayList; import java.util.List; public class AnimationsActivity2 extends BaseDetailActivity { private static final int DELAY = 100; private Scene scene0; private Scene scene1; private Scene scene2; private Scene scene3; private Scene scene4; private final List<View> viewsToAnimate = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); bindData(); setupLayout(); setupToolbar(); setupWindowAnimations(); } private void bindData() { ActivityAnimations2Binding binding = DataBindingUtil.setContentView( this, R.layout.activity_animations2); Sample sample = (Sample) getIntent().getExtras().getSerializable(EXTRA_SAMPLE); binding.setAnimationsSample(sample); } private void setupWindowAnimations() { getWindow().setEnterTransition(TransitionInflater.from(this).inflateTransition( R.transition.slide_from_bottom)); getWindow().getEnterTransition().addListener(new Transition.TransitionListener() { @Override public void onTransitionStart(Transition transition) { } @Override public void onTransitionCancel(Transition transition) { } @Override public void onTransitionPause(Transition transition) { } @Override public void onTransitionResume(Transition transition) { } @Override public void onTransitionEnd(Transition transition) { getWindow().getEnterTransition().removeListener(this); TransitionManager.go(scene0); } }); } private void setupLayout() { final ViewGroup activityRoot = (ViewGroup) findViewById(R.id.buttons_group); ViewGroup sceneRoot = (ViewGroup) findViewById(R.id.scene_root); scene0 = Scene.getSceneForLayout(sceneRoot, R.layout.activity_animations_scene0, this); scene0.setEnterAction(new Runnable() { @Override public void run() { for (int i = 0; i < viewsToAnimate.size(); i++) { View child = viewsToAnimate.get(i); child.animate() .setStartDelay(i * DELAY) .scaleX(1) .scaleY(1); } } }); scene0.setExitAction(new Runnable() { @Override public void run() { TransitionManager.beginDelayedTransition(activityRoot); View title = scene0.getSceneRoot().findViewById(R.id.scene0_title); title.setScaleX(0); title.setScaleY(0); } }); scene1 = Scene.getSceneForLayout(sceneRoot, R.layout.activity_animations_scene1, this); scene2 = Scene.getSceneForLayout(sceneRoot, R.layout.activity_animations_scene2, this); scene3 = Scene.getSceneForLayout(sceneRoot, R.layout.activity_animations_scene3, this); scene4 = Scene.getSceneForLayout(sceneRoot, R.layout.activity_animations_scene4, this); View button1 = findViewById(R.id.sample3_button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TransitionManager.go(scene1, new ChangeBounds()); } }); View button2 = findViewById(R.id.sample3_button2); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TransitionManager.go(scene2, TransitionInflater.from(AnimationsActivity2.this). inflateTransition(R.transition.slide_and_changebounds)); } }); View button3 = findViewById(R.id.sample3_button3); button3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TransitionManager.go(scene3, TransitionInflater.from(AnimationsActivity2.this). inflateTransition(R.transition.slide_and_changebounds_sequential)); } }); View button4 = findViewById(R.id.sample3_button4); button4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TransitionManager.go(scene4, TransitionInflater.from(AnimationsActivity2.this). inflateTransition(R.transition.slide_and_changebounds_sequential_with_interpolators)); } }); viewsToAnimate.add(button1); viewsToAnimate.add(button2); viewsToAnimate.add(button3); viewsToAnimate.add(button4); } }