package com.wakehao.transitionexample; import android.animation.Animator; import android.graphics.Color; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.transition.Slide; import android.transition.Transition; import android.transition.TransitionInflater; import android.view.Gravity; import android.view.View; import android.view.ViewAnimationUtils; import android.widget.ImageView; import android.widget.LinearLayout; import de.hdodenhof.circleimageview.CircleImageView; public class WithSharedElementTransitionsActivity extends AppCompatActivity { private View image_bg; private Toolbar toolbar; private CircleImageView icon_gg; private FloatingActionButton fab; private LinearLayout liney_bottom; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_with_shared_element_transitions); initView(); initToolbar(); getWindow().setEnterTransition(initContentEnterTransition()); getWindow().setSharedElementEnterTransition(initSharedElementEnterTransition()); getWindow().setReturnTransition(TransitionInflater.from(this).inflateTransition(R.transition.return_slide)); } private Transition initSharedElementEnterTransition() { final Transition sharedTransition=TransitionInflater.from(this).inflateTransition(R.transition.changebounds_with_arcmotion); sharedTransition.addListener(new Transition.TransitionListener() { @Override public void onTransitionStart(Transition transition) { Animator circularReveal = ViewAnimationUtils.createCircularReveal(image_bg, image_bg.getWidth() / 2, image_bg.getHeight() / 2 , icon_gg.getWidth()/2, Math.max(image_bg.getWidth(), image_bg.getHeight())); image_bg.setBackgroundColor(Color.BLACK); circularReveal.setDuration(600); circularReveal.start(); } @Override public void onTransitionEnd(Transition transition) { sharedTransition.removeListener(this); } @Override public void onTransitionCancel(Transition transition) { } @Override public void onTransitionPause(Transition transition) { } @Override public void onTransitionResume(Transition transition) { } }); return sharedTransition; } private Transition initContentEnterTransition() { Transition transition= TransitionInflater.from(this).inflateTransition(R.transition.slide_and_fade); transition.addListener(new Transition.TransitionListener() { @Override public void onTransitionStart(Transition transition) { } @Override public void onTransitionEnd(Transition transition) { transition.removeListener(this); // liney_bottom.setTransitionGroup(true); fab.animate() .scaleY(1) .scaleX(1) .start(); } @Override public void onTransitionCancel(Transition transition) { } @Override public void onTransitionPause(Transition transition) { } @Override public void onTransitionResume(Transition transition) { } }); return transition; } private void initView() { fab = (FloatingActionButton) findViewById(R.id.fab); image_bg= findViewById(R.id.image_bg); icon_gg= (CircleImageView) findViewById(R.id.icon_gg); liney_bottom = (LinearLayout) findViewById(R.id.liney_bottom); } @Override public boolean onSupportNavigateUp() { onBackPressed(); return true; } private void initToolbar() { toolbar = (Toolbar) findViewById(R.id.toolBar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowTitleEnabled(false); } @Override public void onBackPressed() { if(!liney_bottom.isTransitionGroup())liney_bottom.setTransitionGroup(true); super.onBackPressed(); } }